SymPy - SymPy

SymPy
Sympy logotipi.
Tuzuvchi (lar)SymPy rivojlantirish jamoasi
Dastlabki chiqarilish2007; 13 yil oldin (2007)
Barqaror chiqish
1.6.2[1] / 9-avgust, 2020 yil; 3 oy oldin (2020-08-09)
Ombor Buni Vikidatada tahrirlash
YozilganPython
Operatsion tizimO'zaro faoliyat platforma
TuriKompyuter algebra tizimi
LitsenziyaYangi BSD litsenziyasi
Veb-saytwww.sempiya.org Buni Vikidatada tahrirlash

SymPy bu ochiq manbali Python kutubxona uchun ramziy hisoblash. Bu kompyuter algebra imkoniyatlarini mustaqil dastur sifatida, boshqa dasturlarga kutubxona sifatida yoki Internetda jonli ravishda taqdim etadi SymPy Live yoki SymPy Gamma. SymPy-ni o'rnatish va tekshirish oddiy, chunki u to'liq Python-da ozgina bog'liqlik bilan yozilgan.[2][3][4] Ushbu kirish qulayligi taniqli tilda sodda va kengaytiriladigan kod bazasi bilan birgalikda SymPy-ni kirish uchun to'sig'i past bo'lgan kompyuter algebra tizimiga aylantiradi.

SymPy asosiy ramziy arifmetikadan hisoblash, algebra, diskret matematika va kvant fizikasi. U hisoblash natijalarini quyidagicha formatlashga qodir LaTeX kod.[2][3]

SymPy bu bepul dasturiy ta'minot va ostida litsenziyalangan Yangi BSD litsenziyasi. Etakchi ishlab chiquvchilar - Ondeyj Jertik va Aaron Meurer. Bu 2005 yilda Ondřej Čertík tomonidan boshlangan.[5]

Xususiyatlari

SymPy kutubxonasi ko'plab ixtiyoriy modullar bilan yadroga bo'lingan.

Hozirda SymPy yadrosi taxminan 260 ming satr kodga ega[6] (shuningdek, o'z-o'zini sinashning to'liq to'plamini o'z ichiga oladi: 0.7.5 versiyasi bo'yicha 350 ta faylda 100000 dan ortiq satr) va uning imkoniyatlariga quyidagilar kiradi:[2][3][7][8][9]

Asosiy imkoniyatlar

  • Asosiy arifmetik: *, /, +, -, **
  • Soddalashtirish
  • Kengayish
  • Funksiyalar: trigonometrik, giperbolik, eksponent, ildizlar, logarifmlar, absolyut qiymat, sferik garmonikalar, faktoriallar va gamma funktsiyalar, zeta funktsiyalar, polinomlar, gipergeometrik, maxsus funktsiyalar, ...
  • O'zgartirish
  • O'zboshimchalik bilan aniqlik butun sonlar, mantiqiy asoslar va suzuvchi
  • Kommutativ bo'lmagan belgilar
  • Naqshni moslashtirish

Polinomlar

Hisoblash

Tenglamalarni echish

Diskret matematik

Matritsalar

Geometriya

  • Nuqtalar, chiziqlar, nurlar, segmentlar, ellipslar, doiralar, ko'pburchaklar, ...
  • Kesishmalar
  • Tangency
  • O'xshashlik

Plotirovka

E'tibor bering, chizma tashqi ko'rinishga muhtoj matplotlib yoki Piglet modul.

  • Koordinatali modellar
  • Geometrik ob'ektlarni chizish
  • 2D va 3D
  • Interaktiv interfeys
  • Ranglar
  • Animatsiyalar

Fizika

Statistika

Kombinatorika

Bosib chiqarish

