Verfasst am: 18.03.2011, 14:15
Titel: Inverse einer Matrix mit inv
Hallo zusammen,
ich muss für eine Ausarbeitung ein kleines Matlab Programm schreiben.
Zur Information: Ich habe mit Matlab erst seit knapp 6 Wochen zu tun bzw. kennen gelernt und weis zur Zeit nicht wie ich anfangen muss.
Es wäre schon, wenn ihr mir bei der Aufgabe helfen könntet bzw. mir, wenn möglich, den Code posten könntet.
Vielen vielen Dank im Voraus...
Hier der Code:
Inversenberechnung mit inv
Schreiben Sie ein Matlab Programm, das mit einer beliebigen Matrix aufgerufen werden kann. Ist für die Matrix die Inverse nicht deniert, so soll eine Fehlermeldung ausgegeben werden, andernfalls die Inverse Matrix. Schreiben Sie dieses Programm mit Benutzung der Matlab-Funktion inv.
Nee ehrlich, wenn man dir den Code gibt lernst du ja nix. Ein paar kleine Dinge solltest du wissen.
Die invertierte einer Matrix ist dann definiert wenn sie regulär ist. Das heißt das Gleichungssystem wäre lösbar, heißt wiederum die Determinante deiner Matrix ist ungleich null und heißt auch, dass die Matrix (nxn) groß sein muss, sprich quadratisch. Damit kanste erstmal die Definiertheit klären, wenn eine Matrix dabei ist.
D.h. ermittle erstmal mit dem Befehl size die Matrixgrößen und vergleiche sie. Falls die Werte für Spalten und Zeilen nicht gleich groß sind: Ausgabe: Matrix nicht quadratisch.
Als nächstes prüfst ob der Befehl det eine Ausgabe wiedergibt diie ungleich null ist.Falls sie null ist: Matrix ist nicht regulär!
Ansonsten kannst du anfangen die invertierte zu ermitteln. Daz gibt es im Prinzip zwei Verfahren. Einmal über die Unterdeterminanten ( schhönes Beispiel im Papula - Mathematik für Ingenieure und Nawis 2 auf Seite 53. Dieser Weg ist sehr schwierig nachzu proggen. Als nächstes gibt es den Gauss Jordan Algorithmus. Schönes Beispiel auch im selben buch auf Seite 89.
Wenn es aber nicht so kompliziert sein soll benutzt du einfach den Sachverhalt,dass das Matrixprodukt (berechnet nach dem Falk Schema auf Seite 17 des gleichen Buches) die Einheitsmatrix ist. Nun kannst du mit Links Division deine Inverse berechnen. Links und Rechtsdivision findest du in der Matlab Hilfe.
So das reicht um dir erstmal Gedanken zu machen. Wenn du Fragen zum proggen hast, sag bescheid.
Ansonsten kannst du anfangen die invertierte zu ermitteln. Daz gibt es im Prinzip zwei Verfahren. Einmal über die Unterdeterminanten ( schhönes Beispiel im Papula - Mathematik für Ingenieure und Nawis 2 auf Seite 53. Dieser Weg ist sehr schwierig nachzu proggen. Als nächstes gibt es den Gauss Jordan Algorithmus. Schönes Beispiel auch im selben buch auf Seite 89.
Wenn es aber nicht so kompliziert sein soll benutzt du einfach den Sachverhalt,dass das Matrixprodukt (berechnet nach dem Falk Schema auf Seite 17 des gleichen Buches) die Einheitsmatrix ist. Nun kannst du mit Links Division deine Inverse berechnen. Links und Rechtsdivision findest du in der Matlab Hilfe.
Wozu der Aufwand, wenn er die Funtkion inv benutzen soll
Wenn die Matrix nicht invertierbar ist, dann bekommst du eh eine Fehlermeldung von Matlab ^^
da-joka
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 10.04.2011, 13:30
Titel: Inverse einer Matrix
Hallo zusammen,
ich habe jetzt einmal versucht das oben geschriebene umzusetzen.
Jetzt habe ich noch ein Problem bei der "size" der Matrix.
Ich überprüfe zuerst ob eine Determinante existiert mit if... ==0 dann Fehlermeldung funktioniert auch gut
und else if (size....)
aber wie muss ich das überprüfen ob eine Matrix symmetrisch ist, also m==n
Könntest du mir da bitte noch helfen.
Verfasst am: 12.04.2011, 00:53
Titel: Re: Inverse einer Matrix
Hallo da-joka,
Zitat:
Ich überprüfe zuerst ob eine Determinante existiert mit if... ==0 dann Fehlermeldung
Was bedeutet genau "if ... == 0" ? Damit kann man kaum die Existenz einer Determinante prüfen, oder doch? Bevor Du den Befehl DET verwendest, solltest Du übrigens prüfen, ob die Matrix quadratisch ist - andernfalls stppt DET mit einem Fehler.
Zum Problem mit SIZE kann ich eigentlich nur "help size" empfehlen! Dort findest Du das Beispiel "[m, n] = size(X)". Danach ist "if m ~= n, error('Nicht quadratisch'), ..." naheliegend.
Ich finde die Fragestellung immer noch verblüffend: Eigentlich wird das ganze Problem bereits vom INV-Befehl gelöst.
Gruß, Jan
da-joka
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 03.05.2011, 06:30
Titel: Inverse
Hallo zusammen,
danke nochmals für eure Hilfe.
Jetzt habe ich die Aufgabe gelöst.
Natürlich ist es möglich, das ganze mit "inv" zu lösen, wir sollten aber zuvor auf Symmetrie überprüfen und ob Determinante gleich null.
Hat nun alles geklappt.
Gruß da-joka
matze92
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 20.05.2012, 21:09
Titel: Inverse Matrix mit Gauss
Guten Abend,
Ich befasse mich im Rahmen eines Studiums mit dem Programm Matlab und soll zur Übung ein Programm erstellen, das inverse Matrizen beliebiger Größe berechnet. Bislang bin ich über folgenden Ansatz nicht hinausgekommen.
Code:
function Q = Gauss(M) det(M)~=0
Dim=size(M)
k=Dim(1,1)
m=Dim(1,2)
B=eye(k)
Q=[M,B]
Was muss ich verändern/ergänzen, damit das Programm läuft. Ich bitte um entsprechende Codes und Tipps. Gruß Mateus
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.