[問題] 解聯立遇到sym轉字串問題
我想解一組聯立方程,有四個未知數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
10/19 00:45, 2F
→
10/19 00:45, , 3F
10/19 00:45, 3F
推
10/19 01:12, , 4F
10/19 01:12, 4F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章