[已解决] 复合梯形公式,是inline函数这里错了吗?复合梯形公式以及其求误差的结果都是NaN

[复制链接]
dccf1234 发表于 2021-1-8 16:43:37
本帖最后由 dccf1234 于 2021-1-8 21:54 编辑

%matrap .m
function s=matrap(fun,a,b,n)
h=(b-a)/n;
s=0;
for k=1:n-1
x=a+h*k;
s=s+feval(fun,x);
end
s=h/2*(feval(fun,a)+feval(fun,b)+2*s);

format long
fun=inline('sin(x)./x');
matrap(fun,0,1,32)

最佳答案


20141303 发表于 2021-1-8 22:04:31
仅供参考


  1. format long
  2. fun=inline('sin(x)./x');
  3. matrap(fun,0+eps,1,32)

  4. %matrap .m
  5. function s=matrap(fun,a,b,n)
  6. h=(b-a)/n;
  7. s=0;
  8. for k=1:n-1
  9. x=a+h*k;a
  10. s=s+feval(fun,x);
  11. end
  12. s=h/2*(feval(fun,a)+feval(fun,b)+2*s);
  13. end
复制代码
回复此楼

2 条回复


20141303 发表于 2021-1-8 22:04:31
仅供参考


  1. format long
  2. fun=inline('sin(x)./x');
  3. matrap(fun,0+eps,1,32)

  4. %matrap .m
  5. function s=matrap(fun,a,b,n)
  6. h=(b-a)/n;
  7. s=0;
  8. for k=1:n-1
  9. x=a+h*k;a
  10. s=s+feval(fun,x);
  11. end
  12. s=h/2*(feval(fun,a)+feval(fun,b)+2*s);
  13. end
复制代码
回复此楼

dccf1234 发表于 2021-1-8 22:35:40
本帖最后由 dccf1234 于 2021-1-8 22:39 编辑

我想到原因了
刚开始没注意到
积分中,被积函数在x=0点函数
值为1,而编程中函数定义f(x)=sin(x) /x, 当x=0时,程序只能得
到结果0/0=NaN (无穷大),导致后面积分计算算法完全失去意义

您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表