当前位置: 首页 > news >正文

matlab线性多部法求常微分方程数值解

用Adamas内差二步方法,内差三步方法,外差二步方法,外差三步方法这四种方法计算。
在这里插入图片描述
在这里插入图片描述
中k为1和2.

在这里插入图片描述
k为2和3

代码

function chap1_adams_methodu0 = 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')endfunction 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:Nf_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_ins2 = 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
endfunction u = adams_inter_3steps(f, u0,t,h,N)
u = zeros(N+1,1);
u(1) = u0;
% u(2) = u(1) + h*f(t(1), u(1)) ;
% u(3) = u(2) + h*f(t(2), u(2)) ;
u(2) = exact1(1*h);
u(3) = exact1(2*h);
eps_in = 1e-6;
K_in = 6;
for n = 3:Nf_nm2 = f(t(n-2), u(n-2));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_ins2 = u(n)+ h*(9*f(t(n+1),s1) + 19*f_n - 5*f_nm1 + f_nm2 ) /24;du = s2 - s1;s1 = s2;
k = k + 1;end
u(n+1) = s2;
end
endfunction u = adams_extra_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(h);
for n = 2:N
f_nm1 = f(t(n-1), u(n-1));
f_n = f(t(n), u(n));
u(n+1) = u(n)+ h*( 3*f_n - f_nm1 )/2;
end
endfunction u = adams_extra_3steps(f, u0,t, h,N)
u = zeros(N+1,1);
u(1) = u0;
% u(2) = u(1) + h*f(t(1), u(1)) ;
% u(3) = u(2) + h*f(t(2), u(2));
u(2) = exact1(1*h);
u(3) = exact1(2*h);
eps_in = 1e-6;
for n = 3:N
f_nm2 = f(t(n-2), u(n-2));
f_nm1 = f(t(n-1), u(n-1));
f_n = f(t(n), u(n));
u(n+1) = u(n)+ h*( 23*f_n - 16*f_nm1 + 5*f_nm2 )/12;
end
endfunction f = f1(t, u)
f = -5*u ;
endfunction f = exact1(t)
f = exp(-5*t);
end

结果:
在这里插入图片描述
在这里插入图片描述

相关文章:

  • 龙芯LS2K0300久久派上手体验
  • 详解 HBase 的安装部署及命令行操作
  • 2024前端面试准备5-React相关
  • C++ 网络套接字编程 tcp udp
  • 金鸣识别系统:PDF转Excel的高效利器
  • 前端:鼠标点击实现高亮特效
  • 网络层 IP协议【计算机网络】【协议格式 || 分片 || 网段划分 || 子网掩码】
  • Linux-curl命令详解
  • Mac 使用 Homebrew 安装 Python3
  • nvm安装和使用,windows
  • Perl语言入门学习
  • 进阶篇06——锁
  • Java应用打包成Docker镜像
  • 【深度学习驱动流体力学】OpenFOAM目录流体力学求解器汇总介绍
  • Python学习笔记14 -- 小项目 - 简易机器人
  • 2017前端实习生面试总结
  • CentOS 7 修改主机名
  • ComponentOne 2017 V2版本正式发布
  • create-react-app做的留言板
  • Java|序列化异常StreamCorruptedException的解决方法
  • java小心机(3)| 浅析finalize()
  • js对象的深浅拷贝
  • miaov-React 最佳入门
  • MySQL的数据类型
  • Sass Day-01
  • 百度地图API标注+时间轴组件
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 强力优化Rancher k8s中国区的使用体验
  • 如何用vue打造一个移动端音乐播放器
  • 什么是Javascript函数节流?
  • 微信支付JSAPI,实测!终极方案
  • 为什么要用IPython/Jupyter?
  • 7行Python代码的人脸识别
  • (1)无线电失控保护(二)
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (Charles)如何抓取手机http的报文
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (二)linux使用docker容器运行mysql
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (五)关系数据库标准语言SQL
  • (一)基于IDEA的JAVA基础12
  • (转)jQuery 基础
  • ***原理与防范
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .htaccess配置重写url引擎
  • .Net 8.0 新的变化
  • .NET Framework .NET Core与 .NET 的区别
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .NET开源、简单、实用的数据库文档生成工具
  • .NET开源纪元:穿越封闭的迷雾,拥抱开放的星辰