MATLAB编程-简介
完成条件
微分方程的阶(Order of Differential Equations)
微分方程是包含某个函数及其一个或多个导数的方程,常用于描述变化过程。
注意:导数的形式为
\frac{dy}{dx} ]
微分方程的“阶”
微分方程的阶(Order)是指其中所出现的最高阶导数的阶数。
常微分方程(ODE)是只涉及一个自变量的导数的微分方程,目标通常是求解使该方程成立的函数。
ODE 的基本类型
-
一阶微分方程(1st Order ODE)
-
二阶微分方程(2nd Order ODE)
一阶微分方程
一阶方程仅含一阶导数,如:
其中 和 为变量。
二阶微分方程
当出现的最高阶导数是二阶导数时,该方程为二阶微分方程,例如:
使用 MATLAB 中的 dsolve
求解微分方程
示例:
解方程:
使用 MATLAB 命令:
>> s = dsolve('D3y+2*D2y+5*Dy+4*y=5*x', 'y(0)=1', 'Dy(0)=3')
输出结果 s
将包含微分方程的解析解。
MATLAB 中常用的 ODE 求解器
求解器 | 精度 | 适用场景说明 |
---|---|---|
ode45 |
中等 | 适用于大多数常规问题 |
ode23 |
较低 | 对于容忍误差较大的问题更高效 |
ode113 |
低至高 | 适合误差要求高或函数计算量大的情况 |
ODE 实例:存款利息增长
有 $10,000 存入银行定期账户,年利率为 2%。构造微分方程如下:
微分方程模型:
对 (1) 积分得到:
用 MATLAB dsolve
实现:
>> syms M(t)
>> eqn = diff(M, t) == 0.02*M;
>> S = dsolve(eqn, M(0) == 10000)
S =
10000*exp(t/50)
使用 ode45
数值解法
函数原型:
[t, y] = ode45(odefun, tspan, y0)
参数说明:
-
odefun
:微分函数,可用匿名函数表示; -
tspan
:积分区间[t0, tf]
; -
y0
:初始条件; -
t
:返回的时间点; -
y
:返回的解值。
示例:模拟银行存款增长
function [T, M] = money_in_bank(R)
% 初始金额
M0 = 1000;
% 利率
R = 2; % 单位:%
% 时间范围(年)
T0 = 1;
Tf = 30;
% 使用解析表达式(从 dsolve 得到的)
S = @(T, M) 0.02*M;
% 数值求解
[T, M] = ode45(S, [T0, Tf], M0);
% 绘图
plot(T, M, '-o')
legend('M(t)')
xlabel('Years')
ylabel('Money in Bank')
end
参考资料
如需我帮你推导某个具体 ODE 或写出 MATLAB 解法,也可以告诉我。
最后修改: 2025年04月16日 星期三 11:41