看板 MATLAB 關於我們 聯絡資訊
小弟我上課作業要用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
sunev:f(0) = NaN 04/15 12:53
fuxkyou:恩,謝謝 04/15 12:55
fuxkyou:可是作業要的下限就是零..我該怎麼改.. 04/15 12:56
peter0318:x=0 這個sin(x)/x不就等於1嗎 04/15 13:54
sunev:電腦很笨的...... 04/15 14:40
sunev:取一個小值就可以了。 04/15 14:40
fuxkyou:了解了,我會在作業上註明,感謝 04/15 15:16
rex0707:不然就加一個判斷式 如果分子分母都為零 分子分母都先微分 04/15 16:39
jatj:4F錯的 sin(0)/0並不是1 04/17 05:34
jatj:把0改成eps, 記得注意正負號 04/17 05:35
peter0318:痾 樓上, 就算我帶sin(eps)/eps 答案也是1 04/17 12:26
profyang:matlab有內建sinc函數阿= = 04/18 20:42
profyang:就算沒有內建 你自己把它定義成sinc這樣的連續函數不就好 04/18 20:43
jatj:是阿 所以sin(eps)/eps才是1 sin(0)/0不是1阿 04/21 10:11
jatj:MATLAB會給你nan如果你算sin(0)/0 04/21 10:12