Big*_*D4J 3 python taylor-series numerical-integration
我正在尝试建立 ln(1.9) 的近似值,精度在十位数字之内(即 .641853861)。
我正在使用一个从 ln[(1 + x)/(1 - x)] 构建的简单函数
到目前为止,这是我的代码:
# function for ln[(1 + x)/(1 - x)]
def taylor_two(r, n):
x = 0.9 / 2.9
i = 1
taySum = 0
while i <= n:
taySum += (pow(x,i))/(i)
i += 2
return 2 * taySum
print taylor_two(x, 12)
print taylor_two(x, 17)
Run Code Online (Sandbox Code Playgroud)
我现在需要做的是重新格式化它,以便它告诉我将 ln(1.9) 近似为上述 10 位数字所需的项数,让它显示级数给出的值,并显示错误。
我假设我需要以某种方式将我的函数构建到 for 循环中,但是如何让它在达到所需的 10 位数字后停止迭代?
感谢您的帮助!
原则是;
您正在使用以下公式,对吧;
(注意有效期!)
def taylor_two():
x = 1.9 - 1
i = 1
taySum = 0
while True:
addition = pow(-1,i+1)*pow(x,i)/i
if abs(addition) < 1e-10:
break
taySum += addition
# print('value: {}, addition: {}'.format(taySum, addition))
i += 1
return taySum
Run Code Online (Sandbox Code Playgroud)
测试:
In [2]: print(taylor_two())
0.6418538862240631
In [3]: print('{:.10f}'.format(taylor_two()))
0.6418538862
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5119 次 |
| 最近记录: |