Tegishli loyihalar

  • SageMath: uchun ochiq manbali alternativa Matematik, Chinor, MATLAB va Magma (SymPy Sage-ga kiritilgan)
  • SymEngine: SymPy yadrosini C ++ da qayta yozish, uning ishlashini oshirish uchun. Hozirda SymEngine-ni Sage-ning asosiy dvigateliga aylantirish bo'yicha ishlar olib borilmoqda.
  • mpmath: ixtiyoriy aniqlikdagi suzuvchi nuqta arifmetikasi uchun Python kutubxonasi
  • SympyCore: yana bir Python kompyuter algebra tizimi
  • SfePy: 1D, 2D va 3D-da cheklangan elementlar usuli bilan bog'langan qisman differentsial tenglamalar (PDE) tizimlarini echish uchun dasturiy ta'minot.
  • Algebra: Geometrik algebra moduli (ilgari sympy.galgebra).
  • Quameon: Kvant-Monte-Karlo Python-da.
  • Lcapy: O'qitish uchun eksperimental Python to'plami chiziqli elektron tahlil.
  • LaTeX Expression loyihasi: Algebraik iboralarni ramziy shaklda avtomatik almashtirish va natijalarni hisoblash bilan oson LaTeX terish.
  • Simvolik statistik modellashtirish: Murakkab jismoniy modellarga statistik operatsiyalarni qo'shish.
  • Diofant: Sergey B Kirpichev tomonidan boshlangan SymPy vilkasi

Bog'liqliklar

1.0 versiyasidan boshlab SymPy mpmath paketiga bog'liqlik sifatida ega.

Uning imkoniyatlarini oshirishi mumkin bo'lgan bir nechta ixtiyoriy bog'liqliklar mavjud:

  • gmpy: Agar gmpy o'rnatilgan bo'lsa, SymPy ning polinom moduli uni tezroq er usti turlari uchun avtomatik ravishda ishlatadi. Bu muayyan operatsiyalarni bajarilishini bir necha bor oshirishi mumkin.
  • matplotlib: Agar matplotlib o'rnatilgan bo'lsa, SymPy uni rasm chizish uchun ishlatishi mumkin.
  • Piglet: Muqobil chizmalar to'plami.

Foydalanish misollari

Chiroyli bosib chiqarish

Sympy, natijalarni yanada jozibali formatga formatlash imkonini beradi pprint funktsiya. Shu bilan bir qatorda init_printing () usuli chiroyli bosib chiqarishni ta'minlaydi, shuning uchun pprint qo'ng'iroq qilish shart emas. Pretty-bosib chiqarish joriy muhitda mavjud bo'lganda unicode belgilaridan foydalanadi, aks holda u qaytib keladi ASCII belgilar.

>>> dan hamdardlik Import pprint, init_printing, Belgilar, gunoh, cos, tugatish, kv, seriyali, Ajralmas, Funktsiya>>>>>> x = Belgilar("x")>>> y = Belgilar("y")>>> f = Funktsiya("f")>>> Agar mavjud bo'lsa, # pprint sukut bo'yicha unicode-ga o'rnatiladi>>> pprint( x**tugatish(x) ) ⎛ x⎞ ⎝ℯ ⎠x >>> # Unikodsiz chiqish>>> pprint(Ajralmas(f(x), x), use_unicode=Yolg'on)  /        |         | f (x) dx |        /        >>> # Xuddi shu ifoda bilan taqqoslang, ammo bu safar unikod yoqilgan>>> pprint(Ajralmas(f(x), x), use_unicode=To'g'ri)F f (x) dx>>> # Shu bilan bir qatorda, siz init_printing () raqamiga bir marta qo'ng'iroq qilishingiz va pprint funktsiyasiz chiroyli bosib chiqarishingiz mumkin.>>> init_printing()>>> kv(kv(tugatish(x)))   ____4 ╱ x ╲╱ ℯ >>> (1/cos(x)).seriyali(x, 0, 10)     2      4       6        8             x 5⋅x 61⋅x 277⋅x-10⎞1 + ── + ──── + ───── + ────── + O⎝x ⎠    2     24     720     8064

