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 ohne inv

 

Rennmaus1990
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 18.12.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2011, 01:51     Titel: Inverse einer Matrix ohne inv
  Antworten mit Zitat      
Guten Tag.

Erstmals würde ich mich gerne vorstellen.
Mein Name ist Frank, ich bin 21 Jahre alt und studiere Automobil und Nutzfahrzeugtechnik in Landshut.

Nun zu meinem kleinen, aber feinem Anliegen.

Mir ist die Aufgabe gestellt worden, ein Programm zu schreiben, welches ein magisches Zahlenquadrat analysiert, und die Inverse davon ausgibt!
Das Programm habe ich auch ohne Probleme hinbekommen, leider muss ich aber das gleiche Programm nochmals ohne den Befehl
Code:
erstellen.
Und dies stellt mich vor eine unlösbare Aufgabe.
Verstanden hab ich das Gauss - Verfahren händisch zwar, ich habe aber keinerlei Vorstellung, wie ich dies umstetzen soll.

Könntet Ihr mir bitte weiterhelfen und / oder Tips geben!?

Viele Grüße.
Frank
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden


Scriptor
Forum-Century

Forum-Century


Beiträge: 217
Anmeldedatum: 22.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2011, 02:19     Titel:
  Antworten mit Zitat      
Sers Frank,

schau mal nach Gauss-Jordan Verfahren für Invertierungen entweder

http://www.tm-mathe.de/Themen/html/.....von_gauss-jordan__ma.html

mal um zu schauen wo nach du suchen musst, da es mir ein wenig umständlich beim Überflug gewesen zu sein.Natürlich Determinantenprüfung nicht vergessen, aber das weißte bestimmt.

Grüße!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 18.12.2011, 13:37     Titel: Re: Inverse einer Matrix ohne inv
  Antworten mit Zitat      
Hallo Frank,

Herzlich Willkommen im Forum!

Zur Bildung der Inversen kannst Du gut das Gauss-(Jordan!)-Verfahren benutzen. Da dies eine Standardaufgabe für alle Numerik-Anfänger ist, solltest Du solange daran weiter arbeiten, bis Du es implementiert hast. Natürlich ist es dabei hilfreich einerseits die Literatur zu benutzen (Numerik Scripte oder Stoer: Einführung in die Numerik 1), andererseits gibt es tausende Lösungen im Internet. Eine fertige Lösung zu kopieren wäre dabei keine gute Idee, da dann ja der Lernerfolg ausbleibt.

Sei also beruhigt: Die Aufgabe ist lösbar. Millionen anderer Anfänger haben es auch geschafft. Wenn Du das Grundgerüst programmiert hast und zu einzelnen Befehlen Hilfe benötigst, ist dieses Forum immer hilfsbereit.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Rennmaus1990
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 18.12.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2011, 08:29     Titel:
  Antworten mit Zitat      
Danke für eure Antwort.

Klar ist mir schon, was ich machen muss. Händisch habe ich die Aufgabe bereits gerechnet und auch das richtige heraus bekommen.
Das mit der Einheitsmatrix stellt auch nicht das Problem dar. Aber wie "sag" ich Matlab, dass es mal von der oberen, dann von der unteren... was abziehen bzw. multiplizieren muss?

Mein Problem stellt also das "Grundgerüst" einer solchen Funktion dar.

Kann mir da evtl. jemand auf den richtigen Sprung helfen?
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.12.2011, 12:01     Titel:
  Antworten mit Zitat      
Hallo Rennmaus1990,

Wahrscheinlich würde die Frage eher beantwortet werden, wenn Du zumindest das grobe Gründgerüst selber hinbekommen würdest. Es ist immer motivierend zu sehen, dass der Fragende irgendwelche Versuche unternimmt sein Problem selbst zu lösen.

Zunächst brauchst Du die Definition des Funktions-Rumpfes, also Inputs und Outputs. Danach kannst Du beim Programmieren ganz genauso vorgehen, wie Du es auch beim händischen Lösen machst: Auch dabei wirst Du ja einen Schritt nach dem anderen machen und Kriterien benutzen, um ein Pivot-Element zu finden, dass nicht 0 ist.

