我正在使用ode15
在MATLAB中解决一个僵硬的PDE,并且它经常会根据初始条件冻结。我从来没有真正得到过错误,即使在10个小时之后也不会完成它需要大约30秒才能运行。我正在尝试不同的空间和时间节点间隔,但很难,因为我没有得到反馈。
是否有某种等同于fsolve
的诊断? stats
没有用,因为它只在fsolve
完成后显示输出。
答案 0 :(得分:0)
查看odeset
上的documentation,特别是stats
选项。我想你基本上只想将stats
设置为on
,你会得到一些反馈。
此外,根据您的ODE,您可能需要一个不同的解算器。在this page页面的大约一半处,有一个MATLAB中可用的大多数求解器的列表。根据您的功能是僵硬还是非僵硬,以及您需要获得的准确度,其中一个可能更适合您。有时我只是将它们全部编码并注释掉除了一个以外的所有内容,直到找到最适合我的那个,但如果你想为你的应用找到“正确”的文档,请查看每个文档。
答案 1 :(得分:0)
您的问题很混乱,因为您引用了ode15s
和fsolve
锁定。这是两个完全不同的功能。一个做数值积分,另一个解决根。此外,fsolve
没有名为'Stats'
的选项(请参阅doc fsolve
)。如果您想要fsolve
的连续输出,请使用:
options = optimist('Display','iter');
[x,fval,exitflag] = fsolve(myfun,x0,options)
这将显示迭代次数,函数评估次数,函数值和其他内容,具体取决于您使用的算法(可以通过'Algorithm'
选项调整算法)。再次查看doc fsolve
以获取完整详细信息。
就'Stats'
的{{1}}选项而言,它不会给你很多信息。我怀疑你会弄清楚为什么你的系统停止运行(如果它甚至ode15s
你有问题)。您可以尝试通过ode15s
的{{1}}选项使用输出函数。您可以先尝试简单的'OutputFcn'
:
odeset
将在每个集成步骤后打印您的状态。如果您需要执行更多操作,请键入odeprint
以查看代码以及如何编写自己的输出函数。