[問題] 解聯立遇到sym轉字串問題

看板MATLAB作者 (freshman)時間17年前 (2007/10/18 22:21), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串1/1
我想解一組聯立方程,有四個未知數v1,v2,v3,v4 形式為 C[4,1]+P[4,4]*v[4,1]=v[4,1] 舉例如下 [3;-1;-1;-1] + [1/6 1/3 1/3 1/6;1/6 1/3 1/3 1/6; 0 1/6 1/3 1/2;0 0 1/6 5/6]* [v1;v2;v3;v4] = [v1;v2;v3;v4] 我解出來都為空集合,但是我要解出非0解 之前找過前輩的解法如下: syms v0 v1 v2 v3; eq1='v0= 3+0.99*((1/6)*v0+(1/3)*v1+(1/3)*v2+(1/6)*v3)'; eq2='v1= -1+0.99*((1/6)*v0+(1/3)*v1+(1/3)*v2+(1/6)*v3)'; eq3='v2= -1+0.99*((0)*v0+(1/6)*v1+(1/3)*v2+(1/2)*v3)'; eq4='v3= -2+0.99*((0)*v0+(1/6)*v1+(1/3)*v2+(1/2)*v3)'; [v0 v1 v2 v3]=solve(eq1,eq2,eq3,eq4) 可以解決解聯立問題 但是其中的係數要自己輸入,我有六組,每次要打上面程式6次太辛苦了>"< (C[4,1]有6組,P[4,4]有6組) 我找過推文說用subs 但是前提都是各變數用數值帶入,我的變數還是個變數 所以sym變字串這條路也做不出來 我的作法大致說明如下: syms v1 v2 v3 v4 v=[v1;v2;v3;v4] p=sym(pij(:,:,1)) p = [ 1/6, 1/3, 1/3, 1/6] [ 1/6, 1/3, 1/3, 1/6] [ 0, 1/6, 1/3, 1/2] [ 0, 0, 1/6, 5/6] C = sym(cost') C = [ 3, 3, 3, 3, 3, 3] [ -1, -1, -1, -1, -1, -1] [ -1, -1, -1, -2, -2, -2] [ -1, -2, -3, -1, -2, -3] eq9=C(:,1)+p*v eq9 = 3+1/6*v1+1/3*v2+1/3*v3+1/6*v4 -1+1/6*v1+1/3*v2+1/3*v3+1/6*v4 -1+1/6*v2+1/3*v3+1/2*v4 -1+1/6*v3+5/6*v4 eq10=eq9+v eq10 = 3+7/6*v1+1/3*v2+1/3*v3+1/6*v4 -1+1/6*v1+4/3*v2+1/3*v3+1/6*v4 -1+1/6*v2+4/3*v3+1/2*v4 -1+1/6*v3+11/6*v4 想解這eq10就需要將這[4,1]的sym變作字串,然後再用前輩的方法解聯立 有大大能指點迷津一下嗎?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.76.107

10/19 00:44, , 1F
不是只差最後一步就做出來了嗎 ̄▽ ̄
10/19 00:44, 1F

10/19 00:45, , 2F
solve(eq10(1),eq10(2),eq10(3),eq10(4))即可
10/19 00:45, 2F

10/19 00:45, , 3F
solve的input是字串與symbolic皆可
10/19 00:45, 3F

10/19 01:12, , 4F
謝謝^^我解出來了t.t(因為之前解出來是空集合>"<)
10/19 01:12, 4F
文章代碼(AID): #175sm2WL (MATLAB)
文章代碼(AID): #175sm2WL (MATLAB)