Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#23

Re: Quadratische Gleichungen vollständig lösen

  Alt 26. Jul 2009, 23:27
Dann werfe ich mal das hier in den Raum:
Delphi-Quellcode:
type
TComplex = record
  real, imaginary: Double;
end;

TQuadraticSolution = Array[0..1] of TComplex;

implementation

function SolveQuadratic(a, b, c: Double): TQuadraticSolutiuon;
var
  t, ti: Double;
begin

if iszero(b) and iszero(c) then
begin
  Result[0].real := 0;
  Result[0].imaginary := 0;

  Result[1].real := 0;
  Result[1].imaginary := 0;

  exit;
end;

if iszero(a) then
  raise Exception.Create('Coefficient a must not be zero!');

if b*b-4*a*c < 0 then
begin
  t := -0.5 * b;
  ti := -0.5 * sign(b) * sqrt(4*a*c-b*b));

  Result[0].real := t/a;
  Result[0].imaginary := ti/a;

  Result[1].real := t/a;
  Result[1].imaginary := -1 * ti/a;
end
else
begin
  t := -0.5 * (b + sign(b) * sqrt(b*b-4*a*c));
  Result[0].real := t/a;
  Result[0].imaginary := 0;

  Result[1].real := c/t;
  Result[1].imaginary := 0;
end;
end;
Ich hab versucht, das ganze etwas an die numerische Berechnung anzupassen ( http://en.wikipedia.org/wiki/Quadrat...implementation )

Edit: kleine Korrektur - ist leider nicht ausprobiert
  Mit Zitat antworten Zitat