Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in algebraische symbolische Sympy-Operationen in Python

Einführung in algebraische symbolische Sympy-Operationen in Python

不言
不言nach vorne
2019-03-29 11:04:386902Durchsuche

Dieser Artikel bietet Ihnen eine Einführung in die algebraischen Symboloperationen von Sympy. Ich hoffe, dass er Ihnen als Referenz dienen wird.

Während unseres fast 10-jährigen Studiums in der Junior High School, der High School und dem College hat Mathematik immer eine sehr große Rolle gespielt. Wenn wir jedoch auf die Vergangenheit zurückblicken, können wir feststellen, dass wir viel Zeit damit verbracht haben Im Internet scheinen Rechenmethoden, Rechenfähigkeiten, schriftliche Rechenfähigkeiten und das Gedächtnis mathematischer Formeln alles geworden zu sein, was wir in der Mathematik lernen. Diese Erinnerungen und Fähigkeiten sind innerhalb weniger Jahre vergessen, aber viele Menschen erinnern sich noch daran, dass die Berechnungen und Problemlösungen mit dem Stift durch Software in den Bereichen KI, Grafik, Datenanalyse usw. ersetzt werden. Was ist also von der Mathematik unserer Studienzeit übrig geblieben?

Taschenrechner und Mathematik

Apropos mathematische Taschenrechner: Die vier gängigen Rechenoperationen sind Addition, Subtraktion, Multiplikation und Division. Damit können wir das Traditionelle loswerden Berechnungen schriftlicher Berechnungen und mentaler Berechnungen. Addition, Subtraktion, Multiplikation und Division von mehr als vier Ziffern sind nach mathematischen Grundsätzen eigentlich nicht schwierig. Wenn wir uns jedoch nicht auf einen Taschenrechner verlassen und uns nur auf unsere Rechenfähigkeiten (schriftliches Rechnen und Kopfrechnen) verlassen, wird dies nicht der Fall sein Die Genauigkeit der Berechnung wird dadurch erheblich verringert, die Berechnung wird jedoch auch schwieriger. Unser Einsatz der Mathematik bleibt auf einem sehr oberflächlichen Niveau.

Obwohl die vier Rechenoperationen so einfach sind, wird das Kopfrechnen mit mehrstelligen Operationen als eine geniale Fähigkeit in unserem Leben eingestuft. Die Anwendung der Mathematik sollte jedoch praktisch und populär sein und nicht nur ein Patent für Genies. Das ist der Reiz des Taschenrechners.
Der Rechner kann auch wissenschaftliche Operationen ausführen, wie Potenzierung, Quadratwurzel, Exponent, Logarithmus, trigonometrische Funktionen usw. Obwohl dieses Wissen in unserer Mittelschulzeit auch mit Stift und Papier berechnet werden kann, ist es auf einige beschränkt extrem Sobald alltägliche und einfache Vorgänge kompliziert werden, wird es zu einem komplizierten Projekt, Vorgänge mit Stift und Papier durchzuführen. Daher kann uns der Rechner der Anwendung der Mathematik näher bringen.

Aber die Mathematik, die wir in unserer Studienzeit gelernt haben, ist viel mehr als das, insbesondere fortgeschrittene Mathematik (Infinitesimalrechnung), lineare Algebra, Wahrscheinlichkeitsrechnung und Statistik sowie andere mathematische Kenntnisse sind weit verbreitet (ich habe erst später davon erfahren). aber aufgrund ihrer Komplexität sind die Berechnungen auch dann nicht einfach, wenn wir sie beherrschen. Gibt es Rechner für die Analysis, lineare Algebra, Wahrscheinlichkeitsrechnung und Statistik?

Die Antwort ist ja. Die Sympy-Bibliothek von Python unterstützt auch Analysis, lineare Algebra usw. mit mathematischen Symbolen für Operationen.

Mit einem Taschenrechner können wir uns wirklich von der komplexen Problemlösung der Mathematik lösen und unsere Energie darauf verwenden, mathematische Prinzipien und Anwendungen zu erlernen, und das ist die Bedeutung des Mathematiklernens (am Arbeitsplatz).

Computeralgebrasystem

