2015-08-24 27 views
0

我已經修改了罪的代碼(X)從奧托的書拿到COS(x)和我做了以下內容:此代碼不給我COS(X)在Matlab

v=0.:0.25:0.75; 
cosx=zeros(size(v)); 
N=10; 
range=0:N; 
ints=2*range; 

for n=range 
    cosx=cosx + (-1)^n*v.^ints(n)/factorial(ints(n)); 
end 

但這到處都是0的東西。

有人可以幫我解決這個問題嗎?非常感謝

+2

@ user162343 - 'cosx = 0;',not'cosx = zeros(size(v));'。您正在計算'cos(x)'的泰勒級數近似值,所以您正逐步增加遞增的項。 – rayryeng

+0

所以你可以發佈正確的代碼;) – user162343

回答

3

您必須在代碼中更改兩件事才能獲得正確的泰勒級數展開式。這是代碼。注意這些變化。

v=0:0.25:0.75; 
cosx=zeros(1,size(v,2)); %Now, it's a vector 
N=10; 
range=0:N; 
ints=2*range; 

for n=range 
    cosx=cosx + (-1)^n*v.^ints(n+1)/factorial(ints(n+1)); % replace n by n+1,   
                 % MATLAB indexing starts from 1. 
end 
+0

非常感謝這:)以及另一個問題,你怎麼能做到這一點與零轉換爲矢量? – user162343

+0

Parag,你應該能夠通過存儲previous_value ='factorial(ints(n + 1))'來節省一些計算時間,而不是重新計算,只需用'ints(n + 1)*(ints)乘以'previous_value' (n + 1)-1)' –

+0

@CarlWitthoft是的。我只是試圖在他的代碼中做最小的修改。 –