1.1.6 使用SymPy进行函数运算
在Python和Matlab等软件中,科学计算分为数值计算和符号计算。数值计算是使用数字计算机以数值为运算对象求数学问题近似解的方法与过程,计算结果是数值。NumPy是Python中的数值计算库。
【例1-9】 计算当时,函数y=3sin x的值。(代码:ch1函数与极限\1.1函数\例1-9)
![](https://epubservercos.yuewen.com/A811B9/31397825703550206/epubprivate/OEBPS/Images/Figure-P24_38839.jpg?sign=1739618561-q2bUH65rAGtozQoa9XxB4fLjaFnhuWIL-0-a1a981a2d7bad7b65f034796eb042c5b)
运行结果:
3.0
符号计算又称“计算机代数”,以符号对象和符号表达式作为运算对象,运算结果为解析式。使用符号计算可以进行因式分解、多项式化简、微分和积分等运算。SymPy是Python的一个符号计算库。
使用SymPy求解上一个例题。
![](https://epubservercos.yuewen.com/A811B9/31397825703550206/epubprivate/OEBPS/Images/Figure-P24_39185.jpg?sign=1739618561-Ko2UfEnG21K7scAdFWWZ0EjryWIEruKr-0-c8e804fe4e237800c98f20990246a127)
运行结果:
3*sin(x)
下面介绍SymPy的安装与基本函数运算。
(1)安装SymPy。可以使用pip命令安装SymPy库。
>pip install sympy
(2)导入SymPy。可以使用以下两种方式导入SymPy库或者其中的所有方法。
![](https://epubservercos.yuewen.com/A811B9/31397825703550206/epubprivate/OEBPS/Images/Figure-P25_38841.jpg?sign=1739618561-SJiEFaMgm64cY4ToIXBuN5JQuQnFIIMl-0-740395609216abf28cdacf5757047f75)
(3)创建符号。在运算之前先要使用Symbol()或symbols()定义运算中所需的一个或者多个符号。
![](https://epubservercos.yuewen.com/A811B9/31397825703550206/epubprivate/OEBPS/Images/Figure-P25_38842.jpg?sign=1739618561-GgaM6koD3IHbVuySod1z7eYra52AqSiS-0-49e8e5ece0a3248f3a4dbf91cd008979)
(4)使用符号进行运算,如化简、因式分解等。
![](https://epubservercos.yuewen.com/A811B9/31397825703550206/epubprivate/OEBPS/Images/Figure-P25_38843.jpg?sign=1739618561-cRa0yEPCBG7aIClmZY5pG76ms1hW4CsX-0-f64a2768220714e5e11a9b8c8b680bd2)
运行结果:
![](https://epubservercos.yuewen.com/A811B9/31397825703550206/epubprivate/OEBPS/Images/Figure-P25_1856.jpg?sign=1739618561-u5KqPCLWf52o41xAjprsBKY2AN0pv0Xd-0-83ded24137e2c268da917a8687b2f5e3)
(5)使用subs()方法求函数值。
1. y = x**2+3*x-6 2. print(y.subs(x, 1))
运行结果:
-2
【例1-10】 化简f(x)=sin4x-2sin2xcos2x+cos4x,并计算。(代码:ch1函数与极限\1.1函数\例1-10)
![](https://epubservercos.yuewen.com/A811B9/31397825703550206/epubprivate/OEBPS/Images/Figure-P26_38844.jpg?sign=1739618561-yfoDA5jMCGNLes3IMJZGnjTTbaviZ7YC-0-ae821f3f27baaf9f1b3a65d70cba34b2)
运行结果:
化简后的函数:cos(4*x)/2 + 1/2 f(pi/3)= 1/4
为了方便计算,SymPy内置了许多常用的常数与函数,如表1-2所示。
表1-2 SymPy中常用常数和方法
![](https://epubservercos.yuewen.com/A811B9/31397825703550206/epubprivate/OEBPS/Images/Figure-T26_38846.jpg?sign=1739618561-ZbgMOUhpkN2hIflI2ib3f70eSIF8lkHj-0-045d8fed664a607fb0a83c366c46ccb4)
需要注意的是,在符号计算时必须使用SymPy中的函数,如果使用数值计算库NumPy中的对应函数,系统会报错。比较下面两组代码的运行结果。(代码:ch1函数与极限\1.1函数\scipy与numpy运算比较。)
![](https://epubservercos.yuewen.com/A811B9/31397825703550206/epubprivate/OEBPS/Images/Figure-P27_38847.jpg?sign=1739618561-flpWvIrSqSJmTmrI1WcFIhrW3j6FNofF-0-0c54d5944338c19d3cbfb0cd659a9508)
运行结果:
2
![](https://epubservercos.yuewen.com/A811B9/31397825703550206/epubprivate/OEBPS/Images/Figure-P27_38848.jpg?sign=1739618561-jTVoP561LdAFcGrdgIv13vpQh4yFBGXq-0-bcee9481ea856034f8c2cd7ba71bd835)
运行结果:
![](https://epubservercos.yuewen.com/A811B9/31397825703550206/epubprivate/OEBPS/Images/Figure-P27_39229.jpg?sign=1739618561-moTdhH0sWAsMsD77H3gs6fqzdQNFdo10-0-8394f6ed0c42c7190d6f38272756478b)