象征性地求解矩阵方程

时间:2014-01-31 20:46:02

标签: matlab matrix solver

我正在尝试使用Matlab,我正在尝试解决一个我编写的简单矩阵方程。这是我的剧本:

syms b1 b2 b3 

A = [1 2; 2 1; 3 3];

B = [b1; b2; b3];

X = linsolve(A, B)

输出

Warning: System is inconsistent.
Solution does not exist. 

X =

 Inf
 Inf

我可能做错了什么?


编辑:

好的,我能解决它。但是,现在我正在努力完成其他事情。

以下是我输入的内容:

C = [1 2 3 b1; 2 1 6 b2; 3 3 5 b3];

rref(C)

结果是:

[ 1, 0, 0, (3*b3)/4 - b2/12 - (13*b1)/12]
[ 0, 1, 0,               (2*b1)/3 - b2/3]
[ 0, 0, 1,            b1/4 + b2/4 - b3/4]

但是,我想要创建一个矩阵,使第三行为0 = f(b1,b2,b3),也就是说,我希望LHS和RHS上的第三行为0仅涉及b1,b2和/或b3。我怎么能这样做?我尝试将每个条目都变成一个变量,但这似乎不起作用。

这就是输出:

[ 1, 0, 0,  (a2*a6*b3 - a3*a5*b3 - a2*a9*b2 + a3*a8*b2 + a5*a9*b1 - a6*a8*b1)/(a1*a5*a9 - a1*a6*a8 - a2*a4*a9 + a2*a6*a7 + a3*a4*a8 - a3*a5*a7)]
[ 0, 1, 0, -(a1*a6*b3 - a3*a4*b3 - a1*a9*b2 + a3*a7*b2 + a4*a9*b1 - a6*a7*b1)/(a1*a5*a9 - a1*a6*a8 - a2*a4*a9 + a2*a6*a7 + a3*a4*a8 - a3*a5*a7)]
[ 0, 0, 1,  (a1*a5*b3 - a2*a4*b3 - a1*a8*b2 + a2*a7*b2 + a4*a8*b1 - a5*a7*b1)/(a1*a5*a9 - a1*a6*a8 - a2*a4*a9 + a2*a6*a7 + a3*a4*a8 - a3*a5*a7)]

2 个答案:

答案 0 :(得分:2)

您正在定义一个包含3个方程且只有2个未知数的方程组。通常,如果方程的数量大于未知数,则几乎总是不会有系统的解。试试A = [1 2; 2 1]和B = [b1; b2]你应该得到一个答案,因为那时你有与未知数相同的方程数,在这种情况下系统的解将存在,并且只要A是可逆的,它也是唯一的。

答案 1 :(得分:0)

我不知道你期望输出哪种输出,但使用数字函数进行符号输入有些奇怪。

尝试:

b=sym('b',[3,1])
x=sym('x',[2,1])
f=solve(A*x==B)