Matrixinversion über Gauß-Jordan Algorithmus / Determinantenberechnung
-
bounceboy schrieb:
aber ich hab glaub ich eine lösung zum umsetzen der multiplikation gefunden
ach was...
mit blatt->c meine ich: 1+1 => 1+1 und 1*1 => 1*1. a = b => a = b. Viel Spass beim reinknien in C, darum kommst du wohl nicht rum. Deine Hausaufgaben mache ich dir nicht, ausser gegen Geld vielleicht
-
hi
ich bin mittlerweile ganz gut vorangekommen ...
wie deklariere ich variablen wie a11, a12, a13 usw ????
weil das will das blöde C nicht
-
int a12 = 5; /* einzelne variable */ int mat[3][3]; /* 3x3 matrix */ mat[0][1] = 4; /* das entspricht erster zeile zweites element */ size_t matrix_dim1 = 7; size_t matrix_dim2 = 3; int *dyn_mat = (int *)malloc(matrix_dim1 * matrix_dim2 * sizeof(int)); /* dynmat ist jetz ein eindimensionales array mit 7*3 intfeldern. addressierung wie folgt */ int i = 5; // zeile int j = 2; // spalte int elem_5_2 = dyn_mat[ i*matrix_dim1 /* 'zeile' mal die zeilenlänge überspringen */ + j /* und dann noch bis zur j. spalte gehen */ ];
Für andere Datentypen analog. Nur Mut: ein kleines C Tutorial und du hast das alles in 30 minuten drauf!
-
Korbinian schrieb:
Nur Mut: ein kleines C Tutorial und du hast das alles in 30 minuten drauf!
Naiv oder arrogant?
-
Realist. Wer mit diesem Beispiel Variablendeklaration, Zuweisung und Arrayerstellung in 30min nicht versteht lässt das ganze lieber bleiben.
-
danke für die motivation
-
wie krieg ich die eingegebene matrix in matrixform auf den bildschirm ???
printf("Bitte Zeilenanzahl der Matrix eingeben: "); scanf("%d",&x); printf("\nBitte Spaltenanzahl der Matrix eingeben: "); scanf("%d",&y); printf("\nDie Matrix hat %d",x); printf(" Zeilen und %d",y); printf(" Spalten.\n\n"); if (x!=y) { printf("Die Matrix ist nicht quadratisch ! Keine Berechnung der Inversen moeglich !\n\n"); } else { printf("Berechnung der Inversen Matrix:\n\n"); //Eingabe der Matrix { float matrix[100][100]; float m; float *pmatrix; pmatrix=&matrix[0][0]; printf("Bitte zeilenweise die Zahlen der Matrix eingeben: \n\n"); for(int i=0;i<x;i++) { for(int j=0;j<x;j++) { scanf("%f",&m); matrix[i][j]=m; } } { for (int i=0;i<x;i++) { *pmatrix++; printf("%f", *pmatrix); } for (int j=0;i<x;j++) { *pmatrix++; printf("\n%f", *pmatrix++); }
weil so klappt es leider nicht
-
so jetzt hab ich das doch selbst geschafft ! Matrixeingabe, ausgabe usw. kein problem !
nur ich habe ein ganz banales problem !
ich habe mein programm in 2 teile unterteilt !
1. inverse matrix bilden
2. multiplikation von matrizenam anfang gibt der benutzer 1 oder 2 ein !
ich wollte jetzt mit if (p==1) bzw. if (p==2) in die einzelnen programme "springen" und bei anderer eingabe else ABBRUCHaber es hüpft immer nur ins erste programm !!!
was ist da los ????? bitte postet
-
bounceboy schrieb:
am anfang gibt der benutzer 1 oder 2 ein !
ich wollte jetzt mit if (p==1) bzw. if (p==2) in die einzelnen programme "springen" und bei anderer eingabe else ABBRUCHWie sieht das denn in Quellcode-Form aus?
if(p==1) invert(); else if(p==2) mult(); else exit(1);
(wenn deine Programmstruktur keine Ähnlichkeit damit hat, solltest du nochmal drüber nachdenken)
PS: Eventuell könntest du auch switch verwenden:
switch(p) { case 1: invert();break; case 2: mult();break; default:exit(1); }
-
sorry sorry ....
ich hab alle meine geschweiften klammern nochmal überprüft ....
mein problem ist gelöst !
-
Hi,
kannst du mal sagen wie du das Problem der Matrixinversion gelöst hast?
Hatte da auch mal vor Jahren eine Hausarbeit zu geschrieben, bin bis jetzt aber noch nicht dahintergekommen, wie das Funktioniert.Hat da vielleicht jemand eine Lösung?