如何拯救本地变量(在调用函数)

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
我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]);

Stephen23
Stephen23 2021年8月18日
编辑:Stephen23 2021年8月18日
“…有一些变量(在计算函数@ODE_System)和我希望看到并保存他们的价值观以及解决方案;金宝搏官方网站有什么方法可以这样做”
有办法做到这一点,但他们不太可能对你很有帮助,因为只有一些函数的调用由ODE求解器返回对应的解决方案。金宝搏官方网站这是因为歌唱动力学可以任意改变步长,甚至可以使步骤向后,并不是所有的函数调用对应的输出值。如果你简单地保存 每一个 值计算 每一个 函数调用,它不是一个简单的任务,他们实际上对应于ODE求解器返回的值有效的解决方案。金宝搏官方网站我不会建议的方法。
除非解决你的颂歌函数 慢(小时/天)的,那么到目前为止最简单的方法是首先解决歌唱,然后调用该函数值的中间值的解决方案。
这是一个工作示例:
[t、y] =数值(@fun、0:9 [2; 0])
t = 10×1
0 1 2 3 4 5 6 7 8 9
y = 10×2
2.0000 0 1.5081 -0.7803 0.3231 -1.8334 -1.8699 -1.0310 -1.7461 0.6240 -0.8443 1.3007 1.2669 2.4471 1.9322 -0.4298 1.2329 -0.9745 -0.3645 -2.4967
(~,tmp) = cellfun (@fun num2cell (t) num2cell (y, 2),“大学”,0);%或使用一个循环。
我= cell2mat (tmp)
我= 10×1
-2.0000 -0.5137 -1.9651 4.4439 0.4675 1.2178 -2.7478 -0.7574 -0.7261 -1.8004
函数[dydt, intv] =乐趣(t, y)%所有必需的中间值作为输出。
intv = (1 y (1) ^ 2) * y (2) - y (1);
dydt = [y (2); intv];
结束

类别

找到更多的在常微分方程帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!