Registriert seit: 28. Dez 2004
Ort: Salzburg
379 Beiträge
|
Re: Lineares Gleichungssystem lösen?
6. Feb 2005, 18:02
Man sieht auf den ersten Blick, dass dein Gleichungssystem nicht linear ist. Gauss bzw. Gauss-Jordan können aber nur mit linearen Gleichungssystemen rechnen. Außerdem: darf ich fragen, warum deine Lösung wie eine kubische Gleichung aussieht?
btw: hier mein Gauss-Jordan, is etwas effektiver als Gauss:
//EDIT: musst den Code natürlich noch anpassen; is ein älterer Code, an dem ich nicht mehr arbeite
Delphi-Quellcode:
program gauss_jordan;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
i, j, k: Integer; //für Schleifen
pivot, z: Integer; //für Pivotelement und gemerktes Element; zum Multiplizieren
var
matrix: Array [1..3] of Array [1..3] of Integer;
loesungsvektor: Array [1..3] of Integer;
ergebnis: Array [1..3] of Integer;
procedure ZwischenergebnisAnzeigen;
var
l, m: Integer;
begin
WriteLn;
for l := 1 to 3 do begin
WriteLn;
for m := 1 to 3 do begin
Write(matrix[l, m]: 12);
end;
Write(' |', loesungsvektor[l]: 12);
end;
WriteLn;
WriteLn('z: ', z, ' pivot: ', pivot, ', j: ', j, ', k: ', k);
end;
begin
WriteLn('Gleichungslösen nach Gauss-Jordan');
WriteLn('=================================');
WriteLn;
WriteLn('Bitte geben Sie die Komponenten der Koeffizientenmatrix ein (Zeile, Spalte):');
WriteLn;
for i := 1 to 3 do begin
for j := 1 to 3 do begin
Write('Element ', i, ',', j, ': ');
ReadLn(matrix[i, j]);
end;
end;
WriteLn;
WriteLn('Bitte geben Sie die Komponenten des Lösungsvektors ein:');
WriteLn;
for i := 1 to 3 do begin
Write('Komponente ', i, ': ');
ReadLn(loesungsvektor[i]);
end;
//Gauss-Jordan
for i := 1 to 3 do begin
pivot := matrix[i, i]; //Pivotelement
for j := 1 to 3 do begin //Zeilen
if i <> j then begin //Pivotzeile unverändert lassen
z := matrix[j, i]; //aktuelles Element merken
for k := 1 to 3 do begin //Spalten
ZwischenErgebnisAnzeigen;
ReadLn;
matrix[j, k] := pivot * matrix[j, k] - z * matrix[i, k]; //Elemente berechnen
end;
loesungsvektor[j] := pivot * loesungsvektor[j] - z * loesungsvektor[i]; //Komponenten des Lösungsvektors analog berechnen
end;
end;
end;
ZwischenergebnisAnzeigen;
//Gauss-Jordan Ende
for i := 1 to 3 do
ergebnis[i] := loesungsvektor[i] div matrix[i][i];
WriteLn;
WriteLn;
WriteLn('Lösung der Gleichung:');
WriteLn;
for i := 1 to 3 do
WriteLn('Unbekannte ', i, ': ', ergebnis[i]);
WriteLn;
WriteLn('-----------------------------------------------------------------------------');
WriteLn('Gleichungslösen nach Gauss-Jordan - (c) by Dust Signs Andreas Unterweger 2004');
ReadLn;
end.
Dust Signs
//EDIT2+3: immer dieser Tippfehler ^^
(aka AXMD in der EE)
Die Nummer, die Sie gewählt haben, ist imaginär. Bitte drehen Sie Ihr Telefon um 90° und versuchen Sie es erneut.
|