Wenn Du das aber wirklich nicht selbst lösen möchtest, kannst Du Dir tausende von Lösungen zu diesem Problem im Netz anschauen. Gerade das Gauss-Verfahren wird wirklich von jedem Numerik-Anfänger durchgekaut und das Erfolgserlebnis ist offenbar so großartig, dass es im Internet veröffentlicht werden muss. Wikipedia wäre ein sinnvoller Anfang. Dort findest Du nicht nur Beispiele und Pseudocode, sondern auch Links zu weiteren Quellen.

Ein anderer Aspekt: Die Implementierung benötigt etwa 8 Zeilen. Da ist es schwierig Dir ein "Grundgerüst" zu zeigen, dass die Aufgabe noch nicht vollständig löst. Wenn wir aber den Code posten, kannst Du Deine Hausaufgabe nicht mehr ohne Täuschung abgeben.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Rennmaus1990
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 18.12.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.12.2011, 00:43     Titel:
  Antworten mit Zitat      
Also ich bescheib jetzt mal, wie weit ich selbst kommen würde.
(in Worten).

1. Also man nehme eine Matrix der Größe n x n, welche quadratisch aufgebaut ist. Dazu ist noch die Einheitsmatrix (von links oben nach rechts unten 1er, sonst nullen) von Wichtigkeit.
2.
Vor irgendwelcher Eingage ist zu testen, ob die Determinante der Matrix 0 wird, in diesem Falle gäbe es nämlich keine Inverse.
Sollte das so sein, muss error ausgegeben werden.

3.
Naja und dann stellt man beide gegenüber und versucht aus der n x n Matrix eine Einheitsmatrix zu formen. Hierfür wendet man alle Rechenschritte bzgl der n x n Matrix auch für die Einheitsmatrix an.
Bildet sich aus der n x n Matrix nun eine Einheitsmatrix, so zeigt die "frühere" Einheitsmatrix die Inverse der Matrix n x n an!

Zu 1.
Code:
input (N) %eine Zahl zwischen 3 - 16
magic (n) %ist in unserem Falle so gewollt


Zu 2.
Code:
if det (N) == 0 % testen, ob die Determinante der Matrix N = 0 ist
error % wenn ja, kommt es zu error


Zu 3.
Und genau ab dieser Stelle häng ich!?!?!?!?
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.500
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.12.2011, 09:32     Titel:
  Antworten mit Zitat      
Hallo,

ja, was muss bei 3. gemacht werden? Im Grunde muss "nur" der Algorithmus, der z.B. im Link von Scriptor zu finden ist, in Code umgesetzt werden. Ein Denkanstoß hierzu:

1.
for-Schleife über alle Spalten (bis auf die letzte?)
"auf 0 bringen der Elemente unter der Diagonalen"

2.
for-Schleife über alle Spalten (bis auf die erste?)
"auf 0 bringen der Elemente über der Diagonalen"

3.
for-Schleife über alle Spalten
"auf 1 bringen der Diagonalelemente"

Es kann sich durchaus zeigen, dass sich diese Schritte dann kombinieren lassen Wink

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 21.12.2011, 17:42     Titel:
  Antworten mit Zitat      
Hallo Rennmaus1990,

Kannst Du statt der Worte auch Matlab-Code verwenden? Weißt Du, wie man eine FOR-Schleife schreibt?
Code:
input (N) %eine Zahl zwischen 3 - 16
magic (n) %ist in unserem Falle so gewollt

Das ist kein valider Matlab-Code. Weißt Du, wie man "help input" und "doc input" benutzt?
Die Ausgabe von "magic(n)" muss in einer Variablen gespeichert werden.

Den Fall "det(M)==0" zu testen ist unnötig. Der Fall wird automatisch auffallen, weil man für die Zerlegung durch Null teilen wird.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
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.