许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  常微分方程初值问题线性多步法的MATLAB实现

常微分方程初值问题线性多步法的MATLAB实现

阅读数 7
点赞 0
article_banner

Adams方法:

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

matlab 代码

function chap1_adams_method
% test the Adams interpolation method and the Adams extrapolation method for ODE IVP
% /   u' = f(t,u),
% \   u(0) = u0.

% foundate = '2015-3-8';
% chgedate = '2020-04-22';
% by Zhang, Xuping

u0 = 1;
T = 2;
h = 0.1;
N = T/h;
t = 0:h:T;
solu = exact1(t);

f = @f1;
u_inter_2s = adams_inter_2steps(f,u0,t,h,N);
u_extra_2s = adams_extra_2steps(f,u0,t,h,N);
figure(1)
plot(t,u_inter_2s,'*',t,u_extra_2s,'o',t,solu,'r')
legend('Adams-inter-2s','Adams-extra-2s','Exact-soln')

u_inter_3s = adams_inter_3steps(f,u0,t,h,N);
u_extra_3s = adams_extra_3steps(f,u0,t,h,N);
figure(2)
plot(t,u_inter_3s,'*',t,u_extra_3s,'o',t,solu,'r')
legend('Adams-inter-3s','Adams-extra-3s','Exact-soln')

end
% ----------------------------- subroutines -------------------------------
function u = adams_inter_2steps(f,u0,t,h,N)
u = zeros(N+1,1);
u(1) = u0;
% u(2) = u(1) + h*f(t(1),u(1));
u(2) = exact1(1*h);
eps_in = 1e-6;
K_in = 6;
for n = 2:N
    f_nm1 = f(t(n-1),u(n-1));
    f_n = f(t(n),u(n));
    s1 = u(n);
    du = 1;
    k = 1;
    while abs(du)>eps_in & k<K_in
        s2 = u(n) + h*( 5*f(t(n+1),s1) + 8*f_n - f_nm1 )/12;
        du = s2 - s1;
        s1 = s2;
        k = k + 1;
    end
    u(n+1) = s2;
end
end

function u = adams_inter_3steps(f,u0,t,h,N)
u = zeros(N+1,1);
u(1) = u0;
% u(2) = u(1) + h*f
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空