我已經修改了罪的代碼(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的東西。
有人可以幫我解決這個問題嗎?非常感謝
我已經修改了罪的代碼(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的東西。
有人可以幫我解決這個問題嗎?非常感謝
您必須在代碼中更改兩件事才能獲得正確的泰勒級數展開式。這是代碼。注意這些變化。
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
非常感謝這:)以及另一個問題,你怎麼能做到這一點與零轉換爲矢量? – user162343
Parag,你應該能夠通過存儲previous_value ='factorial(ints(n + 1))'來節省一些計算時間,而不是重新計算,只需用'ints(n + 1)*(ints)乘以'previous_value' (n + 1)-1)' –
@CarlWitthoft是的。我只是試圖在他的代碼中做最小的修改。 –
@ user162343 - 'cosx = 0;',not'cosx = zeros(size(v));'。您正在計算'cos(x)'的泰勒級數近似值,所以您正逐步增加遞增的項。 – rayryeng
所以你可以發佈正確的代碼;) – user162343