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

große LGS mit Bandmatrizen lösen

 

matlaber2012
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 06.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.02.2012, 09:25     Titel: große LGS mit Bandmatrizen lösen
  Antworten mit Zitat      
Hallo zusammen,

mit welchen Befehlen kann man effektiv große lineare Gleichungssysteme lösen? Dabei soll die Matrix eine schwach besetzte quadartische Bandmatrix sein (Hauptdiagonale, beide Nebendiagonale und jeweils eine weitere obere bzw. untere Nebendiagonale sind besetzt). Die Matrix selber hat ca. eine Größe von 200000x200000.

Vielen Dank für eure Hilfe.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.02.2012, 19:03     Titel:
  Antworten mit Zitat      
Hallo,

das Thema hatten wir doch schon.
Du musst die Matrix dünnbesetzt erstellen, z.B. mit SPDIAGS. Dann kannst du "ganz normal" \ verwenden. \ erkennt automatisch, dass es sich um eine dünnbesetzte Matrix handelt.

Code:
n = 10;
e = ones(n,1);
A = spdiags([e -2*e e], -1:1, n, n);
x = A\rand(10,1)


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
matlaber2012
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 06.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2012, 07:42     Titel:
  Antworten mit Zitat      
Ich dachte auch, dass "\" weiterhilft. Dazu habe ich mir eine Bandmatrix A mit der oben genannten Struktur aus Zufallvariablen generieren lassen und eine zufälligen rechte Seite b. x=A\b führt zu keiner Lösung.

Hat irgendjemand weitere Ideen???
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: 16.02.2012, 16:54     Titel:
  Antworten mit Zitat      
Hallo matlaber2012,

Was bedeutet "führt zu keiner Lösung" genau?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 06.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2012, 17:05     Titel:
  Antworten mit Zitat      
Bei "/" gibt Matlab mir eine Fehlermeldung aus, dass die Matrix schlechte Eigenschaften hat.
Bei den vorgefertigten Algorithmen für Lösungen von schwach besetzten linearen Systemen sagt Matlab, dass die Lösung nach einer gewissen Iterationszahl nicht unter einer bestimmten Toleranzgrenze liegt. Ein Abändern der Iterationszahl und der Toleranzgrenze ändert nix. Vielleicht liegt es daran, dass die schwach besetzte Matrix aus Zufallszahlen besteht?!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.02.2012, 19:01     Titel:
  Antworten mit Zitat      
Hallo,

kannst du Beispielcode posten, anhand dessen das Verhalten nachvollziehbar ist?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
matlaber2012
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 06.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2012, 17:32     Titel:
  Antworten mit Zitat      
a=rand(200000,1);
b=rand(200000,1);
c=rand(200000,1);
d=rand(200000,1);
e=rand(200000,1);
f=rand(200000,1);
m=spdiags([a 4*b c -100*d e], [-200 -1 0 1 200],200000,200000);
x=m/f;
mein matlab gibt dann irgendwann eine fehlermeldung aus
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.02.2012, 18:05     Titel:
  Antworten mit Zitat      
Hallo,

du musst \ statt / verwenden.

Wenn es Fehlermeldungen bzgl. Singularität gibt, dürfte das weniger an Zufallszahlen liegen als (wie die Fehlermeldung auch sagt) an einer ungünstigen Skalierung.

Das hier läuft z.B. bei mir ohne Probleme (ca. 25s):

Code:
N = 200000;
a=rand(N,1);
b=rand(N,1);
c=rand(N,1);
d=rand(N,1);
e=rand(N,1);
f=rand(N,1);
m=spdiags([a 4*b c -4*d e], [-200 -1 0 1 200],N,N);
x=m\f;


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
matlaber2012
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 06.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.02.2012, 13:59     Titel:
  Antworten mit Zitat      
sorry, ich benutze auch \. ist der backslash befehl also eine art high end befehl, der selbstständig die matrixstruktur analysiert und einen geeigneten lösungalgorithmus sucht?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.02.2012, 14:02     Titel:
  Antworten mit Zitat      
Hallo,

kannst du so sehen. Details zu den verwendeten Algorithmen findest du in der Dokumentation
Code:


Grüße,
Harald
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 - 2024 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.