Sympy kann Operationen an mathematischen Symbolen implementieren, es zur symbolischen Ableitung und Überprüfung mathematischer Ausdrücke verwenden und Ableitungen, Grenzwerte, Analysis und Gleichungen mit mathematischen Symbolen verarbeiten. Gruppen, Matrizen usw. sind so einfach wie ein wissenschaftlicher Taschenrechner, ähnlich wie Computer Algebra System CAS. Obwohl CAS normalerweise eine Visualisierungssoftware ist, klassifiziert Wikipedia Sympy auch als CAS.

Mehrere bekannte Mathematiksoftware wie Mathematica, Maxima, Matlab (erfordert Symbolic Math Toolbox), Maple usw. Im vorherigen Artikel haben wir Python mit R und Matlab verglichen. Offensichtlich hat Python in bestimmten Szenarien sehr offensichtliche Vorteile, daher habe ich den Vergleich zwischen Sympy und Mathematica wirklich untersucht nicht gut darin, Diagramme zu erstellen (Python verfügt über andere Bibliotheken, um dies auszugleichen).

Im Bereich der professionellen Mathematik (Mathematik, Datenwissenschaft usw.) hat Python eine äußerst vollständige ökologische Kette gebildet, da es über viele und leistungsstarke Bibliotheken von Drittanbietern verfügt, selbst im Vergleich zu den weltweit größten leistungsstark Die härteste Software ist auch wahr.

In der nächsten Ausgabe dieser Kolumne zum Mathematiklernen mit Python werden auch einige sehr praktische mathematische Werkzeuge und Mathematikunterrichtsressourcen vorgestellt, die das Mathematiklernen einfacher und anschaulicher machen.

Sympys symbolische Operationen

Wenn Sie bereits Mathematik studiert haben und das Computeralgebrasystem CAS kennen, sind Sie mit den Operationen mathematischer Symbole vertraut Vielleicht etwas ungewohnt. Es ist so klar, das wollen wir als nächstes herausfinden.

Der Unterschied zwischen Sympy- und Math-Funktionen

Werfen wir zunächst einen Blick auf den Unterschied zwischen der Sympy-Bibliothek und der integrierten Math-Funktion von Python bei der Verarbeitung numerischer Berechnungen. Um den Code ausführbar zu machen, basiert der folgende Code auf dem vollständigen Code von Python3. Nachdem

import sympy,math
print(math.sqrt(8))
print(sympy.sqrt(8))

ausgeführt wurde, wird das Ergebnis wie folgt angezeigt:

2.8284271247461903
2*sqrt(2)

Das Mathematikmodul löst direkt einen Gleitkommawert, während Sympy mathematische Symbole verwendet, um das Ergebnis in Kombination mit der LaTex-Syntax auszudrücken kann man nehmen Nehmen Sie das, mit dem wir aus Lehrbüchern am vertrautesten sind: $2sqrt{2}$.

Mathematische Symbole und Ausdrücke

我们要对数学方程组、微积分等进行运算时,就会遇到变量比如x,y,z,f等的问题,也会遇到求导、积分等代数符号表达式,而Sympy就可以保留变量,计算有代数符号的表达式的。

from sympy import *
x = Symbol('x')
y = Symbol('y')
k, m, n = symbols('k m n')
print(3*x+y**3)

输出的结果为:3*x + y**3,转化为LaTex表示法之后结果为$3x+y^3$,输出的结果就带有x和y变量。Symbol()函数定义单个数学符号;symbols()函数定义多个数学符号。

折叠与展开表达式

factor()函数可以折叠表达式,而expand()函数可以展开表达式,比如表达式:$x^4+xy+8x$,折叠之后应该是$x(x^3+y+8)$。我们来看具体的代码:

from sympy import *
x,y = symbols('x y')
expr=x**4+x*y+8*x
f_expr=factor(expr)
e_expr=expand(f_expr)
print(f_expr)
print(e_expr)

表达式的折叠与展开,对应的数学知识就是因式分解,相关的数学知识在人教版初二的教程里。用Python学习数学专栏的目的就是要Python与初高中、大学的数学学习结合起来,让数学变得更加简单生动。

表达式化简

simplify()函数可以对表达式进行化简。有一些表达式看起来会比较复杂,就拿人教版初二上的一道多项式的乘法为例,简化$(2x)^3(-5xy^2)$。

from sympy import *
x,y = symbols('x y')
expr=(2*x)**3*(-5*x*y**2)
s_expr=simplify(expr)
print(s_expr)

求解方程组

在人教版的数学教材里,我们初一上会接触一元一次方程组,初一下就会接触二元一次方程、三元一次方程组,在初三上会接触到一元二次方程,使用Sympy的solve()函数就能轻松解题。

