2013-03-14 80 views
1

当使用equationsToMatrix你解决一组线性方程的如在实施例(包括在溶液)equationsToMatrix:我如何获得变量的值?

syms x y z; 
[A, b] = equationsToMatrix([x + y - 2*z == 0, x + y + z == 1, 2*y - z + 5 == 0], [x, y, z]) 

%solution of the equation set 

A = 
[ 1, 1, -2] 
[ 1, 1, 1] 
[ 0, 2, -1] 

b = 
    0 
    1 
-5 

矢量B返回所讨论的变量的值:x,y和z。但是,如果我输入x,那么MATLAB返回x而不是0,这是这种情况下方程的解。这也会在不添加syms选项的情况下发生。

另一个问题是,如果我键入b(1)或b(2),我没有得到任何值:我期望b包含x,y和z的值。 什么我需要的是让这样的事情到底

b(1) = 0 

x = 0 

我应该怎么做的只是输入X,Y得到的x,y,z的值, Z'

+0

为了解决您需要将系统做'ans = A \ b'。 – ja72 2013-03-14 10:22:16

+0

@ ja72完成了它,但它返回了错误消息 – ragnar 2013-03-14 10:26:11

+0

并且错误是??? ??? – ja72 2013-03-14 10:27:12

回答

3

你有什么是通过提取系数矩阵将符号线性方程转换成数字系统的方法。为了解决你需要做的

sol = A\b; 

系统,现在你可以在另一个表达式

subst(expr, {x,y,z}, {sol(1),sol(2),sol(3));

使用的值,例如

A = 

1  1 -2 
1  1  1 
0  2 -1 

b = 

0 
1 
-5 

>> A\b 

ans = 

3.0000 
-2.3333 
0.3333 
+0

我已经有b,即x,y和z的值。我不能做的是从矩阵b中提取这些值,换句话说,如果我键入b(1)我没有得到x的值。在这种情况下,b是UNKNOWNS的矩阵:我有一个方程如A * b = C。C是只有零值的矩阵。我得做b = C/A – ragnar 2013-03-14 10:51:23

+0

对不起,明白了!当MATLAB关闭时,我无法立即将其排除。我写了sol = b然后expr = [A,b],然后就和你一样了。有用。 – ragnar 2013-03-14 10:59:31