我正在使用 MATLAB 中求解一个僵硬的 PDE ode15
,它经常根据初始条件冻结。我实际上从来没有收到错误,即使在 10 小时后它也不会完成,而它应该需要大约 30 秒才能运行。我正在尝试不同的空间和时间节点间隔,但这很难,因为我没有得到反馈。
是否有某种等同于诊断的方法fsolve
? stats
没用,因为它只在fsolve
完成后显示输出。
我正在使用 MATLAB 中求解一个僵硬的 PDE ode15
,它经常根据初始条件冻结。我实际上从来没有收到错误,即使在 10 小时后它也不会完成,而它应该需要大约 30 秒才能运行。我正在尝试不同的空间和时间节点间隔,但这很难,因为我没有得到反馈。
是否有某种等同于诊断的方法fsolve
? stats
没用,因为它只在fsolve
完成后显示输出。
您的问题令人困惑,因为您同时提到了两者ode15s
并fsolve
锁定了。这是两个完全不同的功能。一个是数值积分,另一个是求根。此外,fsolve
没有调用选项'Stats'
(请参阅 参考资料doc fsolve
)。如果您想从fsolve
使用中连续输出:
options = optimist('Display','iter');
[x,fval,exitflag] = fsolve(myfun,x0,options)
这将显示迭代计数、函数评估次数、函数值和其他内容,具体取决于您使用的算法(可以通过'Algorithm'
选项调整算法)。再次查看doc fsolve
完整的详细信息。
就'Stats'
选项ode15s
而言,它不会为您提供太多信息。我怀疑你是否会弄清楚你的系统为什么会停止(如果它甚至是ode15s
你有问题的话)。'OutputFcn'
您可以尝试通过odeset
. 您可以先尝试简单的odeprint
:
options = odeset('OutputFcn',@odeprint)
这将在每个集成步骤后打印您的状态。键入edit odeprint
以查看代码以及如何编写自己的输出函数,如果您需要做更多。