python - 如何使用 sympy 为 x 的正弦生成泰勒级数
问题描述
我正在使用 Python 的sympy为sin x
以下是 sin(x) 的泰勒级数。参考这里
然后以下是我应该如何编写python代码来创建泰勒级数表达式
代码:
import sympy as sym
import math
x = sym.symbols('x')
# Technique 1: Compute the 5 first terms in a Taylor series for sin(x) around x = 0.
T_sin5 = 1 - (x**3/math.factorial(3)) + (x**5/math.factorial(5)) - (x**7/math.factorial(7)) + (x**9/math.factorial(9))
print(T_sin5)
# Technique 2: Compute the 5 first terms in a Taylor series for sin(x) around x = 0 using sympy
T_sin5_2 = sym.sin(x).series(x, 0, 5).removeO()
print(T_sin5_2)
问题:
正如您在上面看到的,我T_sin5
使用手写方式T_sin5_2
制作,而使用sympy
. 所以,我的问题是:技术 1 和技术 2 一样吗?都T_sin5
和T_sin5_2
一样。
print(T_sin5)
两者print(T_sin5_2)
似乎都打印了该系列的一半,如下所示:
-x**3/6 + x
我期待这两个版画都能打印出前 5 个学期的 Talor 系列,如下所示。
1 - x 3/6 + x 5/120 - x 7/5040 + x 9/362880
为什么print(T_sin5_2)
不像上面那样打印出泰勒级数的 5 项?
Python版本:
我的python版本是3.8.6
解决方案
描述的n
参数series
系列要扩展到的术语数。
这包括为零的项(因为它发生在 的每个第二项sin(x)
)。Ien-1
是系列中最大的幂,因此series(x, 0, 5)
恰好是4
这个幂,对于这个幂,系数为零。
对于您的自定义版本,虽然它应该打印完整系列(这是我得到的输出):
>>> print(T_sin5)
x**9/362880 - x**7/5040 + x**5/120 - x**3/6 + 1
推荐阅读
- angular - 没有组件的Angular中的对话框
- python-3.x - No Python At ... pip3 的 PATH 问题
- javascript - 用于身份验证标头的 Angular HTTP 拦截器
- sql - 运行报告时,如何在搜索日期时间范围时排除 12:00:00.000
- python - 要求用户在密码重置前至少尝试 3 次
- html - 是否可以使用 xpath 将 $ 用作属性名称的一部分
- docker - 包含的容器不适用于 docker compose
- visual-c++ - 如何“捕捉”中断信号并返回迄今为止找到的最佳解决方案
- assembly - 第 1 行的语法错误:标签不能是“BRA”
- javascript - 未找到 Ajax 响应中返回的函数