我使用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