作者mimi523 (freshman)
看板MATLAB
標題[問題] 解聯立遇到sym轉字串問題
時間Thu Oct 18 22:21:53 2007
我想解一組聯立方程,有四個未知數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
1F:推 Gwaewluin:不是只差最後一步就做出來了嗎 ̄▽ ̄ 10/19 00:44
2F:→ Gwaewluin:solve(eq10(1),eq10(2),eq10(3),eq10(4))即可 10/19 00:45
3F:→ Gwaewluin:solve的input是字串與symbolic皆可 10/19 00:45
4F:推 mimi523:謝謝^^我解出來了t.t(因為之前解出來是空集合>"<) 10/19 01:12