WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Inverse einer Matrix mit inv

 

da-joka

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2011, 14:15     Titel: Inverse einer Matrix mit inv
  Antworten mit Zitat      
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.


Gruß da-joka


Scriptor
Forum-Century

Forum-Century


Beiträge: 217
Anmeldedatum: 22.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2011, 14:48     Titel:
  Antworten mit Zitat      
Was zahlsten ? Very Happy

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.

Mfg Ich
Private Nachricht senden Benutzer-Profile anzeigen
 
JohnnyCash
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 22.07.09
Wohnort: ---
Version: 2009b
     Beitrag Verfasst am: 18.03.2011, 17:46     Titel:
  Antworten mit Zitat      
Zitat:
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 Very Happy

Einfach:
Code:


Wenn die Matrix nicht invertierbar ist, dann bekommst du eh eine Fehlermeldung von Matlab ^^
Private Nachricht senden Benutzer-Profile anzeigen
 
da-joka

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2011, 13:30     Titel: Inverse einer Matrix
  Antworten mit Zitat      
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.

Danke.

Gruß da-joka
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 12.04.2011, 00:53     Titel: Re: Inverse einer Matrix
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
da-joka

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.05.2011, 06:30     Titel: Inverse
  Antworten mit Zitat      
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: ---
     Beitrag Verfasst am: 20.05.2012, 21:09     Titel: Inverse Matrix mit Gauss
  Antworten mit Zitat      
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]

    for z=1:m
        if z==1
            Q(z,:)=Q(z,:)/Q(z,z)
           
        else
    Q(z,:)=Q(z,:)-Q(1,:)*(Q(z,1))
    end
end


Was muss ich verändern/ergänzen, damit das Programm läuft. Ich bitte um entsprechende Codes und Tipps. Gruß Mateus
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.