我想用Newton-Raphson迭代方法求解一個非線性方程組,並且爲了探索我的變量的參數空間,將以前的解決方案和使用它們作爲我的第一次初步猜測,以便我留在景點盆地。邏輯索引和雙精度數字
我現在救我在一個結構陣列的解決方案,我存儲在一個文件.MAT,約在這樣:
load('solutions.mat','sol');
str = struct('a',Param1,'b',Param2,'solution',SolutionVector);
sol=[sol;str];
save('solutions.mat','sol');
現在,我做的另一個運行,在我需要爲不同的上述方案參數NewParam1和NewParam2。如果參數1 = NewParam1-deltaParam1和參數2 = NewParam2 - deltaParam2,然後
load('solutions.mat','sol');
index = [sol.a]== NewParam1 - deltaParam1 & [sol.b]== NewParam2 - deltaParam2;
% logical index to find solution from first block
SolutionVector = sol(index).solution;
我有時會收到一條錯誤消息說,沒有這樣的解決方案存在。問題在於我的參數的雙精度,因爲2-1〜= 1可能發生在Matlab中,但我似乎無法找到實現相同結果的替代方法。我曾嘗試在保存過程中將數字參數更改爲字符串,但後來我遇到了使用字符串進行邏輯索引的問題。
理想情況下,我想避免將我的參數乘以10的冪使它們成爲整數,因爲這會使代碼由於參數的數量而變得非常混亂。除此之外,任何幫助將不勝感激。謝謝!
而不是使用'==',爲什麼不保留一些小的餘量。說1e-10(或'eps') –