Python:用泰勒级数近似ln(x)

2024-09-29 19:28:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图建立一个ln(1.9)的近似值,精度在10位数以内(所以是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)

我现在要做的是重新格式化它,让它告诉我,将ln(1.9)近似到10位数所需的项数,让它显示序列给出的值,并显示错误。在

我假设我需要以某种方式将我的函数构建到for循环中,但是我如何让它在达到所需的10位数时停止迭代呢?在

谢谢你的帮助!在


Tags: 代码forreturndef精度functionprintln
1条回答
网友
1楼 · 发布于 2024-09-29 19:28:15

原则是:

  • 看看每一次迭代对结果增加了多少。在
  • 当差值小于1e-10时停止。在

你用的是下面的公式,对吧

ln formula

(注意有效范围!)在

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

测试:

^{pr2}$

相关问题 更多 >

    热门问题