2017-01-28 3 views
0

Ich versuche, ein System von linearen Gleichungen mit der inversen Matrix zu lösen, habe aber Probleme mit meinem letzten Befehl, wo ich versuche, die inverse Matrix mit B zu multiplizieren Ratschläge, was ich falsch mache?Lösung Ax = b mit inverser Matrix in Ahorn

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

Die Antwort wird möglichst unter jeder Zeile eingerückt. Ich habe nicht genug Punkte, um Bilder für die Matrixergebnisse zu speichern, so dass sie leer geblieben sind.

Antwort

0

Als ein früheres Plakat suggeriert, die geschweiften Klammern zu entfernen wird Ihren Code beheben, ist es jedoch auch sinnvoll sein kann, unter Hinweis darauf, dass, wenn Sie eine Kopie von Maple 6 oder höher verwenden, die linalg Paket wurde von der neueren LinearAlgebra Paket veraltet. Dies ist äquivalent Code, der die LinearAlgebra Paket verwendet:

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; 

Ein kleiner Unterschied besteht darin, dass hier die GenerateMatrix Befehl gibt sowohl die Koeffizientenmatrix als auch die rechte Seite Vector. Beachten Sie auch, dass ich die Ausgabe für den mit Befehl unter Verwendung des : Operators unterdrückt habe.

0

Entfernen Sie einfach die geschweiften Klammern von B.

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

enter image description here

Verwandte Themen