我使用ode15
解决硬PDE在MATLAB,而且往往依赖于初始条件冻结。我从来没有真正遇到过错误,即使在10小时后它应该需要大约30秒的时间才能完成。我正在试验不同的空间和时间节点间隔,但很难,因为我没有得到反馈。诊断为MATLAB ODE
是否有某种相当于诊断为fsolve
? stats
没有用,因为它只在fsolve
完成后才显示输出。
我使用ode15
解决硬PDE在MATLAB,而且往往依赖于初始条件冻结。我从来没有真正遇到过错误,即使在10小时后它应该需要大约30秒的时间才能完成。我正在试验不同的空间和时间节点间隔,但很难,因为我没有得到反馈。诊断为MATLAB ODE
是否有某种相当于诊断为fsolve
? stats
没有用,因为它只在fsolve
完成后才显示输出。
检查出上的documentation,特别是stats
选项。我想你基本上只是想把stats
设置为on
,你会得到一些反馈。
此外,根据您的ODE,您可能需要不同的解决者。在this page页面大约一半的地方,列出了大多数MATLAB可用的求解器。根据你的功能是僵硬还是非僵硬,以及你需要得到多准确,其中一个可能对你更好。有时候我只是编写代码并且注释掉所有内容,直到找到最适合我的代码为止,但是如果您想为应用程序找到“正确”的代码,请查看每个文档。因为你是指既ode15s
和fsolve
锁住
你的问题是混乱的。这是两个完全不同的功能。一个是数值积分,另一个是根源。另外,fsolve
没有选项'Stats'
(请参阅doc fsolve
)。如果你想从fsolve
使用连续输出:
options = optimist('Display','iter');
[x,fval,exitflag] = fsolve(myfun,x0,options)
这将显示迭代次数,评价次数,函数值,取决于你用什么算法其他的东西(的alorithm可以通过'Algorithm'
调整选项)。请参阅doc fsolve
了解详细信息。
只要'Stats'
选项与ode15s
去,它不会给你很多信息。我怀疑你会弄清楚为什么你的系统正在停止(如果它甚至是你遇到问题的ode15s
)。你可以尝试的是通过odeset
的'OutputFcn'
选项使用输出功能。您可以尝试简单的odeprint
第一:
options = odeset('OutputFcn',@odeprint)
每个积分步骤之后,将打印状态。输入edit odeprint
来查看代码,以及如果您需要做更多工作,您可能会如何编写自己的输出函数。
也许你可以通过探查运行它,看看它是越来越stuch? – wakjah