查看单个帖子
旧 2019-12-03, 01:50   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
默认 如何在Matlab上存储ODE的所有解决方案以获取参数的多个值

我想为参数p多个值求解ODE,最重要的是,保存所有不同值的所有解决方案。

到现在为止,我一直在使用它:

p = -200:+1:300; time = 0:.01:10; time = [0 10]; y0 = [0 0 0 0 0 0 0 0]; y = NaN(length(time),length(y0),length(p)); for i=1:length(p) [t,y(:,:,i)] = ode45(@myode,time,y0,[],p(i)); end 但是它有t预定义,这是不应该的。

我看到的一个问题是,我无法将所有时间t所有y值和p所有值存储在矩阵中,因为我无法在循环前使用变量t 。如果我改用可变time ,则将无法利用ODE45集成,该集成使用自己的dt间隔,具体取决于它将遇到的非线性。有什么方法可以让length(time)打开以增加其尺寸,以便在其中存储每次的y值?

p = -200:+1:300; time = [0 10]; y0 = [0 0 0 0 0 0 0 0]; for i=1:length(p) [t,y] = ode45(@myode,time,y0,[],p(i)); end 我将不胜感激任何建议!



更多&回答...
poster 当前离线   回复时引用此帖