作者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