www.vorhilfe.de
- Förderverein -
Der Förderverein.

Gemeinnütziger Verein zur Finanzierung des Projekts Vorhilfe.de.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Impressum
Forenbaum
^ Forenbaum
Status VH e.V.
  Status Vereinsforum

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Suchen
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Matlab" - LGS mit b=0 lösen
LGS mit b=0 lösen < Matlab < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

LGS mit b=0 lösen: Nur triviale Lösung
Status: (Frage) beantwortet Status 
Datum: 18:55 Mo 23.07.2007
Autor: BertanARG

Hi,

ich will ein Gleichungssystem lösen, das auf ein Gleichgewicht führen soll. Die Gleichung sieht also folgendermaßen aus.
x=x*P, oder x*(E-P)=0.

Das Problem, wenn ich es mit Matlab lösen will ist, dass ich nur die triviale Lösung x=0 erhalte.

Ich gehe folgendermaßen vor, lese die Matrix P aus einer Textdatei ein (ist korrekt, und sie ist auf jeden Fall lösbar!!!).

E=eye(n), mit n als Dimension der Matrix P
b=zeros(1,n)

x=b/(E-P)


Wo steckt der Fehler?


Viele Grüße und danke schon mal

        
Bezug
LGS mit b=0 lösen: Antwort
Status: (Antwort) fertig Status 
Datum: 20:19 Mo 23.07.2007
Autor: dormant

Hi!

Wenn man die Dokumentation von Matlab durchliest, dann sieht man, dass

b/(E-P) "ungefähr das Gleiche wie" b*inv(E-P) ist.

Falls da eine nicht-triviale Lösung existier, dann ist E-P singulär (das kannst du leicht überprüfen: wenn det(E-P)=0, dann ist sie singulär, sonst gibt es keine andere Lösung).

