*********** ÐоÑлеÑловие *********** ÐоÑÐµÐ¼Ñ Python? ============== ÐÑеимÑÑеÑÑва Python ------------------- ÐÑновной ÑзÑк ÑеализаÑии Sage â ÑÑо Python (Ñм. [Py]_), однако код, коÑоÑÑй должен обÑабаÑÑваÑÑÑÑ Ð±ÑÑÑÑо, напиÑан на компилиÑÑемом ÑзÑке. У Python еÑÑÑ ÑÑд пÑеимÑÑеÑÑв: - **Ð¡Ð¾Ñ Ñанение обÑекÑов** ÑиÑоко иÑполÑзÑеÑÑÑ Ð² Python. Ð Python пÑиÑÑÑÑÑвÑÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑжка ÑÐ¾Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ (поÑÑи) лÑбÑÑ Ð¾Ð±ÑекÑов на диÑк или в Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ . - ÐамеÑаÑелÑÐ½Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑжка **докÑменÑаÑии** ÑÑнкÑий и пакеÑов в иÑÑ Ð¾Ð´Ð½Ð¾Ð¼ коде, вклÑÑÐ°Ñ Ð°Ð²ÑомаÑиÑеÑкий доÑÑÑп к докÑменÑаÑии и авÑомаÑиÑеÑкое ÑеÑÑиÑование вÑÐµÑ Ð¿ÑимеÑов. ÐÑимеÑÑ Ð¿ÑовеÑÑÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки на ÑегÑлÑÑной оÑнове и Ð¸Ñ Ð¿ÑавилÑÐ½Ð°Ñ ÑабоÑоÑпоÑобноÑÑÑ Ð³Ð°ÑанÑиÑована. - **УпÑавление памÑÑÑÑ**: Python Ð¸Ð¼ÐµÐµÑ Ð¿ÑодÑманнÑй и ÑÑабилÑнÑй Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑ Ð¿Ð°Ð¼ÑÑи и ÑбоÑÑик мÑÑоÑа, коÑоÑÑе иÑпÑавно ÑабоÑаÑÑ Ñ ÑиклиÑеÑкими ÑÑÑлками и позволÑÑÑ Ð¸ÑполÑзоваÑÑ Ð»Ð¾ÐºÐ°Ð»ÑнÑе пеÑеменнÑе в ÑÐ°Ð¹Ð»Ð°Ñ . - Python Ð¸Ð¼ÐµÐµÑ **множеÑÑво пакеÑов**, доÑÑÑпнÑÑ Ñже ÑейÑаÑ, коÑоÑÑе могÑÑ Ð±ÑÑÑ Ð¸Ð½ÑеÑеÑÐ½Ñ Ð¿Ð¾Ð»ÑзоваÑелÑм Sage: ÑиÑленнÑй анализ и Ð»Ð¸Ð½ÐµÐ¹Ð½Ð°Ñ Ð°Ð»Ð³ÐµÐ±Ñа, 2D и 3D визÑализаÑиÑ, ÑеÑÑ (Ð´Ð»Ñ ÑаÑпÑеделеннÑÑ Ð²ÑÑиÑлений и ÑеÑвеÑов, напÑÐ¸Ð¼ÐµÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ twisted), поддеÑжка баз даннÑÑ Ð¸ Ñ.д. - **ÐоÑÑиÑÑемоÑÑÑ:** Python Ñ Ð»ÐµÐ³ÐºÐ¾ÑÑÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸ÑÑеÑÑÑ Ð½Ð° болÑÑинÑÑве плаÑÑоÑм в ÑÑиÑаннÑе минÑÑÑ. - **РабоÑа Ñ Ð¸ÑклÑÑениÑми:** Python ÑодеÑÐ¶Ð¸Ñ ÑложнÑй и пÑодÑманнÑй Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ ÑабоÑÑ Ñ Ð¸ÑклÑÑениÑми, благодаÑÑ ÑÐµÐ¼Ñ Ð¿ÑогÑÐ°Ð¼Ð¼Ñ Ð¿ÑодолжаÑÑ ÑабоÑаÑÑ Ð´Ð°Ð¶Ðµ пÑи возникновении оÑибок в вÑзÑваемом ими коде. - **ÐÑладÑик:** Python вклÑÑÐ°ÐµÑ Ð² ÑÐµÐ±Ñ Ð¾ÑладÑик, Ñак ÑÑо когда пÑогÑамма не ÑабоÑÐ°ÐµÑ Ð¿Ð¾ какой-Ñо пÑиÑине, полÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð»ÑÑиÑÑ Ð´Ð¾ÑÑÑп к иÑÑоÑии ÑÑека, пÑовеÑиÑÑ ÑоÑÑоÑние Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼ÑÑ Ð¿ÐµÑеменнÑÑ , пеÑемеÑаÑÑÑÑ Ð¿Ð¾ ÑÑекÑ. - **ÐÑоÑилиÑовÑик:** ÑÑÑеÑÑвÑÐµÑ Ð¿ÑоÑилиÑовÑик Python, коÑоÑÑй запÑÑÐºÐ°ÐµÑ ÐºÐ¾Ð´ и ÑÐ¾Ð·Ð´Ð°ÐµÑ Ð¾ÑÑÐµÑ Ð¿Ð¾ колиÑеÑÑÐ²Ñ Ð²Ñзовов и вÑемени ÑабоÑÑ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑнкÑии. - **ЯзÑк:** ÐмеÑÑо Ñого, ÑÑÐ¾Ð±Ñ Ð¿Ð¸ÑаÑÑ **новÑй ÑзÑк** Ð´Ð»Ñ Ð¼Ð°ÑемаÑики, как ÑÑо бÑло Ñделано Ð´Ð»Ñ Magma, Maple, Mathematica, Matlab, GP/PARI, GAP, Macaulay 2, Simath, и Ñ.д., Ð¼Ñ Ð¸ÑполÑзÑем ÑзÑк Python, коÑоÑÑй ÑвлÑеÑÑÑ Ð¿Ð¾Ð¿ÑлÑÑнÑм ÑзÑком пÑогÑаммиÑованиÑ; он акÑивно ÑазвиваеÑÑÑ Ð¸ опÑимизиÑÑеÑÑÑ ÑоÑнÑми опÑÑнÑÑ ÑпеÑиалиÑÑов по пÑогÑÐ°Ð¼Ð¼Ð½Ð¾Ð¼Ñ Ð¾Ð±ÐµÑпеÑÐµÐ½Ð¸Ñ (Ñм. [PyDev]_). .. _section-mathannoy: ÐÑе-паÑÑеÑ: РазлиÑÐ¸Ñ Ð¼ÐµÐ¶Ð´Ñ Sage и Python ---------------------------------------- РнекоÑоÑÑÑ Ð¼Ð°ÑемаÑиÑеÑÐºÐ¸Ñ Ð°ÑпекÑÐ°Ñ Python Ð¼Ð¾Ð¶ÐµÑ Ð²Ð²ÐµÑÑи в заблÑждение, поÑÑÐ¾Ð¼Ñ Sage Ð²ÐµÐ´ÐµÑ ÑÐµÐ±Ñ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾ дÑÑгим обÑазом. - **ÐбознаÑение Ð²Ð¾Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð² ÑÑепенÑ:** ``**`` вмеÑÑо ``^``. Ð Python, ``^`` ознаÑÐ°ÐµÑ "иÑклÑÑиÑелÑно или (xor)", а не возведение в ÑÑепенÑ, Ñак в Python: :: >>> 2^8 10 >>> 3^2 1 >>> 3**2 9 ÐÑполÑзование ``^`` Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ ÑÑÑаннÑм; ÑÑо не Ñак важно Ð´Ð»Ñ Ð¼Ð°ÑемаÑиÑеÑÐºÐ¸Ñ Ð¸ÑÑледований, поÑÐ¾Ð¼Ñ ÐºÐ°Ðº "иÑклÑÑиÑелÑно или" иÑполÑзÑеÑÑÑ Ð´Ð¾Ð²Ð¾Ð»Ñно Ñедко. ÐÐ»Ñ ÑдобÑÑва, Sage иÑполÑзÑÐµÑ Ð¿Ñе-паÑÑÐµÑ Ð´Ð»Ñ Ð¿ÑовеÑки кода пеÑед Ñем, как он пеÑедаеÑÑÑ Ð² Python, и Ñимвол ``^`` (еÑли он не Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² ÑÑÑоке) заменÑÐµÑ Ð½Ð° ``**``: :: sage: 2^8 256 sage: 3^2 9 sage: "3^2" '3^2' - **Ðеление ÑелÑÑ ÑиÑел:** ÐÑÑажение ``2/3`` в Python ознаÑÐ°ÐµÑ Ð½Ðµ Ñо, Ñего Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ Ð¼Ð°ÑемаÑик. Ð Python, еÑли ``m`` и ``n`` - ÑелÑе ÑиÑла, Ñо ``m/n`` Ñакже Ñелое ÑиÑло, еÑли бÑÑÑ ÑоÑнее, Ñо ÑÐµÐ»Ð°Ñ ÑаÑÑÑ Ð¾Ñ Ð´ÐµÐ»ÐµÐ½Ð¸Ñ ``m`` на ``n``. СледоваÑелÑно ``2/3=0``. Ð ÑообÑеÑÑве Python обÑÑждаеÑÑÑ Ð²Ð°ÑÐ¸Ð°Ð½Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа Ñак, ÑÑÐ¾Ð±Ñ ``2/3`` возвÑаÑало ÑиÑло Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей ÑоÑкой ``0.6666...``, а ``2//3`` возвÑаÑало ``0``. РинÑеÑпÑеÑаÑоÑе Sage Ð¼Ñ Ð¸ÑполÑзÑем обознаÑение ``Integer( )`` и деление иÑполÑзÑем как конÑÑÑÑкÑÐ¾Ñ Ð´Ð»Ñ ÑаÑионалÑнÑÑ ÑиÑел. ÐапÑимеÑ: :: sage: 2/3 2/3 sage: (2/3).parent() Rational Field sage: 2//3 0 sage: int(2)/int(3) 0 - **ÐолÑÑие ÑелÑе ÑиÑла:** Python Ð¸Ð¼ÐµÐµÑ Ð²ÑÑÑоеннÑÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÑ ÑелÑÑ ÑиÑел пÑоизволÑной ÑоÑноÑÑи в дополнение к C-intâам. Ðни намного медленнее, Ñем Ñо, ÑÑо пÑедоÑÑавлÑÐµÑ GMP, а Ñакже имеÑÑ ÑвойÑÑво: Ñимвол ``L`` в конÑе, ÑÑÐ¾Ð±Ñ Ð¾ÑлиÑаÑÑ Ð¸Ñ Ð¾Ñ Ð¿ÐµÑеменнÑÑ Ñипа int (и ÑÑо не измениÑÑÑ Ð² ближайÑем бÑдÑÑем). Sage иÑполÑзÑÐµÑ ÑелÑе ÑиÑла пÑоизволÑной ÑоÑноÑÑи Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ GMP C-библиоÑеки, и они вÑводÑÑÑÑ Ð½Ð° ÑкÑан без L. ÐмеÑÑо Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð½ÑеÑпÑеÑаÑоÑа Python (как поÑÑÑпили некоÑоÑÑе лÑди Ð´Ð»Ñ Ð²Ð½ÑÑÑÐµÐ½Ð½Ð¸Ñ Ð¿ÑоекÑов), Ð¼Ñ Ð¸ÑполÑзÑем Python как еÑÑÑ, и пÑименÑем пÑе-паÑÑÐµÑ Ð´Ð»Ñ IPython Ñак ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ командной ÑÑÑоки IPython ÑооÑвеÑÑÑвовало ожиданиÑм маÑемаÑиков. ÐÑо ознаÑаеÑ, ÑÑо лÑбой ÑÑÑеÑÑвÑÑÑий код на Python Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзован в Sage. Ðднако, нÑжно пÑидеÑживаÑÑÑÑ ÑÑандаÑÑа Python пÑи напиÑании пакеÑов, коÑоÑÑе бÑдÑÑ Ð¸Ð¼Ð¿Ð¾ÑÑиÑÐ¾Ð²Ð°Ð½Ñ Ð² Sage. (ЧÑÐ¾Ð±Ñ ÑÑÑановиÑÑ Ð¿Ð°ÐºÐµÑ Python, коÑоÑÑй, Ñкажем, Ð²Ñ Ð½Ð°Ñли в инÑеÑнеÑе, ÑледÑйÑе инÑÑÑÑкÑии, но запÑÑкайÑе ``sage -python`` вмеÑÑо ``python``. ÐÑÐµÐ½Ñ ÑаÑÑо ÑÑо ознаÑаеÑ, ÑÑо нÑжно ввеÑÑи ``sage -python setup.py install``.) Ðак пÑинÑÑÑ ÑÑаÑÑие в ÑазÑабоÑке Sage? ====================================== ÐÑли Ð²Ñ Ñ Ð¾ÑиÑе помоÑÑ Ð² ÑазÑабоÑке Sage, ÑÑо бÑÐ´ÐµÑ Ð¾Ñенено по доÑÑоинÑÑвÑ! ÐомоÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð²Ð°ÑÑиÑоваÑÑÑÑ Ð¾Ñ Ð²Ð½ÐµÑÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ в код до Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑпÑавоÑной инÑоÑмаÑии и Ð½Ð°Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð±Ð°Ð³Ð¾Ð². ÐоиÑиÑе инÑоÑмаÑÐ¸Ñ Ð´Ð»Ñ ÑазÑабоÑÑиков на главной ÑÑÑаниÑе Sage; кÑоме вÑего пÑоÑего, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе найÑи ÑпиÑок пÑоекÑов, ÑвÑзаннÑÑ Ñ Sage, оÑÑоÑÑиÑованнÑÑ Ð¿Ð¾ пÑиоÑиÑеÑÑ Ð¸ каÑегоÑии. `Ð ÑководÑÑво ÑазÑобоÑÑика Sage <http://www.sagemath.org/doc/developer/>`_ ÑодеÑÐ¶Ð¸Ñ Ð¿Ð¾Ð»ÐµÐ·Ð½ÑÑ Ð¸Ð½ÑоÑмаÑиÑ; Ð²Ñ Ñакже можеÑе ÑзнаÑÑ Ð±Ð¾Ð»ÑÑе в Google-гÑÑппе ``sage-devel``. Ðак пÑавилÑно ÑÑÑлаÑÑÑÑ Ð½Ð° Sage? ================================ ÐÑли Ð²Ñ Ð¸ÑполÑзÑеÑе Sage Ð´Ð»Ñ Ð½Ð°Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ ÑабоÑÑ, пожалÑйÑÑа, ÑкажиÑе, ÑÑо вÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ð±Ñли пÑÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Sage. ÐклÑÑиÑе :: [Sage] William A. Stein et al., Sage Mathematics Software (Version 4.3). The Sage Development Team, 2009, http://www.sagemath.org. в Ñаздел библиогÑаÑии (заменÑÑ 4.3 веÑÑией Sage, коÑоÑÑÑ Ð²Ñ Ð¸ÑполÑзÑеÑе). ÐÑоме Ñого, пожалÑйÑÑа, поÑÑаÑайÑеÑÑ Ð¾ÑÑледиÑÑ, какие компоненÑÑ Sage бÑли иÑполÑÐ·Ð¾Ð²Ð°Ð½Ñ Ð´Ð»Ñ Ð²ÑÑиÑлений, напÑÐ¸Ð¼ÐµÑ PARI?, GAP?, Singular? Maxima?, и ÑкажиÑе ÑÑи ÑиÑÑемÑ. ÐÑли Ð²Ñ ÑомневаеÑеÑÑ Ð¾ Ñом, какое пÑогÑаммное обеÑпеÑение иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð²ÑÑиÑлений, задайÑе вопÑÐ¾Ñ Ð² Google-гÑÑппе ``sage-devel``. См. :ref:`section-univariate` Ð´Ð»Ñ Ð´Ð°Ð»ÑнейÑего обÑÑÐ¶Ð´ÐµÐ½Ð¸Ñ ÑÑой ÑемÑ. ------------ ÐÑли Ð²Ñ Ð¿ÑоÑиÑали ÑÑо ÑÑководÑÑво Ð¾Ñ Ð½Ð°Ñала до конÑа, и Ñ Ð²Ð°Ñ ÐµÑÑÑ ÑообÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ð¿Ð¾Ð²Ð¾Ð´Ñ Ð²Ñемени, заÑÑаÑенного на него, пожалÑйÑÑа, вÑÑкажиÑе Ñвое мнение в Google-гÑÑппе ``sage-devel``. ÐаÑлаждайÑеÑÑ Sage!