作者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