Kengayish

 1 >>> dan hamdardlik Import init_printing, Belgilar, kengaytirish 2 >>> init_printing() 3 >>> 4 >>> a = Belgilar("a") 5 >>> b = Belgilar("b") 6 >>> e = (a + b)**3 7 >>> e 8 (a + b) ³ 9 >>> e.kengaytirish()10 a³ + 3⋅a²⋅b + 3⋅a⋅b² + b³

O'zboshimchalik bilan aniqlik namunasi

>>> dan hamdardlik Import Ratsional, pprint>>> e = 2**50 / Ratsional(10)**50>>> pprint(e)1/88817841970012523233890533447265625

Differentsiya

>>> dan hamdardlik Import init_printing, belgilar, ln, farq>>> init_printing()>>> x, y = belgilar("x y")>>> f = x**2 / y + 2 * x - ln(y)>>> farq(f, x) 2⋅x  ─── + 2  y >>> farq(f, y)    2       x 1 - ── - ─    2 y   y>>> farq(farq(f, x), y) -2⋅x ────   2   y

Plotirovka

Chizma misolining chiqishi
>>> dan hamdardlik Import belgilar, cos>>> dan simpy.plotting Import fitna3d>>> x, y = belgilar("x y")>>> fitna3d(cos(x*3)*cos(y*5)-y, (x, -1, 1), (y, -1, 1))<sympy.plotting.plot.Plot object at 0x3b6d0d0>

Cheklovlar

>>> dan hamdardlik Import init_printing, Belgilar, chegara, kv, oo>>> init_printing()>>> >>> x = Belgilar("x")>>> chegara(kv(x**2 - 5*x + 6) - x, x, oo)-5/2>>> chegara(x*(kv(x**2 + 1) - x), x, oo)1/2>>> chegara(1/x**2, x, 0)>>> chegara(((x - 1)/(x + 1))**x, x, oo) -2

Differentsial tenglamalar

>>> dan hamdardlik Import init_printing, Belgilar, Funktsiya, Tenglama, echmoq, gunoh, farq>>> init_printing()>>>>>> x = Belgilar("x")>>> f = Funktsiya("f")>>>>>> tenglama = Tenglama(f(x).farq(x), f(x))>>> tenglamad ── (f (x)) = f (x)dx >>>    >>> echmoq(tenglama, f(x))           xf (x) = C₁⋅ℯ>>>>>> tenglama = Tenglama(x**2*f(x).farq(x), -3*x*f(x) + gunoh(x)/x)>>> tenglama 2 kunlik gunoh (x)x ⋅── (f (x)) = -3⋅x⋅f (x) + ──────   dx x >>>>>> echmoq(tenglama, f(x))       C₁ - cos (x)f (x) = ─────────── 

Integratsiya

>>> dan hamdardlik Import init_printing, birlashtirmoq, Belgilar, tugatish, cos, erf>>> init_printing()>>> x = Belgilar("x")>>> # Polinom funktsiyasi>>> f = x**2 + x + 1>>> f 2        x + x + 1>>> birlashtirmoq(f,x) 3    2    x x ── + ── + x3    2     >>> # Ratsional funktsiya>>> f = x/(x**2+2*x+1)>>> f     x ──────────── 2          x + 2⋅x + 1>>> birlashtirmoq(f, x)               1  log (x + 1) + ─────             x + 1>>> # Eksponent-polinom funktsiyalari>>> f = x**2 * tugatish(x) * cos(x)>>> f 2 x x ⋅ℯ -kos (x)>>> birlashtirmoq(f, x) 2 x 2 x x x x ⋅ℯ ⋅sin (x) x ⋅ℯ ⋅cos (x) x ℯ ⋅sin (x) ℯ ⋅cos (x)──────────── + ──────────── - x⋅ℯ ⋅sin (x) + ───────── - ───── ────     2              2                           2           2    >>> # Elementar bo'lmagan integral>>> f = tugatish(-x**2) * erf(x)>>> f   2        -x f ferf (x)>>> birlashtirmoq(f, x)  ___    2   F π ⋅erf (x)─────────────      4

Seriya

