2013-06-13 106 views
0

我使用ode15解決硬PDE在MATLAB,而且往往依賴於初始條件凍結。我從來沒有真正遇到過錯誤,即使在10小時後它應該需要大約30秒的時間才能完成。我正在試驗不同的空間和時間節點間隔,但很難,因爲我沒有得到反饋。診斷爲MATLAB ODE

是否有某種相當於診斷爲fsolvestats沒有用,因爲它只在fsolve完成後才顯示輸出。

+0

也許你可以通過探查運行它,看看它是越來越stuch? – wakjah

回答

0

檢查出上的documentation,特別是stats選項。我想你基本上只是想把stats設置爲on,你會得到一些反饋。

此外,根據您的ODE,您可能需要不同的解決者。在this page頁面大約一半的地方,列出了大多數MATLAB可用的求解器。根據你的功能是僵硬還是非僵硬,以及你需要得到多準確,其中一個可能對你更好。有時候我只是編寫代碼並且註釋掉所有內容,直到找到最適合我的代碼爲止,但是如果您想爲應用程序找到「正確」的代碼,請查看每個文檔。因爲你是指既ode15sfsolve鎖住

+0

數據不適用於我,因爲fsolve甚至沒有完成 – Brian

+0

啊,對不起。我必須跳過'fsolve'語句到'ode15'。你的語法是什麼?你能告訴我們凍結的代碼嗎? – Engineero

0

你的問題是混亂的。這是兩個完全不同的功能。一個是數值積分,另一個是根源。另外,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來查看代碼,以及如果您需要做更多工作,您可能會如何編寫自己的輸出函數。