matlab求微分方程组在matalb自带的ode45实例中(即help),function dy = rigid(t,y)dy = zeros(3,1); % a column vectordy(1) = y(2)*y(3);dy(2) = -y(1)*y(3);dy(3) = -0.51*y(1)*y(2);options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);[T,

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 22:27:11

matlab求微分方程组在matalb自带的ode45实例中(即help),function dy = rigid(t,y)dy = zeros(3,1); % a column vectordy(1) = y(2)*y(3);dy(2) = -y(1)*y(3);dy(3) = -0.51*y(1)*y(2);options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);[T,
matlab求微分方程组
在matalb自带的ode45实例中(即help),
function dy = rigid(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);
options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);
[T,Y] = ode45(@rigid,[0 12],[0 1 1],options);
plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'.')
运行不了,系统提示,y is undefined,该如何解决呢?

matlab求微分方程组在matalb自带的ode45实例中(即help),function dy = rigid(t,y)dy = zeros(3,1); % a column vectordy(1) = y(2)*y(3);dy(2) = -y(1)*y(3);dy(3) = -0.51*y(1)*y(2);options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);[T,
代码分成两部分,下面这部分保存成rigid.m文件,供后面的那部分调用:
function dy = rigid(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);

 
另外一部分可以保存成脚本文件之后运行(文件名任意,但要符合MATLAB文件命名规范),也可以直接在命令窗口里运行:
options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);
[T,Y] = ode45(@rigid,[0 12],[0 1 1],options);
plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'.')