這是我的數值方法課程。我非常努力地理解MATLAB及其語法,但我是100%自學的,所以如果我的嘗試看起來很荒謬,請耐心等待。製作對矢量輸入敏感的功能
我寫了這個非常簡單的函數逼近查到
function e= calcEulerLimit(n)
e = (1 + 1./n).^n;
end
這是使用限制N於無窮大的方法數e的「基本」的定義。對於MATLAB我定義了以下向量(當我在後面談到N,我總是提及這一載體n
)
n=[1:1:10]=[ 1 2 3 4 5 6 7 8 9 10 ]
,輸出的作品如我所料就好了,這是對矢量敏感當我在MATLAB中調用我的函數時輸入n
。
>> calcEulerlimit(n)
ans =
2.0000 2.2500 2.3704 2.4414 2.4883 2.5216 2.5465 2.5658 2.5812 2.5937
現在我想要做同樣如上泰勒的方法,使用無限求和公式來描述E,這裏是我卡住了,下面簡單的代碼工作:
function e = calcEulerSum(n)
e=1; % base-case, start variable
for i=1:1:n % for loop with step size one
e=e+1/factorial(i)
end
end
但是當我想輸入一個向量,例如n
來計算所有變量時,這個輸入當然不起作用。
我試圖沿線與其他東西循環,while循環,但while循環似乎從未終止:
function e = calcEulerSum3(n)
while n
e=1;
e = e + 1./cumprod(n);
end
end
使用cumprod(n)
讓我向量的每一列元素的階乘值n
。
謝謝您的回答,我會閱讀有關cumsum, 到目前爲止,我在 對於i = N,E = 1,E = E + 1./factorial(n); 這對我來說似乎很清楚,但我得到的輸出是2,1.5,1.667,1.0417 所以它看起來像是'工程'除了添加部分。 – Spaced
@Spaced:'n'是一個向量。如果你正在使用'for'循環,你可能需要索引它:'n(i)'。而且你可能還需要將輸出保存在一個向量中:'e(i)'。 – horchler
看到我上面的僞代碼示例。輸出'e'將成爲一個向量,對吧?你能計算'e'的第一個元素嗎?給出第一個元素,你現在可以計算第二個元素('i = 2')嗎?依此類推...您可以在'for'循環中執行此操作,然後您可以使用'cumsum'在一行代碼中看到它是如何實現的。 – horchler