如何拯救本地变量(在调用函数)
10视图(30天)
显示旧的评论
亲爱的所有,
我使用脚本风箱解决颂歌,然而,有一些变量(在计算函数@ODE_System)和我希望看到并保存他们的价值观以及解决方案;金宝搏官方网站
有什么方法可以做到这一点,提前谢谢你;
%这个脚本使用ODE15s解决模型
tspan = (0:1);
2.4 e-12 initial_moments =[20日,3 e-12 1.2737 e-13];
[tsol,时刻]= ode15s (@ODE_System、tspan initial_moments);
答案(2)
我J
2021年8月18日
编辑:我J
2021年8月18日
我不知道这样做有什么用。但鉴于你需要什么,你可以这样做:
函数dydt = vdp1 (t, y)
% VDP1评估μ= 1的范德堡尔常微分方程
%
%参见ODE113 ODE23,数值。
% Jacek Kierzenka和劳伦斯·f·Shampine
% 1984 - 2014版权MathWorks公司。
dydt = [y (2);(1 y (1) ^ 2) * y (2) - y (1)];
保存(“t”字符串(t) + +“.mat”,“dydt”)%添加变量需要被保存
然后
[t、y] =数值(@vdp1 20 [0], [2;0]);
0评论
Stephen23
2021年8月18日
编辑:Stephen23
2021年8月18日
“…有一些变量(在计算函数@ODE_System)和我希望看到并保存他们的价值观以及解决方案;金宝搏官方网站有什么方法可以这样做”
有办法做到这一点,但他们不太可能对你很有帮助,因为只有一些函数的调用由ODE求解器返回对应的解决方案。金宝搏官方网站这是因为歌唱动力学可以任意改变步长,甚至可以使步骤向后,并不是所有的函数调用对应的输出值。如果你简单地保存
每一个
值计算
每一个
函数调用,它不是一个简单的任务,他们实际上对应于ODE求解器返回的值有效的解决方案。金宝搏官方网站我不会建议的方法。
除非解决你的颂歌函数
极
慢(小时/天)的,那么到目前为止最简单的方法是首先解决歌唱,然后调用该函数值的中间值的解决方案。
这是一个工作示例:
[t、y] =数值(@fun、0:9 [2; 0])
(~,tmp) = cellfun (@fun num2cell (t) num2cell (y, 2),“大学”,0);%或使用一个循环。
我= cell2mat (tmp)
函数[dydt, intv] =乐趣(t, y)%所有必需的中间值作为输出。
intv = (1 y (1) ^ 2) * y (2) - y (1);
dydt = [y (2); intv];
结束