請問 nlinfit 有沒有辦法限制 最佳參數的區間?已回收

看板MATLAB作者 (無華之果)時間16年前 (2009/02/10 08:14), 編輯推噓0(007)
留言7則, 2人參與, 最新討論串1/1
請教一個問題:我用 nlinfit 作 fitting ,有三個參數,都要是正的 給不同初始值的時候有時候會傳回負的 (這我不意外) 但是調整初始值後,還是會得到不同的結果... 在我的例子中參數一定要是正的...(用 mathematica 可以限制) 請問這個 nlinfit 這個函數還有細部調節的方法嗎? 我知道有個選項是 Option 裡面有 Robust error 等等 可是不知道怎麼寫到程式裡面 在此先謝過大家了 ORz 以下是程式碼 * u = [這裡要放入三個初始值,大小約是 10^7, 10, 0.1] x = [5.5 6.0 7.2 10.8 13.0 31.0]'; y = [0.458 0.820 0.848 0.919 0.943 0.969]'; res = nlinfit(x,y,@MWC, u) xm = 1:50; ym = MWC(res,xm(:)); plot(x,y,'.',xm,ym,'-') * function PB = MWC(K,L); % L = ligand % K1 = Ka, K2 = KT, K3 = KR PB = (K(1).*K(2).*L.*(1+ K(2).*L).^3 + K(3).*L.*(1+ (K(3).*L)).^3)./(K(1).*(1 + (K(2).*L)).^4 + (1 + (K(3).*L)).^4); * mathematica 得出的答案是 Kmin = [ 9.83*10^7 20.0 5.85*10^-7] 我覺得這個題目本身很難搞拉 @@ 因為太多 local minimum 然後資料點又只有六個,參數就有 3個 Orz -- ~因為生活已經太複雜了 所以就讓我們的愛情單純吧~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 128.122.61.231 ※ 編輯: microball 來自: 128.122.61.231 (02/10 08:14)

02/10 11:27, , 1F
將小於0的限制條件以懲罰彈簧方式處理,加入MWC中
02/10 11:27, 1F

02/10 11:27, , 2F
說不定可以解決
02/10 11:27, 2F

02/10 11:28, , 3F
local minimum太多的話,改用其他隨機多點的最佳化方法
02/10 11:28, 3F

02/10 11:28, , 4F
可能比較好解決
02/10 11:28, 4F

02/11 02:23, , 5F
多謝 ~~ 可是我就是不知道哪裡找這些語法
02/11 02:23, 5F

02/11 02:23, , 6F
如果要我重寫程式我是可以想像拉~~
02/11 02:23, 6F

02/11 02:24, , 7F
但是想請教有沒有既有的語法...
02/11 02:24, 7F
文章代碼(AID): #19aCR8yq (MATLAB)
文章代碼(AID): #19aCR8yq (MATLAB)