解一元一次方程

我们来求解这个一元一次方程组。(题目来源于人教版七年级数学上)
$$6 \times x + 6 \times(x-2000)=150000$$

from sympy import *
x = Symbol('x')
print(solve(6*x + 6*(x-2000)-150000,x))

我们需要掌握Python的代码符号和数学符号之间的对应关系,解一元一次方程就非常简单。

解二元一次方程组

我们来看如何求解二元一次方程组。(题目来自人教版七年级数学下)

$$ \begin{cases} x+ y =10,\\ 2 \times x+ y=16   \end{cases} $$

from sympy import *
x,y = symbols('x y')
print(solve([x + y-10,2*x+y-16],[x,y]))

很快就可以得出{x: 6, y: 4},也就是
$$x=6,y=4$$。

解三元一次方程组

我们来看如何解三元一次方程组。(题目来自人教版七年级数学下)

$$ \begin{cases} x+y+z=12,\\ x+2y+5z=22,\\ x=4y.   \end{cases} $$

执行之后,很快可以得出结果{x: 8, y: 2, z: 2},也就是
$$x=8,y=2,z=2$$

解一元二次方程组

比如我们来求解人教版九年级一元二次方程组比较经典的一个题目,$ax^2+bx+c=0$.

from sympy import *
x,y = symbols('x y')
a,b,c=symbols('a b c')
expr=a*x**2 + b*x + c
s_expr=solve( expr, x)
print(s_expr)

执行之后得出的结果为[(-b + sqrt(-4*a*c + b**2))/(2*a), -(b + sqrt(-4*a*c + b**2))/(2*a)],我们知道根与系数的关系二次方程会有两个解,这里的格式就是一个列表。转为我们常见的数学公式即为:
$$\frac{-b+\sqrt{-4ac+b^2}}{2a} 、-\frac{b+\sqrt{-4ac+b^2}}{2a}$$

微积分Calculus

微积分是大学高等数学里非常重要的学习内容,比如求极限、导数、微分、不定积分、定积分等都是可以使用Sympy来运算的。
求极限
Sympy是使用limit(表达式,变量,极限值)函数来求极限的,比如我们要求$\lim \limits_{x \to 0} \frac{sinx(x)}{x}$的值。

from sympy import *
x, y, z = symbols('x y z')
expr = sin(x)/x
l_expr=limit(expr, x, 0)
print(l_expr)

执行后即可得到结果为1。

求导

可以使用diff(表达式,变量,求导的次数)函数对表达式求导,比如我们要对$sin(x)e^x$进行$x$求导,以及求导两次,代码如下:

from sympy import *
x,y = symbols('x y')
expr=sin(x)*exp(x)
diff_expr=diff(expr, x)
diff_expr2=diff(expr,x,2)
print(diff_expr)
print(diff_expr2)

求导一次的结果就是exp(x)*sin(x) + exp(x)*cos(x),也就是$e^xsin(x)+e^xcos(x)$;求导两次的结果是2*exp(x)*cos(x),也就是
$$2e^xcosx$$

求不定积分

Sympy是使用integrate(表达式,变量)来求不定积分的,比如我们要求$\int(e^x\sin{(x)} + e^x\cos{(x)})\,dx$

from sympy import *
x,y = symbols('x y')
expr=exp(x)*sin(x) + exp(x)*cos(x)
i_expr=integrate(expr,x)
print(i_expr)

执行之后的结果为:exp(x)*sin(x) 转化之后为:
$$e^xsin(x)$$

求定积分

Sympy同样是使用integrate()函数来做定积分的求解,只是语法不同:integrate(表达式,(变量,下区间,上区间)),我们来看如果求解
$\int_{-\infty}^\infty \sin{(x^2)}\,dx$

from sympy import *
x,y = symbols('x y')
expr=sin(x**2)
i_expr=integrate(expr, (x, -oo, oo))
print(i_expr)

执行之后的结果为sqrt(2)*sqrt(pi)/2,也就是
$$\frac{\sqrt{2}\sqrt{\pi}}{2}$$

Sympy能够做的也远不止这些,初高中、大学的数学运算题在Sympy极为丰富的功能里不过只是开胃入门小菜而已。

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的python视频教程栏目!

Das obige ist der detaillierte Inhalt vonEinführung in algebraische symbolische Sympy-Operationen in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen