(1)这段程序分为两个部分:第一部分前面四行;第二部分从第五行到最后
(2)在matlab界面点击新建——函数,然后把前面四行粘进去,关闭编辑器页面,软件提示是否保存?将文件保存为differential.m
(3)在matlab界面点击新建——函数,然后把后面内容粘进去,关闭编辑器页面,软件提示是否保存?将文件保存为XXX.m
(4)注意将differential.m和XXX.m放在同一个文件夹,例如都放在”Matlab学习“
(5)将你打算调用的M文件所在的目录选为当前工作目录。(我这里Untitled4.m为主程序文件,即XXX.m)
(6)右击文件XXX.m,点击”运行“,结果就出来了
这个代码有两个错误:
在定义function方程代码中:
楼主原:dxdt=[x(1)*(1-x(1))*(2*x(3)+1x(2)*(1-x(2))*(3*x(3)+1x(3)*(1-x(3))*(-1*x(1)-x(2)-x(1)*x(2)+4)]
改正后:dxdt=[x(1)*(1-x(1))*(2*x(3)+1)x(2)*(1-x(2))*(3*x(3)+1)x(3)*(1-x(3))*(-1*x(1)-x(2)-x(1)*x(2)+4)]
错误原因:在前两个分号‘;’前,缺少右括号‘)’
function的x需要传递三个参数想x(1) x(2) x(3),而楼主在主程序的调用ode45函数时,只传递了两个参数i和j,可引入变量k,通过x-y-z为例,改成如下(修改部分已经加粗),其它部分修改相同:
%z-y-x
for i=0:0.1:1
for j=0:0.1:1
for k=0:0.1:1
[T,Y]=ode45('differential',[0 5],[i j k])
figure (1)
grid on
plot3(Y(:,1),Y(:,2),Y(:,3))
hold on
end
end
end
应该是微分方程的不同initial condition下的解,如果是微分方程的数值解法google上matlab的code到处都是,而且matlab自带多个built-in微分方程解法,ode113,ode 45等等欢迎分享,转载请注明来源:内存溢出
评论列表(0条)