![]() |
AW: Gauß-Verfahren - Matrix lösen
Wenn es nur:-D darum geht, schnelle Langzahlarithmetik einzusetzen, kannst Du auch meine
![]() |
AW: Gauß-Verfahren - Matrix lösen
Was kriegst denn raus, wenn du (bei Floats) die Probe machst, also z.B. so. Da kann doch nix nennenswertes rauskommen?
Delphi-Quellcode:
function TGauss.GetMaxInversError: Extended; // E = A x A^-1;
var I, J, K: integer; Value: Extended; begin Result := 0; SetLength(FTemp, Count, Count); try for I := 0 to Count - 1 do for J := 0 to Count - 1 do begin Value := 0; for K := 0 to Count - 1 do Value := Value + FA[I, K] * FI[K, J]; FTemp[I, J] := Value; end; for I := 0 to Count - 1 do for J := 0 to Count - 1 do begin if I = J then Value := 1 else Value := 0; Result := Max(Result, Abs(Value - FTemp[I, J])); end; finally SetLength(FTemp, 0); end; end; |
AW: Gauß-Verfahren - Matrix lösen
Mal ein wenig zurück zur Ursprungsfrage...
Das Verfahren hat der olle Gaus entwickelt, um Rundungsfehler zu minimieren. Wenn ich nun durch die Rechnungen gar keine Rundungsfehler habe, brauche ich die auch nicht zu minimieren und kann ganz geradeaus a) Die Dreiecksform berechnen b) Rückwärtseinsetzen c) fertig sein was das genaue Rechnen betrifft, wäre es doch ganz easy sich eine Klasse zu schreiben, die von Haus aus Natürliche Zahlen bis 2^256 unterstützt. Wird durch eine Operation eine größere Zahl erforderlich, holt sich diese Klasse einen weiteren 256-Bit-Integer dazu ... Die Klasse implementiert dann Addition Subtraktion und Multiplikation (alles relativ einfach). Eine weitere Klasse besorgt das Zusammenfassen von Zähler und Nenner und am Ende der Berechnung die Division. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz