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一起输出出来?
非常感谢各位的宝贵意见。
MATLABODE45输入输出问题
答案:2 悬赏:70
解决时间 2021-11-08 20:50
- 提问者网友:霸道又专情♚
- 2021-11-08 07:50
最佳答案
- 二级知识专家网友: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;
(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')
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息