Sonst kannst du null((E-P)') benutzen, was eine Basis des Lösungsraums ausspuckt. Jede Linearkombination von diesen Vektoren ist eine Lösung von xA=0.

Gruß,
dormant

Bezug
                
Bezug
LGS mit b=0 lösen: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 00:00 Di 24.07.2007
Autor: BertanARG

Hi,

die Determinante ist zwar [mm] 10*e^{-15}, [/mm] aber sie ist ganz sicher eine Matrix die man mittels Gaußalgorithmus eindeutig lösen kann.
Für eine kleinere Matrix habe ich auch die Lösung, die eingesetzt das gewünschte Ergebnis liefert.

wenn ich nun allerdings...
null((E-P)') eingebe, erhalte ich Empty Matrix: 6 by 0. Was macht dieser Befehl denn genau?
Ich habe es auch mit der Matrix [mm] M=\pmat{ 1 & 1 \\ 1 & 2 } [/mm] getestet, mit dem selben Fehler (2 by 0 stattdessen).

Wenn ich eine Basis des Lösungraums erhalten würde, wäre es schon perfekt. Die müsste ich dann lediglich noch auf die Summe 1 normieren, da es sich um eine stochastische Matrix handelt.


Viele Grüße und danke schon mal


Bezug
                        
Bezug
LGS mit b=0 lösen: Antwort
Status: (Antwort) fertig Status 
Datum: 01:57 Di 24.07.2007
Autor: dormant

Hi!

> Hi,
>  
> die Determinante ist zwar [mm]10*e^{-15},[/mm] aber sie ist ganz
> sicher eine Matrix die man mittels Gaußalgorithmus
> eindeutig lösen kann.

Also 10e-15 (was eigentlich [mm] 10^{-15} [/mm] bedeutet) ist eigentlich so gut wie Null. Was heißen würde, dass deine Matrix so gut wie singulär ist. Und schlecht konditioniert, weshalb wahrscheinlich kein brauchbares Ergebnis rauskommt...

>  Für eine kleinere Matrix habe ich auch die Lösung, die
> eingesetzt das gewünschte Ergebnis liefert.
>  
> wenn ich nun allerdings...
>  null((E-P)') eingebe, erhalte ich Empty Matrix: 6 by 0.

Das bedeutet, dass die Funktion null der Meinung ist, dass deine Matrix nicht singulär ist, was eigentlich auch der Fall ist.

> Was macht dieser Befehl denn genau?

Der gibt an die Basisvektoren des Lösungsraums von Ax=0. Es kann sein, dass null vorab prüft, ob det(A)=0. Wenn nicht, dann spart er sich die Arbeit. Weiß ich nicht genau.

>  Ich habe es auch mit der Matrix [mm]M=\pmat{ 1 & 1 \\ 1 & 2 }[/mm]
> getestet, mit dem selben Fehler (2 by 0 stattdessen).

Hättest du da eine bessere Lösung zu bieten? [mm] \det(M)\not=0, [/mm] da gibt es nur die triviale Lösung. Du kriegst eine nichttriviale Lösung, nur wenn die Spalten linear abhängig sind, wie in [mm] M=\pmat{ -1 & -2 \\ 1 & 2 }, [/mm] da ist die Lösung von Mx=0 [mm] x=\vektor{-2 \\ 1}, [/mm] oder eher alle Vielfachen davon. Ich schätze mal du steckst in dem Fall, dass deine Matrix so aussieht: [mm] M=\pmat{ -1.0000001 & -2 \\ 1 & 2 }. [/mm] Da musst du schauen wie man die Kondition verbassern kann.
  

> Wenn ich eine Basis des Lösungraums erhalten würde, wäre es
> schon perfekt. Die müsste ich dann lediglich noch auf die
> Summe 1 normieren, da es sich um eine stochastische Matrix
> handelt.

Schau dir doch mal das []hier an.

Gruß,
dormant

Bezug
                                
Bezug
LGS mit b=0 lösen: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 10:53 Di 24.07.2007
Autor: BertanARG

Hi,

okay da hatte ich was falsch verstanden. Die eigentliche Matrix M ist diagnoalisierbar, während P=E-M natürlich singulär sein muss. Ansonsten würde ich keine von Null verschiedene Lösung erhalten.

Ich habe es nun folgendermaßen geschafft. Ich ließ M einlesen, habe E erstellt und die Matrix P=E-M berechnen lassen.
Dann folgendermaßen:
P1=P', da ich die Gleichung x*P=x lösen muss.
[L,U]=lu(P1)
In der Matrix U habe ich dann den Wert der letzten Zeile und letzten Spalte auf Null gesetzt (er war bei [mm] e^{-9}, [/mm] und in den Zeilen darüber waren ohnehin Einträge in der letzten Spalte).

Dann konnte ich wirklich mit
x=null(L*U) den benötigten Vektor berechnen. Diesen musste ich noch noch auf die Vektorsumme 1 normieren, und zu einem Spaltenvektor transponieren.
Und dann war x*M=x!!



Tausend Dank, das hilft mir unglaublich viel weiter.

Bezug
                                        
Bezug
LGS mit b=0 lösen: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 11:21 Di 24.07.2007
Autor: BertanARG

sorry,

das sollte eine Mitteilung werden und keine neue Frage. Kann sie bitte jemand als beantwortet markieren.


Bezug
                                
Bezug
LGS mit b=0 lösen: Frage (überfällig)
Status: (Frage) überfällig Status 
Datum: 03:35 Fr 10.08.2007
Autor: BertanARG

Hi,

ich habe noch mal ein Problem zu diesem Thema. Bis auf einen Fall konnte ich nun für alle meine Modelle eine Lösung bestimmen.
Dieser eine bereitet mir jedoch Kopfzerbrechen.

Meine Ausgangsmatrix ließ ich mittels LU-Zerlegung in die Matrizen L und U zerlegen.
In der U-Matrix war der Wert U(2380,2380) sehr klein, aber nicht gleich Null (vermutlich Rundungsfehler).
Nach manuellen Setzen auf Null konnte ich die Lösungen bestimmen.

In dem einen Fall erhalte ich dennoch am Ende die Fehlermeldung "empty matrix: 2380-by-Null. Unterhalb der Diagonalen besitzt meine U-Matrix aber ganz sicher ausschließlich Nullen.

Was kann denn noch die Ursache dafür sein? Welche Eigenschaft muss denn die L-Matrix erfüllen, damit eine Lösung existiert?


Grüße und danke schon mal

Bezug
                                        
Bezug
LGS mit b=0 lösen: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 05:44 So 12.08.2007
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
ev.vorhilfe.de
[ Startseite | Mitglieder | Impressum ]