python - 如何在不使用内循环或 if-else 的情况下计算 sin(x) 的泰勒级数的总和?
问题描述
- 我不能使用内部循环
- 我不能使用 if-else
我需要计算以下系列:
x - x^3/3! + x^5/5! - x^7/7! + x^9/9! ...
我在想类似以下的事情:
n =1
x =0.3
one=1
fact1=1
fact2=1
term =0
sum =0
for i in range(1, n+1, 2):
one = one * (-1)
fact1 = fact1*i
fact2 = fact2*i+1
fact = fact1*fact2
x = x * x
term = x/fact
sum = sum + term
但是,我发现很难同时保持事实和 x 的乘法。
解决方案
您想要计算项的总和。每一项都是前一项乘以-1 * x * x
除以n * (n+1)
。就写吧:
def func(x):
eps = 1e-6 # the expected precision order
term = x
sum = term
n = 1
while True:
term *= -x * x
term /= (n+1) * (n+2)
if abs(term) < eps: break
sum += term
n += 2
return sum
演示:
>>> func(math.pi / 6)
0.4999999918690232
按预期给出 0.5,精度为 10e-6
注:该系列是众所周知的sin
功能开发...
推荐阅读
- css - CSS-Grid: 网格模板行: minmax(0, min-content); 为什么这行得通?
- javascript - 获取带有浏览器历史记录的 id/params 以显示特定的 ID 详细信息 - React Hooks
- sql - 如何在 oracle 中将 RECORD 类型参数转换为 XML 或 json?
- python - 如何在 Mac OS Big Sur/Jupyter 笔记本上运行 GPU
- css - 修复了 iOS 设备上书写模式被切断的元素
- amazon-web-services - CloudFormation 模板中要纠正的错误
- groovy - Jenkins groovy writeYaml方法:写入yaml文件时用三引号替换单引号
- python - 如何使用 csv.DictWriter 跳过空单元格
- excel - waitforsingleobject 在 64 位 vba 上不起作用
- javascript - 全局字体系列不适用于按钮