Intervallschachtelungsverfahren
Beschreibung
Da lässt sich nicht mehr viel erklären. Mit ./intervallschachtelung
erhält man die Aufforderung einen Radikanten einzugeben und die Anzahl der Nachkommastellen. Ein Beipiel ist:
Kommandozeile |
---|
Eingabe eines Radikanden 13 Wieviele Nachkommastellen? 4 3.000000 <= wurzel(13.000000) <= 4.000000 3.500000 <= wurzel(13.000000) <= 4.000000 3.500000 <= wurzel(13.000000) <= 3.750000 3.500000 <= wurzel(13.000000) <= 3.625000 3.562500 <= wurzel(13.000000) <= 3.625000 3.593750 <= wurzel(13.000000) <= 3.625000 3.593750 <= wurzel(13.000000) <= 3.609375 3.601563 <= wurzel(13.000000) <= 3.609375 3.605469 <= wurzel(13.000000) <= 3.609375 3.605469 <= wurzel(13.000000) <= 3.607422 3.605469 <= wurzel(13.000000) <= 3.606445 3.605469 <= wurzel(13.000000) <= 3.605957 3.605469 <= wurzel(13.000000) <= 3.605713 3.605469 <= wurzel(13.000000) <= 3.605591 3.605530 <= wurzel(13.000000) <= 3.605591 |
Programm
Hier kommt das Pascal-Programm:
intervallschachtelung.pas |
---|
program Wurzel; var radikand : real; obere_grenze : real; untere_grenze : real; zwischenergebnis : real; nachkommastellen : integer; function mittelwert(a,b : real) : real; begin mittelwert:=(a+b)/2; end; { mittelwert } function neue_obergrenze(alt,neu,w : real) : real; begin if (sqr(neu)>=w) then neue_obergrenze:=neu else neue_obergrenze:=alt end; { neue_obergrenze } function neue_untergrenze(alt,neu,w : real) : real; begin if (sqr(neu)<=w) then neue_untergrenze:=neu else neue_untergrenze:=alt end; { neue_untergrenze } begin writeln('Eingabe eines Radikanden'); readln(radikand); writeln('Wieviele Nachkommastellen?'); readln(nachkommastellen); { Die Anfangswerte für die Grenzen werden gesetzt} untere_grenze := 0; obere_grenze := 1; { Die ersten Grenzen werden gesucht} while (not((sqr(untere_grenze)<=radikand) and (sqr(obere_grenze)>=radikand))) do begin untere_grenze := untere_grenze+1; obere_grenze := obere_grenze+1; end; { Wenn der Radikand bereits untere oder obere Grenze ist, kann abgebrochen werden} if (sqr(untere_grenze)=radikand) then writeln('Die Wurzel von ist: ',radikand:0:nachkommastellen+2, ' ist ', untere_grenze:0:nachkommastellen); if (sqr(obere_grenze)=radikand) then writeln('Die Wurzel von ist: ',radikand:0:nachkommastellen+2, ' ist ', obere_grenze:0:nachkommastellen); { Das Intervallschachtelungsverfahren wird durchgeführt} if ((sqr(untere_grenze)<>radikand) and (sqr(obere_grenze)<> radikand)) then begin repeat writeln(untere_grenze:30:nachkommastellen+2, ' <= wurzel(',radikand:0: nachkommastellen+2, ') <= ',obere_grenze:10:nachkommastellen+2); zwischenergebnis:=mittelwert(untere_grenze,obere_grenze); obere_grenze:=neue_obergrenze(obere_grenze,zwischenergebnis,radikand); untere_grenze:=neue_untergrenze(untere_grenze,zwischenergebnis,radikand); until (obere_grenze-untere_grenze<1/exp(nachkommastellen*ln(10))); writeln(untere_grenze:30:nachkommastellen+2, ' <= wurzel(',radikand:0: nachkommastellen+2, ') <= ',obere_grenze:10:nachkommastellen+2); end; end. |
Letzte Änderung: 26.04.2012: 17:23:17 von X. Rendtel
Dieses Werk bzw. Inhalt steht unter einer Creative Commons Namensnennung-Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.
Beruht auf einem Inhalt unter www.rendtel.de.