dh-Materialien
Einführung in Maple    
Übungen
 

Das Intervallhalbierungsverfahren

> restart;

Es soll eine Nullstelle der folgenden Funktion bestimmt werden:

> f:= x -> x^3 + x^2 - 2*x - 1;  

> plot(f(x), x = -3..2.5, 
    font   = [COURIER, 12],
    labels = ["x", "f(x)"]);

Halbierung des Intervalls [l, r], und zwar so, dass die Vorzeichen von f(l) und f(m)  bzw. von f(m) und f(r) verschieden voneinander sind:

> IH:= proc (l, r)
    local m;
    m:= (l + r)/2;
    if signum(f(l))*signum(f(m)) = -1 then
      RETURN ([l, m])
    else
      RETURN ([m, r]);
    fi:
  end:

Definition des Startintervalls:

> J[neu]:= [-2.0, -1]:

Sukzessive Intervallhalbierung liefert eine Intervallschachtelung:

> while ((J[neu][2] - J[neu][1]) > 10E-7) do
    J[alt]:= J[neu]:
    J[neu]:= IH(J[alt][1], J[alt][2]):
    printf("%s%f%s%f%s\n", "[", J[neu][1], ", ", J[neu][2], "]");
  od:

   
  [-2.000000, -1.500000]
  [-2.000000, -1.750000]
  [-1.875000, -1.750000]
  [-1.812500, -1.750000]
  [-1.812500, -1.781250]
  [-1.812500, -1.796875]
  [-1.804688, -1.796875]
  [-1.804688, -1.800781]
  [-1.802734, -1.800781]
  [-1.802734, -1.801758]
  [-1.802246, -1.801758]
  [-1.802002, -1.801758]
  [-1.802002, -1.801880]
  [-1.801941, -1.801880]
  [-1.801941, -1.801910]
  [-1.801941, -1.801926]
  [-1.801941, -1.801933]
  [-1.801941, -1.801937]
  [-1.801939, -1.801937]
  [-1.801938, -1.801937]

 Home   Back   Top