|
|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 1792 (0x700)
Types: TextFile
Names: »BISEC.PAS«
└─⟦08ea08c61⟧ Bits:30003924 PolyPascal programmer
└─⟦this⟧ »BISEC.PAS«
└─⟦092727b26⟧ Bits:30005927 Demoprogrammer til Pascal bog (Jet-80)
└─⟦this⟧ »BISEC.PAS«
└─⟦3702e543b⟧ Bits:30003064 Demoprogrammer A-J til Pascal bog
└─⟦this⟧ »BISEC.PAS«
PROGRAM bisec;
(* I dette program gentages intervalhalveringerne indtil *)
(* intervallets endepunkter falder sammen (i datamatens *)
(* interne repræsentation af endepunkterne). *)
(* En mere økonomisk metode ville være at gentage halve- *)
(* ringerne, indtil intervallængden var mindre end en *)
(* bestemt tolerenceværdi. *)
VAR
x, a, b, gla, glb, glmellem, mellem : REAL;
i, j, halvering : INTEGER;
ch : CHAR;
FUNCTION f(x : REAL) : REAL;
BEGIN
f := COS(x) - x;
END;
BEGIN
WRITE(CLRHOM);
WRITELN('Nulpunkter ved bisection');
WRITELN;
REPEAT
REPEAT
WRITE('Begyndelsespunkt i intervallet: '); READLN(a);
WRITE('Slutpunkt i intervallet : '); READLN(b);
IF f(a) * f(b) > 0
THEN WRITELN('Samme funktionsværdi i intervalendepunkterne!');
UNTIL f(a) * f(b) <= 0;
gla := a;
glb := b;
mellem := (a + b) / 2;
halvering := 0;
REPEAT
glmellem := mellem;
IF f(a) * f(mellem) >= 0 THEN
a := mellem
ELSE
b := mellem;
mellem := (a + b) / 2;
halvering := halvering + 1;
WRITELN(mellem);
UNTIL glmellem = mellem;
WRITELN('Nulpunkt i intervallet fra ', gla : 8 : 2, ' til ',
glb : 8 : 2, ': ', mellem : 20 : 10);
WRITELN('Funktionsværdien i dette punkt er: ', f(mellem) : 20 : 13);
WRITELN('Roden er fundet ved ', halvering, ' halveringer');
WRITE('Ønsker du at prøve igen (j/n)? ');
REPEAT
BUFLEN := 1;
READ(ch);
UNTIL (ch = 'j') OR (ch = 'n');
WRITELN;
UNTIL ch = 'n';
END.
«eof»