總網頁瀏覽量

2021年3月8日 星期一

用Python跑出來的數列,值怎麼會不一樣呢?(2021.3.8)

 






這是一題很單純的證明題

但我先用python跑看看它的值

很明顯地   它是遞增  證明它有上限4

但是呢!!!

我用python寫

def a(n, fib = [2]): #a_0=2

    if n >= len(fib):

        for i in range(len(fib), n + 1):

            fib.append(fib[i-1]*(4*n*n)/(2*n-1)/(2*n+1))

    return fib[n]

print(a(0),a(1),a(2),a(3))

2   2.6666666666666665   2.844444444444444   2.9257142857142853

基本上跑出來沒問題

但...

如果我個別找值,如找a(2), a(3)

值竟然變成2.2755555555555556   2.3405714285714287

太久沒寫Python   這到底是那裡的問題??

如果用最笨的方法來寫,答案卻是對的

可見是程式的問題

n = 3

sum = 2

for i in range(1, n + 1):

    sum *= (4*i*i)/(2*i-1)/(2*i+1)

print(sum)

=================================

找到錯誤了

fib.append(fib[i-1]*(4*n*n)/(2*n-1)/(2*n+1))

上頭的n要改成i

犯這種錯誤  可見功力退步了

沒有留言:

張貼留言