>>> dan hamdardlik Import Belgilar, cos, gunoh, pprint>>> x = Belgilar("x")>>> e = 1/cos(x)>>> pprint(e)  1   ──────cos (x)>>> pprint(e.seriyali(x, 0, 10))     2      4       6        8             x 5⋅x 61⋅x 277⋅x-10⎞1 + ── + ──── + ───── + ────── + O⎝x ⎠    2     24     720     8064          >>> e = 1/gunoh(x)>>> pprint(e)  1   ──────gunoh (x)>>> pprint(e.seriyali(x, 0, 4))           3        1 x 7⋅x-4⎛─ + ─ + ──── + O⎝x ⎠x 6 360

Mantiqiy fikrlash

1-misol

>>> dan hamdardlik Import *>>> x = Belgilar("x")>>> y = Belgilar("y")>>> faktlar = Q.ijobiy(x), Q.ijobiy(y)>>> bilan taxmin qilish(*faktlar):...     chop etish(so'rang(Q.ijobiy(2 * x + y)))To'g'ri

2-misol

>>> dan hamdardlik Import *>>> x = Belgilar("x")>>> # X haqida taxmin>>> haqiqat = [Q.asosiy(x)]>>> bilan taxmin qilish(*haqiqat):...     chop etish(so'rang(Q.oqilona(1 / x)))To'g'ri

Shuningdek qarang

Adabiyotlar

  1. ^ "Relizlar - hamdardlik / hamdardlik". Olingan 10 avgust 2020 - orqali GitHub.
  2. ^ a b v "SymPy bosh sahifasi". Olingan 2014-10-13.
  3. ^ a b v Joyner, Devid; Certik, Ondeyj; Meurur, Aaron; Granger, Brayan E. (2012). "Ochiq manbali kompyuter algebra tizimlari: SymPy". Kompyuter algebrasida ACM aloqalari. 45 (3/4): 225–234. doi:10.1145/2110170.2110185.
  4. ^ Meurur, Aaron; Smit, Kristofer P.; Paprokki, Mateush; Certik, Ondeyj; Kirpichev, Sergey B.; Roklin, Metyu; Kumar, AMiT; Ivanov, Sergiu; Mur, Jeyson K. (2017-01-02). "SymPy: Pythonda ramziy hisoblash" (PDF). PeerJ kompyuter fanlari. 3: e103. doi:10.7717 / peerj-cs.103. ISSN  2376-5992.
  5. ^ https://github.com/sympy/sympy/wiki/SymPy-vs.-Mathematica
  6. ^ "Open HUB-da loyiha statistikasi". Olingan 2014-10-13.
  7. ^ Gede, Gilbert; Peterson, Deyl L.; Nanjangud, Angad; Mur, Jeyson K.; Hubbard, Mont (2013). "Python bilan cheklangan multibody dinamikasi: ramziy tenglamani ishlab chiqarishdan nashrga qadar". ASME 2013 Xalqaro dizayn muhandislik texnik konferentsiyalari va kompyuterlar va muhandislik bo'yicha ma'lumotlar. Amerika mexanik muhandislari jamiyati: V07BT10A051. doi:10.1115 / DETC2013-13470. ISBN  978-0-7918-5597-3.
  8. ^ Roklin, Metyu; Terrel, Andy (2012). "SymPy bilan ramziy statistika". Fan va muhandislik sohasida hisoblash. 14 (3): 88–93. doi:10.1109 / MCSE.2012.56.
  9. ^ Osif, Mushtaq; Olaussen, Kare (2014). "Yuqori tartibli integrallar uchun avtomatik kod ishlab chiqaruvchi". Kompyuter fizikasi aloqalari. 185 (5): 1461–1472. arXiv:1310.2111. Bibcode:2014CoPhC.185.1461M. doi:10.1016 / j.cpc.2014.01.012.
  10. ^ "Taxminlar moduli - SymPy 1.4 hujjatlari". docs.sympy.org. Olingan 2019-07-05.
  11. ^ "Davomiy mexanika - SymPy 1.4 hujjatlari". docs.sympy.org. Olingan 2019-07-05.

Tashqi havolalar