[討論] trapzoidal

看板MATLAB作者 (賄選王ㄈ仔)時間13年前 (2013/04/15 12:50), 編輯推噓5(5010)
留言15則, 6人參與, 最新討論串1/1
小弟我上課作業要用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

04/15 12:53, , 1F
f(0) = NaN
04/15 12:53, 1F

04/15 12:55, , 2F
恩,謝謝
04/15 12:55, 2F

04/15 12:56, , 3F
可是作業要的下限就是零..我該怎麼改..
04/15 12:56, 3F

04/15 13:54, , 4F
x=0 這個sin(x)/x不就等於1嗎
04/15 13:54, 4F

04/15 14:40, , 5F
電腦很笨的......
04/15 14:40, 5F

04/15 14:40, , 6F
取一個小值就可以了。
04/15 14:40, 6F

04/15 15:16, , 7F
了解了,我會在作業上註明,感謝
04/15 15:16, 7F

04/15 16:39, , 8F
不然就加一個判斷式 如果分子分母都為零 分子分母都先微分
04/15 16:39, 8F

04/17 05:34, , 9F
4F錯的 sin(0)/0並不是1
04/17 05:34, 9F

04/17 05:35, , 10F
把0改成eps, 記得注意正負號
04/17 05:35, 10F

04/17 12:26, , 11F
痾 樓上, 就算我帶sin(eps)/eps 答案也是1
04/17 12:26, 11F

04/18 20:42, , 12F
matlab有內建sinc函數阿= =
04/18 20:42, 12F

04/18 20:43, , 13F
就算沒有內建 你自己把它定義成sinc這樣的連續函數不就好
04/18 20:43, 13F

04/21 10:11, , 14F
是阿 所以sin(eps)/eps才是1 sin(0)/0不是1阿
04/21 10:11, 14F

04/21 10:12, , 15F
MATLAB會給你nan如果你算sin(0)/0
04/21 10:12, 15F
文章代碼(AID): #1HQuSK1P (MATLAB)
文章代碼(AID): #1HQuSK1P (MATLAB)