LR Zerlegung |
04.01.2013, 20:31 | blurry | Auf diesen Beitrag antworten » | ||||||||||
LR Zerlegung Hab ihn meiner Meinung nach 1:1 implementiert aber es kommt was anderes raus http://de.wikipedia.org/wiki/Gau%C3%9Fsc...s_in_Pseudocode |
||||||||||||
04.01.2013, 20:52 | Math1986 | Auf diesen Beitrag antworten » | ||||||||||
RE: LR Zerlegung
|
||||||||||||
04.01.2013, 22:44 | blurry | Auf diesen Beitrag antworten » | ||||||||||
ja hier meine IMplementierung: int mat[3][3]={ {6,0,0 },{9,2,0},{3,8,1 }}; int n=3; int r= 1; for(int i = 0; i<n;i++) { // obere Matrix for ( int j = i; j<n;j++) { for(int k=0;k<i-1;k++) mat[i][j]-=mat[i][k]*mat[k][j]; } //untere Matrix for(int j = i+1 ;j<n;j++) { for(int k = 1; k<i-1;k++) mat[j][i]-=mat[j][k] * mat[k][i]; mat[j][i]/=mat[i][i] ; } } |
||||||||||||
04.01.2013, 23:46 | Math1986 | Auf diesen Beitrag antworten » | ||||||||||
Kann auch nicht funktionieren... Erstens kompiliert der code nichtmal (ersetze "int mat[3][3]" durch "int mat[][]"), zweitens hat deine Matrix int-Einträge, also Ganzzahlen. Eine LU-Zerlegung ist aber nicht zwingend ganzzahlig, was aus der Zeile mat[j][i]/=mat[i][i] ; klar werden sollte. Du solltest hier den Typ double verwenden. Zur Kontrolle (Matlab), die Zerlegung ist nicht ganzzahlig:
|
||||||||||||
04.01.2013, 23:51 | blurry | Auf diesen Beitrag antworten » | ||||||||||
hast du dich hier verschrieben ?? (ersetze "int mat[3][3]" durch "int mat[3][3]") Und LR- Zerlegung ist doch was anderes als LU Zerlegung ? |
||||||||||||
04.01.2013, 23:59 | Math1986 | Auf diesen Beitrag antworten » | ||||||||||
1) Ja, habe mich verschrieben. Gemeint war mat[][], wie du auch selbst hättest herausfinden können. Frage mich, wie du das gestestet haben willst. 2) LR und LU (für lower-upper) ist das selbe. Steht auch im Wikipedia-Artikel:
|
||||||||||||
Anzeige | ||||||||||||
|
||||||||||||
05.01.2013, 00:09 | blurry | Auf diesen Beitrag antworten » | ||||||||||
Das ganze ist c++ Code. mat[][] geht nicht !! UNd auch double hilft nicht . Keine Ahnung wo der Fehler liegt |
||||||||||||
05.01.2013, 00:17 | Math1986 | Auf diesen Beitrag antworten » | ||||||||||
Ach, C++.... Bin von Java ausgegangen. In C++ vergiss, was ich gesagt habe. Macht sonst auch keinen Unterschied. Rechne es von Hand und mach dir an den einzelnen Schritten Console-Ausgaben, dann kannst du den fehler finden. Der Code auf Wikipedia scheint auf den ersten blick korrekt zu sein. |
||||||||||||
05.01.2013, 00:26 | blurry | Auf diesen Beitrag antworten » | ||||||||||
die 1.Zeile der matrix stimmt ja auch immer. NUr die anderen nicht also bei einer 3 dim Matrix die Zeilen 2 und 3 . Und der Code kompiliert. |
||||||||||||
05.01.2013, 00:31 | Math1986 | Auf diesen Beitrag antworten » | ||||||||||
|
||||||||||||
05.01.2013, 01:06 | blurry | Auf diesen Beitrag antworten » | ||||||||||
ich habe den Pseudo Code 1:1 abgetippt. Nur dass halt bei C++ der Index bei 0 losgeht. Ich weiss echt nicht wo der Fehler liegen kann. |
||||||||||||
05.01.2013, 09:47 | Math1986 | Auf diesen Beitrag antworten » | ||||||||||
Dann mach dir innerhalb der Schleifen Debug-Ausgaben und lass dir die Schritte ganz genau ausgeben. Ich vermute mal, du hast irgendwo einen Indizierungsfehler, der Rest scheint zu stimmen. |
||||||||||||
12.01.2013, 22:26 | qwert-Taste | Auf diesen Beitrag antworten » | ||||||||||
Falls noch Interesse besteht: Es muss <= statt < heißen |
||||||||||||
13.01.2013, 01:01 | Math1986 | Auf diesen Beitrag antworten » | ||||||||||
Ja, das hilft bei 4mal < im Code nicht so ganz Poste doch mal den funktionierenden Code PS: Bist du der ursprüngliche Fragesteller? Wenn ja, dann bleib doch bei dem Account. |
||||||||||||
13.01.2013, 01:16 | qwert-Taste | Auf diesen Beitrag antworten » | ||||||||||
bzw.
Und nein, ich bin nicht der Fragesteller |
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
|
Die Neuesten » |
|