Matlab(1)使用ode45求解常微分方程

在工程和计算中常常需要求解微分方程,但微分方程的解析解通常很难得到,所以一种退而求其次的方法就是求其数值解。这里是使用Matlab中的ode45求解常微分方程数值解的简单说明。具体可使用"help ode45"命令查看它的帮助文档。

ode45求非刚性微分方程的解,中阶方法。使用语法为 [T,Y] = solver(odefun,tspan,y0)。

下面举例说明:

假如我们要求解如下方程组,它描述的是无外力作用下的刚体运动。


首先创建一个函数文件,文件名为odefun.m,代码如下:

% odefun.m
function dy = odefun(t,y)
dy = zeros(3,1);    % a column vector
dy(1) = y(2) * y(3);
dy(2) = -y(1) * y(3);
dy(3) = -0.51 * y(1) * y(2);
end

然后创建命令文件,文件名为testode45.m,代码如下:

% testode45.m
%-----------------------------------------------------
% 清空所有变量
clear
% 清空屏幕
clc

% 时间跨度取0-12,可以空格分隔,也可以用逗号分隔
tspan = [0,12];
% 初始值
y0 = [0,1,1];
% 调用语句
[T,Y] = ode45( @odefun, tspan, y0 );
% 绘图
plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'.')
legend('x','y','z')

最后在命令行窗口使用命令testode45,就可以得到所求方程的图像

testode45
图像为


参考文献:

【1】Matlab中ode45的参考页


作者:贾思特

日期:2018-7-8

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值