梯形公式matlab程序

function yp=funst(x,y)                      %先建立函数文件
yp=sec(x)+y*tan(x);     
function [t,y]=tixing(f,a,b,y0,N)           %定义梯形公式的函数
h=(b-a)/N;                                  %等距剖分
t=zeros(N+1,1);                             %离散点列向量
y=zeros(N+1,1);                             %数值解列向量
y(1)=y0;                                    %把初值y0附到数值解第一个节点位置
for i=1:N+1                                 %用循环给离散点赋值t(i)=a+(i-1)*h;
end
for j=2:N+1                                 %数值解第二个节点开始用迭代求得k=1;yc=[];                           %yc是校正时的解数组,k从1开始,迭代一次+1        yc(k)=y(j-1)+h*f(t(j-1),y(j-1));     %先用向前Euler公式进行预测while k>=1k=k+1;yc(k)=y(j-1)+h/2*(f(t(j-1),y(j-1))+f(t(j),yc(k-1))); %再用梯形公式校正if max(abs(yc(k)-yc(k-1)))<1e-6                      %结束校正的判断语句break;endendy(j)=yc(k);                        %校正完成后赋到数值解第j个节点
end    
end
[x,y]=tixing(@funst,0,1,pi/2,20);           %调用梯形公式的函数
yy=(x+pi/2)./cos(x);
plot(x,y,'o',x,yy,'-')                      %画图比较数值解与精确解
legend('数值解','精确解');


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部