Re: [問題] 有條件的利用最小平方法求最佳解

看板MATLAB作者 (垂仔)時間11年前 (2013/05/18 16:03), 編輯推噓0(007)
留言7則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《Achui (垂仔)》之銘言: : 標題: [問題] 有條件的利用最小平方法求最佳解 : 時間: Sat May 18 12:07:13 2013 : : A * X = B : A:已知的資料,是一個10*3大小的矩陣 : B:已知的資料,是一個10*1大小的矩陣 : X:欲求解的3*1大小的轉換矩陣 : : 利用最小平方法求出X的最佳解: X=A\B : 但若加上一個條件: X的元素和=1 : 該怎麼做呢?? : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 220.132.80.215 : → aia:X改成[x1 x2 1-x1-x2]之後重算一次A,B矩陣,A變10*2矩陣 05/18 13:31 抱歉,不太懂a大的意思 A=[22 18 12 67 49 40 28 32 46 19 22 13 44 43 65 58 81 77 68 39 17 19 21 49 57 25 21 16 11 18]; B=[ 44 125 32 31 54 34 174 23 122 32]; X=A\B=[3.2208 ; -1.4597 ; -0.3583] 然後再令X2=[3.2208 ; -1.4597 ; 1-3.2208-(-1.4597)]是嗎? 接下來要如何重算A B得到一個10*2的A矩陣? : 推 profyang:樓上你這樣跟A多加一個row:[1 1 1]然後B多加個元素[1] 05/18 14:22 : → profyang:有什麼不同?這樣最小方差出來的X三個元素還是不一定會 05/18 14:23 : → profyang:滿足相加等於1 05/18 14:23 : 推 profyang:ㄟ等等好像確實不一樣... 05/18 14:28 : 推 profyang:1F的方法應該是正解 但是這樣等於還要自己重組矩陣 05/18 14:51 : → profyang:還蠻好奇有沒有更方便的做法= =+ 05/18 14:51 : → profyang:應該說更容易寫成code的做法 05/18 14:52 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.80.215

05/18 16:07, , 1F
a1*x1+a2*x2+a3*(1-x1-x2)=b => (a1-a3)*x1+(a2-a3)*x2=b-a3
05/18 16:07, 1F

05/18 16:08, , 2F
用上面的式子組成新的係數矩陣之後再反除
05/18 16:08, 2F

05/18 16:09, , 3F
得到x1,x2後用總和為1之關係式算x3即可
05/18 16:09, 3F

05/18 16:11, , 4F
了解了!! 謝謝幫忙我在來研究一下fmincon的解法~
05/18 16:11, 4F

05/19 01:11, , 5F
CF = @(x) sum((B-A*x).^2); x0=[1;0;0];
05/19 01:11, 5F

05/19 01:11, , 6F
yy=fmincon(CF,x0,[],[],[1 1 1],1)
05/19 01:11, 6F

05/19 01:12, , 7F
還需要optimize一下
05/19 01:12, 7F
文章代碼(AID): #1HbpNcf0 (MATLAB)
文章代碼(AID): #1HbpNcf0 (MATLAB)