решение Ax = b с использованием обратной матрицы в клене

Я пытаюсь решить систему линейных уравнений с использованием обратной матрицы, но у меня возникают проблемы с моей последней командой, когда я пытаюсь умножить обратную матрицу на B. Может ли кто-нибудь дать совет, что я делаю неправильно?

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);

ответ помещается под каждой строкой, где это возможно. У меня недостаточно очков, чтобы вставить картинки для результатов матрицы, поэтому они оставлены пустыми.


person Zabrina    schedule 28.01.2017    source источник


Ответы (2)


Как предлагается на предыдущем плакате, удаление фигурных скобок исправит ваш код, однако, возможно, также стоит отметить, что, если вы используете копию 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 Команда возвращает как матрицу коэффициентов, так и правый вектор. Также обратите внимание, что я подавил вывод команды with с помощью оператора :.

person DSkoog    schedule 29.01.2017

Просто удалите фигурные скобки с B.

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

введите здесь описание изображения

person zhk    schedule 28.01.2017