微分方程的解法在 MATLAB 里算是标配了,适合搞科研或者工程建模的同学。用起来最顺手的还是 ode45
,稳定还好上手。你只要把微分方程写进一个函数文件,比如dxdt.m
,再在主脚本里调一下就行了,响应也快,代码也简单。嗯,还有一个完整的例子打包好了,叫dxdt_solve
,里面包括怎么写方程、怎么调ode45
,还有怎么画图结果,比较适合刚上手或者想回顾用法的你。
微分方程像dy/dt = f(t, y)
这种的常见,不管是做电路仿真、生物种群建模,还是控制系统设计,都离不开这类模型。你就把它写进dxdt.m
,函数结构也挺直观的:
function dydt = dxdt(t, y)
dydt = f(t, y); % 根据你自己的系统模型写这个表达式
end
主脚本里用ode45
这样调:
addpath('你的路径');
[t, y] = ode45(@dxdt, [0 10], [1]); % 比如初值是 1,从 t=0 到 10
想要结果更精细点?可以设定精度:
options = odeset('RelTol',1e-6,'AbsTol',1e-9);
[t, y] = ode45(@dxdt, [0 10], [1], options);
哦,别忘了画图看看效果,直接用plot(t, y)
就行:
plot(t, y);
xlabel('Time');
ylabel('Solution');
title('解随时间变化');
如果你刚学 MATLAB,或者想快速搭个模型验证一下思路,这套流程还蛮实用的。附带的Differential eq solver example.zip
可以直接跑一遍看看效果。