AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Gauß-Verfahren - Matrix lösen

Ein Thema von Danny92 · begonnen am 29. Aug 2015 · letzter Beitrag vom 1. Sep 2015
Antwort Antwort
Seite 4 von 4   « Erste     234
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#31

AW: Gauß-Verfahren - Matrix lösen

  Alt 1. Sep 2015, 11:49
Wenn es nur darum geht, schnelle Langzahlarithmetik einzusetzen, kannst Du auch meine MPArith-Bibliothek verwenden (die ca 150 Mio Dezimalstellen sollten ja ausreichen). Eine Schwierigkeit bei Problemen wie Deinem ist halt, das es kein fertige Lösung gibt, man es selbst programmieren und sich erstmal einarbeiten muß. Aber wenn Du Deine Stringroutinen durch mp_xxx-Routinen ersetzt, sollte es möglich sein.
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.376 Beiträge
 
Delphi 2007 Professional
 
#32

AW: Gauß-Verfahren - Matrix lösen

  Alt 1. Sep 2015, 14:30
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;
  Mit Zitat antworten Zitat
Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#33

AW: Gauß-Verfahren - Matrix lösen

  Alt 1. Sep 2015, 16:57
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.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf