MATLAB实现Newton Cotes求积

在这里插入图片描述
在这里插入图片描述

clear
syms t x;
 
f(x)=input('请输入函数f(x)=');
a=input('请输入区间下限:  ');
b=input('请输入区间上限:  ');
n=input('请输入n(即将区间几等分): ');
h=(b-a)/n;
 
for i=1:n+1   %将区间n等分后,计算各节点的横坐标
    xdata(i)=a+(i-1)*h;
end
ydata=subs(f,'x',xdata);   
 
for k=1:n+1    %计算Cotes系数
    l=1;
    for j=1:n+1
        if(j~=k)
            l=l*(t-j+1)/(k-j);
        end
    end
    s(k)=int(l,0,n)/n;
end
 
yy1=sum(s.*ydata);
yy2=int(f,a,b);    %直接用matlab求积
disp('精确值');
vpa(yy2,8)
 
If=(b-a)*yy1;   %用Newton_Cptes求积公式求得
disp('用Newton_Cptes求积公式求得:');
vpa(If,8)
 
wucha=yy2-If;   %计算误差
 
if (wucha<0)
    wucha=-wucha;
end
 
disp('误差为: ')
vpa(wucha,8)

在这里插入图片描述
将区间2等分,即为梯形公式公式,n取1
在这里插入图片描述
显然误差相对较大

将区间3等分,即Simpson公式,n取2
在这里插入图片描述

  • 18
    点赞
  • 117
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值