2017-01-19 14 views
1

Ich habe eine gegebene Matrix der Größe NxN (genannt M), ein Vektor von Nx1 (genannt V) und zwei Skalare (genannt a und b). Ich möchte das lineare Gleichungssystem für Alpha lösen. Die Dimensionen werden angegeben, wenn MATLAB sie mit der Funktion size(-) meldet.lineares Gleichungssystem lösen, basierend auf Matrix („Matrix Dimension muss stimmen“)

(M + a * b *) alpha == V

mit eine Matrix von nur 1 s sein.

dachte ich, der einfachste Weg, dies zu tun, ich

Fehler mit ==
Matrix Dimensionen den Fehler jedoch

syms alpher; 
Mprep = (M + a * b * ones(length(M),length(M))); 
eqn = Mprep * alpher == V; 
alpha = solve(eqn,alpher) 

würde zustimmen müssen

I Ich bin mir nicht sicher, ob dieser Fehler auf die Tatsache zurückzuführen ist, dass Matlab die richtige Größe von alpher nicht kennt r wenn ich einfach falsch in meinem Ansatz bin. Der Fehler tritt in der vorletzten Zeile nach Matlab auf.

Was ist der beste Weg, um dies in MATLAB zu lösen?

+0

wie in diesem Fall 'M = N' basierend auf M symmetrisch und somit' Einsen (Länge (M), Länge (M)) 'mit den gleichen Abmessungen wie M selbst. Außerdem tritt der Fehler in der zweitletzten Zeile auf, so dass ein mutmaßlicher Fehler in einer vorherigen Zeile eher unwahrscheinlich ist. (Dies war eine Antwort auf einen jetzt gelöschten Kommentar) – Sim

Antwort

2

Wenn Sie für ein Array von symbolischen Variablen lösen möchten, müssen Sie tatsächlich ein Array der symbolischen Variablen erstellen. Zur Zeit sieht MATLAB alpher als Skalar und dies hat offensichtlich Dimensionsprobleme bei der Matrixmultiplikation, da eine N x N Matrix mal ein Skalar ungleich N x 1 Array ist.

vielmehr die symbolische Toolbox überhaupt als verwenden, würde ich empfehlen, einfach mit MATLAB integrierten Fähigkeit, die ein lineares Gleichungssystem mit dem \ Operator (mldivide)

alpha = Mprep \ V; 

Als Randnotiz zu lösen, bitte Verwenden Sie nicht length als das Ergebnis ist mehrdeutig, da es einfach die erste Nicht-Singleton-Dimension zurückgibt. Wenn Sie möchten, dass die Größe ones gleich M ist, verwenden Sie einfach ones(size(M)). Wenn Sie die Anzahl der Zeilen oder Spalten in M möchten, verwenden Sie alternativ die zweite Eingabe size, um die Dimension anzugeben, die Sie abfragen möchten: nRows = size(M, 1) oder nCols = size(M, 2)

Verwandte Themen