您好,我對以下函數的結果有疑問 輸入是x的行向量,我們使用∑_(n=0)^(n=50)▒(x^n)/n!
(即從n = 0到n = 50的求和使用輸出計算的exp值x^n)/n!
) 循環將終止或者當n達到50或(x^n)/n!
< 0.01查找exp
function [summ] = ExpFunction(x)
//有一個循環迭代。
有兩個版本 1)我們編寫一個if如果看看值(x^n)/n!
是否> = 0.01。如果是的話就把它加到summ上。 2)首先將它添加到summ,然後檢查(x^n)/n!
是否> = 0.01。如果沒有,則終止該程序。
我的問題是,爲什麼這兩個版本產生不同的結果和第二個版本似乎產生更好的結果(即越接近EXP(X))
謝謝
版本1:
function [result] = Exp(x)
result = 0;
a = 0;
n = 0;
while(n <= 50)
{
a = (x.^n)/factorial(n) %% The factorial function is self written have have been checked.
if(abs(a) >= 0.01)
result = result + a;
else
break;
n = n + 1;
}
第二個版本是做result = result + a;在檢查絕對值之前(a)> = 0.01
版本1和2似乎在做不同的事情。版本2增加了一個額外的術語,其中'(x^n)/ n! <0.01「,而版本1沒有。你能再次檢查你的邏輯嗎? –
但版本2可能會添加小於0.01的風險。例如,對於x = 2,在n = 8時小於0.01。使用版本1:我們會避免總結 – Kenlucius
發佈您的所有代碼,謝謝。你的問題是誤導 –