Programmieraufgabe Pivotsuche < Lin. Gleich.-systeme < Numerik < Hochschule < Mathe < Vorhilfe
|
Aufgabe | Zu schreiben is ein Programm des mit Hilfe des Gauß-Algorithmus mit Spaltenpivotsuche eine LR Zerlegung für eine Matrix A berechnet. |
Ich hab bisher Probleme bei der Pivotsuche,
unser Lösungsansatz war:
double** pivot(int n, int m, int k)
{ /*} sonst motzt diese Page! ;) */
int j,i ; /*i sind Spalten, j sind Zeilen*/
double** C = mk_matrixd(m,n); /*Hilfsmatrix C*/
double** A = mk_matrixd(m,n); /* unsere gegeben Matrix A*/
for (j=1; j< m; j++)
{
if (betrag(A[k][j])>betrag(A[k][0]))
/* Betragsgrößtes Element wird gesucht*/
{
for (i=0; i < n ; i++)
C[i][j] = A[i][0]; /* erste Spalte wird zwischengespeichert*/
A[i][0] = A[i][j]; /* Betragsgrößte wird neue erste Spalte*/
A[i][j] = C[i][j]; /* alte erste Spalte wid wieder eingefügt*/
}
else
A[i][0] = A[i][0]; /*ansonsten passiert nix*/
return A; /*Matrix A wird zurückgegeben*/
}
Das Programm lässt sich nicht ausführen, hat jemand ne Ahnung wo der Fehler liegt, oder hab einen grundsätzlichen Fehler drinnen?
ch habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo gartenzwergjoe,
Ich hab erstmal Rückfragen
Was genau soll die Funktion tun?
Was tut die Funktionen mk_matrixd(m,n)?
Wofür brauchst Du eine ganze Matrix C reicht nicht ein Element?
Eigentlich ist die Pivotsuche doch in wenigen Zeilen code erledigt wieso machst du da eine eigene Funktion?
viele Grüße
mathemaduenn
|
|
|
|
|
Die Funktion mk allokiert den Speicherplatz für die jeweiligen Matrizen.
Aber ich brauch da wirklich keine ganze Matrix sondern nur eine Spalte, dankeschön!
Und warum Unterprogramme, wurde so im ersten Beispiel gezeigt...kA..
Ich schau mal ob er mir damit keine Fehlermeldung mehr bringt! Danke!
|
|
|
|