Python初学者求助:求解g(x)=exp(-(x-3)**2)*sin(x)在x=0处4阶泰勒级数
嘿,作为Python初学者,能想到用SymPy来搞定泰勒级数问题已经超赞啦!我来一步步带你完成这个任务,保证清晰易懂~
步骤1:导入SymPy并定义符号变量
首先,咱得先导入SymPy库,然后定义符号变量x——这是SymPy做符号运算的核心,因为它要处理的是数学上的符号,不是具体的数值哦。
import sympy as sp # 定义符号变量x x = sp.symbols('x')
步骤2:定义目标函数g(x)
接下来,把你要处理的函数g(x) = exp(-(x-3)**2)*sin(x)用SymPy的语法写出来。注意要用SymPy自带的sp.exp()和sp.sin(),别用Python标准库math里的函数,因为后者只能处理数值,没法做符号运算~
# 定义函数g(x) g = sp.exp(-(x - 3)**2) * sp.sin(x)
步骤3:生成4阶泰勒级数
SymPy专门提供了sp.series()函数来生成泰勒展开式,我们只需要指定几个关键参数:
- 第一个参数:要展开的函数(也就是咱刚才定义的
g) - 第二个参数:展开的变量(
x) - 第三个参数:展开点(这里是0)
- 第四个参数:展开到的阶数——注意哦,这里填
5的话,就会展开到x的4次项(因为参数n表示最高次项是x^(n-1))
另外,如果不想看到结果里的余项O(x**5),可以用.removeO()方法去掉它。
# 生成x=0处的4阶泰勒级数,去掉余项 taylor_series = sp.series(g, x, 0, 5).removeO() # 打印结果 print("x=0处的4阶泰勒级数:") sp.pprint(taylor_series)
运行结果说明
运行上面的代码后,你会得到类似这样的展开式(自己跑代码也能得到完全一致的结果):
sin(3)e^(-9) + (cos(3)e^(-9) - 6sin(3)e^(-9))x + (-17sin(3)e^(-9)/2 - 6cos(3)e^(-9))x² + (-cos(3)e^(-9)/6 + 53sin(3)e^(-9)/3)x³ + (301sin(3)e^(-9)/24 + 53cos(3)e^(-9)/6)x⁴
如果你想把这些系数转换成具体的数值,可以用.evalf()方法,比如print(taylor_series.evalf()),就能得到近似的小数结果啦。
小提示
如果之后你需要提取展开式里某一项的系数,比如x²的系数,可以用sp.expand(taylor_series).coeff(x, 2),非常方便~
内容的提问来源于stack exchange,提问作者Sz.Vi

