2016-03-11 21 views
0

這個選項到底做了什麼?它似乎只是將解決方案的相應組件設置爲零而沒有任何錯誤,或者以較小的步驟重試,因此我獲得了損壞的解決方案。但是,如果我限制一個步驟,那麼所有看起來都不錯(有所有組件都是正面的)。我怎樣才能限制那些應該是積極的解決方案組件?matlab中的非負選項odeset

+0

重寫系統通過對數來代替這些值小於在溶液中的變量。那麼新變量的指數總是正值。或者使用僵硬系統的解算器。 – LutzL

+0

我正在使用求解器來處理僵硬的系統ode15s,所以如果我限制了一個集成步驟,它會返回好的結果(帶有所有正值),但在這種情況下,它運行時間太長,產品的值太多(因此我需要一個解決方案內存不足)。 – Leo

+0

@LutzL你是什麼意思「用他們的對數取代」? – Leo

回答

0

1)非負選項允許檢查每個積分步的溶液,並用零替換負值(這可能是有些問題OK) 2)在我來說,我已經做了以下步驟:

  1. 一些代碼優化,包括線性代數方程系統的分析解(在每個積分步驟中解決)
  2. 使用AbsTol和RelTol。 AbsTol應該由幾個數量級

而且在某些情況下是有意義的嘗試求解方程,不進行縮放