0

我正在使用 MATLAB 中求解一个僵硬的 PDE ode15,它经常根据初始条件冻结。我实际上从来没有收到错误,即使在 10 小时后它也不会完成,而它应该需要大约 30 秒才能运行。我正在尝试不同的空间和时间节点间隔,但这很难,因为我没有得到反馈。

是否有某种等同于诊断的方法fsolvestats没用,因为它只在fsolve完成后显示输出。

4

2 回答 2

0

您的问题令人困惑,因为您同时提到了两者ode15sfsolve锁定了。这是两个完全不同的功能。一个是数值积分,另一个是求根。此外,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以查看代码以及如何编写自己的输出函数,如果您需要做更多。

于 2013-06-13T14:36:36.520 回答
0

查看上的文档odeset,特别是stats选项。我想你基本上只是想设置statson你会得到一些反馈。

此外,根据您的 ODE,您可能需要不同的求解器。在此页面的大约一半处,有一个 MATLAB 中可用的大多数求解器的列表。根据您的功能是僵硬还是非僵硬,以及您需要获得的准确度,其中之一可能对您更有效。有时我只是将它们全部编码并注释掉除一个之外的所有内容,直到找到最适合我的那个,但如果您想为您的应用程序找到“正确”的文档,请查看每个文档。

于 2013-06-13T04:05:51.863 回答