中易网

MATLABODE45输入输出问题

答案:2  悬赏:70  
解决时间 2021-11-08 20:50
  • 提问者网友:霸道又专情♚
  • 2021-11-08 07:50
function main
clear
clc
[l,y]=ode45(@odefun,0:1:5,1)

function dydl=odefun(l,y)
a=1
r=y^0.5
dydl=a*y

(1)odefun中那个a的值在每一次调用的时候我都要给他不同的值,请问可不可以在调用该函数的时候通过参数传递实现?
(2)ode输出的时候只有l和y的值,我可不可可以让ode45中的r的值也和y一起输出出来?
非常感谢各位的宝贵意见。
最佳答案
  • 二级知识专家网友:duile
  • 2021-11-08 08:17
(1)可以用全局变量
(2)可以,这样定义:
%r=dy(1)
function dydl=odefun(l,y)
globe a;
dydl(:,1)=y^0.5;
dydl(:,2)=a*y;
全部回答
  • 1楼网友:悲观垃圾
  • 2021-11-08 09:18
在matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function dx=myfun(t,x) dx(1)=20/7*x(1)-x(2)*x(3); dx(2)=-10*x(2)+x(1)*x(3); dx(3)=-4*x(3)+x(1)*x(2); dx=dx(:); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 在matlab下面输入: x0=[3,-4,2]; t0=0.001:0.001:20; [t,x]=ode45('myfun',[0.001,20],x0); %ode45会自动调整步长 plot(t,x) legend('x','y','z')
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息