我在 MATLAB 中工作,但我对微分方程系统有疑问。我的系统是dvdt = (-2*T)-4*v
并且dTdt = 6*T+v
我想使用四阶的 Runge-Kutta 来解决它。我写了以下代码:
如果我只运行函数odefun
,我的代码就可以工作!但是如果我运行完整的程序,我的代码就不起作用:
clear all
yy=@(t,y)[dvdt;dTdt]
[t,y]= ode45(@(t,y)yy,[0 1.5],[1 1/2 ]);
function res = odefun(t , y )
% i define two variable i will use: v and TT
v = y(1,:);
T = y(2,:);
% i define the two partial derivative:
res(1,:) = dvdt
res(2,:) = dTdt
dvdt = (-2*T)-4*v
dTdt = 6*T+v;
end
这是我的结果。我不知道要写一个正确长度的向量:
使用 odearguments 时出错(第 95 行)@(T,Y)YY 返回长度为 1 的向量,但初始条件向量的长度为 2。@(T,Y)YY 返回的向量和初始条件向量必须具有相同数量的元素。
ode45 错误(第 115 行)
sys_ode 中的错误(第 4 行)[t,y]= ode45(@(t,y)yy,[0 1.5],[1 1/2 ]);