使用枫树中的逆矩阵求解Ax = b

时间:2017-01-28 01:44:10

标签: physics linear-algebra maple

我正在尝试使用逆矩阵求解线性方程组,但是我的最后一个命令出现了问题,我试图将逆矩阵乘以B.任何人都可以提出关于我做错的建议吗?< / p>

restart; with(linalg):

sys := {a+.9*h+.8*c+.4*d+.1*e+0*f = 1, .1*a+.2*h+.4*c+.6*d+.5*e+.6*f = .6, .4*a+.5*h+.7*c+d+.6*e+.3*f = .7, .6*a+.1*h+.2*c+.3*d+.5*e+f = .5, .8*a+.8*h+c+.7*d+.4*e+.2*f = .8, .9*a+h+.8*c+.5*d+.2*e+.1*f = .9}:

solve(sys, {a, c, d, e, f, h});
    {a = 0.08191850594, c = 0.7504244482, d = 3.510186757, 
     e = -6.474108659, f = 2.533531409, h = -0.4876910017}

Z := genmatrix(sys, [a, h, c, d, e, f], 'b');

evalm(b);

linsolve(Z, b);

inverse(Z);

B := {`<|>`(`<,>`(1, .6, .7, .5, .8, .9))};

evalm(inverse(Z)&*B);
在可能的情况下,

响应在每行下面缩进。我没有足够的点来将图片放入矩阵结果中,所以它们一直是空白的。

2 个答案:

答案 0 :(得分:0)

只需从B删除大括号。

B := `<|>`(`<,>`(1, .6, .7, .5, .8, .9));
evalm(inverse(Z)&*B);

enter image description here

答案 1 :(得分:0)

正如之前的海报所示,删除花括号将修复您的代码,但是,如果您使用的是Maple 6或更新版本的副本,那么 linalg 包也可能值得注意已被新LinearAlgebra包弃用。 以下是使用LinearAlgebra包的等效代码:

with(LinearAlgebra):
sys := [a+.9*h+.8*c+.4*d+.1*e+0*f = 1, .1*a+.2*h+.4*c+.6*d+.5*e+.6*f = .6, .4*a+.5*h+.7*c+d+.6*e+.3*f = .7, .6*a+.1*h+.2*c+.3*d+.5*e+f = .5, .8*a+.8*h+c+.7*d+.4*e+.2*f = .8, .9*a+h+.8*c+.5*d+.2*e+.1*f = .9];
solve(sys, {a, c, d, e, f, h});
Z,b := GenerateMatrix(sys, [a, h, c, d, e, f]);
LinearSolve( Z, b );
MatrixInverse( Z );
MatrixInverse( Z ) . b; 

一个小的区别是,GenerateMatrix命令返回系数矩阵以及右侧Vector。另请注意,我使用运算符抑制了 with 命令的输出。