作者fuxkyou (賄選王ㄈ仔)
看板MATLAB
標題[討論] trapzoidal
時間Mon Apr 15 12:50:24 2013
小弟我上課作業要用trapzoidal來算積分
計算∫sin(x)/x 上下限是1和0
打出來的M.file
function I=trap(f,a,b,n)
x=a;
h=(b-a)/n;
s=feval(f,a);
for j=1:n-1
x=x+h;
s=s+2*feval(f,x);
end
s=s+2*feval(f,b);
I=(b-a)*s/(2*n);
在指令欄輸入
f=@(x)sin(x)/x
trap(f,0,1,4)
然後會出現
ans =
NaN
我不確定是我哪邊打錯了,我把function改成x或x^2/2等等比較簡單的函數,
都有辦法求解,
請問有神手能幫我看一下嗎?
感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.124.45.196
1F:推 sunev:f(0) = NaN 04/15 12:53
2F:→ fuxkyou:恩,謝謝 04/15 12:55
3F:→ fuxkyou:可是作業要的下限就是零..我該怎麼改.. 04/15 12:56
4F:推 peter0318:x=0 這個sin(x)/x不就等於1嗎 04/15 13:54
5F:推 sunev:電腦很笨的...... 04/15 14:40
6F:→ sunev:取一個小值就可以了。 04/15 14:40
7F:→ fuxkyou:了解了,我會在作業上註明,感謝 04/15 15:16
8F:→ rex0707:不然就加一個判斷式 如果分子分母都為零 分子分母都先微分 04/15 16:39
9F:→ jatj:4F錯的 sin(0)/0並不是1 04/17 05:34
10F:→ jatj:把0改成eps, 記得注意正負號 04/17 05:35
11F:推 peter0318:痾 樓上, 就算我帶sin(eps)/eps 答案也是1 04/17 12:26
12F:推 profyang:matlab有內建sinc函數阿= = 04/18 20:42
13F:→ profyang:就算沒有內建 你自己把它定義成sinc這樣的連續函數不就好 04/18 20:43
14F:→ jatj:是阿 所以sin(eps)/eps才是1 sin(0)/0不是1阿 04/21 10:11
15F:→ jatj:MATLAB會給你nan如果你算sin(0)/0 04/21 10:12