我需要執行泰勒系列arctangent 50次。意思是arctan泰勒級數域[-1,1]之間的50個數字。我已經用手動用戶輸入測試了它,並且它工作正常,但是對於50個不同輸入的for循環,我在代碼中增加了0.01,並且它們的相應結果不成功。到目前爲止,我已經嘗試過所有我能想到的,我沒有想法。任何幫助,將不勝感激。圍繞Taylor系列的括號與另一個for循環有衝突嗎?我懷疑這是括號,但是當我嘗試修復它時沒有工作。Arctan泰勒系列在C
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
main (void) {
double n;
double x;
double tSeries=0.0;
double t2;
double t1;
for(n=0;n<=50;++n) {
for(x=-1;x<=1;x=x+0.01) {
t1=(pow(x,2*n+1))*pow(-1,n);
t2=t1/(2*n+1);
tSeries+=t2;
printf("arctan(%lf)=%lf\n",x,tSeries);
}
}
return 0;
}
你的描述看起來相當困惑,代碼沒有多大幫助。它看起來像'x'表示arctangent函數的參數,但該變量在程序過程中需要201個不同的值,而不是50.變量'n'在程序中需要51個值,但這似乎代表擴張中的一個術語。最好的情況是,你的嵌套是向後的 - 'x'上的循環應該是外部的,或者對我來說是這樣。 –
您應該使用函數來計算傳入的值的反正切值。然後安排一個循環來調用具有不同值的循環,並在循環中每次打印結果。這將避免這些問題。功能是你的朋友。 –
請注意,浮點數的重複增量通常是一個糟糕的主意。 「浮點數就像一小堆沙子;每次移動一個沙子,你就會失去一點沙子,並且會得到一點污垢。」(Kernighan&Plauger - 編程風格的元素,引用了這位多產的作者的匿名)。你可以使用'for(int i = -100; i <= 100; i ++){double x = i/100.0; ...}以獲得更好的準確性。您可以在塊的頂部(在任何版本的C中的'{')之後聲明變量,並且最好將變量的範圍減小到最小。 –