簡體   English   中英

Python:使用泰勒級數逼近ln(x)

[英]Python: Approximating ln(x) using Taylor Series

我正在嘗試在十位數的精度內建立ln(1.9)的近似值(so .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位數字,如何才能停止迭代呢?

謝謝您的幫助!

原理是;

  • 查看每個迭代為結果增加多少。
  • 當差異小於1e-10時停止。

您正在使用以下公式,正確;

ln公式

(請注意有效范圍!)

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

測試:

In [2]: print(taylor_two())
0.6418538862240631

In [3]: print('{:.10f}'.format(taylor_two()))
0.6418538862

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM