2018年5月12日 星期六

黎曼和題目

黎曼和題目
日期:2018/5/12
這是昨天學生問我的題目,雖然我不太清楚他們為什麼會問物理老師數學問題,也許是當時找不到數學老師。因為我很久沒有複習高中數學,其實當時並沒有想出來,後來才發現那其實是黎曼和的題目,於是我用 GeoGebra 做了以下的檔案(連結在此


  對於這樣的題目也可以寫程式去跑,雖然這樣有點暴力,但當作是驗算也不錯。我將 n 設定為 100000000,用 python 算出來的結果是 16.25000009500000,用 c 算出來的結果是 16.25000009500101,都很接近理論值 16.25,至於兩種程式語言算出來的結果為什會不一樣,這部分我就沒有深入研究。雖然數值很接近,但運算速度上差異很大,python 需要跑大約 4 分鐘,c 只需要 2.078 秒,這樣就不難理解為什麼有些人不喜歡用 python 跑大量的數運算。
python 程式碼

n = 1000000
total = 0
for i in range(1, n+1):
    total += (2*n + i)**3
print("{0:.14f}".format(total/n**4))

c 程式碼

#include <stdlib.h>
#include <stdio.h>
int main(void) {
    int i;
    double n = 100000000.0;
    double total = 0.0;
    double result = 0.0;
    for(i = 1; i <= n; i++) {
            total += (2*n + (double)i)*(2*n + (double)i)*(2*n + (double)i);
    }
    result = total / (n*n*n*n);
    printf("result = %.14f", result);
    return 0;
}

沒有留言:

張貼留言