listati con turbo pascal per bisezione (varianti)
bise2 bise4a bise4b bise4c bise4d biseziona1 biseziona2
program bise2; uses crt; var a,b,medio,ampiezza,errore,x,y:real; function f(x:real):real; begin f:=x*x*x*x-7*x*x*x+2*x*x-100*x+610; end; procedure leggi_dati; begin repeat gotoxy(25,13);write('estremo sinistro...prova 4..2..4 =');read(a); gotoxy(25,14);write('estremo destro prova 5..6..6 =');read(b); until f(a)*f(b)<0; gotoxy(25,15);write('errore..prova 0.001 =');read(errore); end; procedure calcola (es,ed:real); begin medio:=(es+ed)/2; if f(es)*f(medio)<=0 then ed:=medio else es:=medio; ampiezza:=ed-es; write('estremo sinistro:',es:5:8); writeln(' estremo destro:',ed:12:8); if ampiezza<errore then begin writeln; write('radice approssimata :',medio:0:8); writeln(' errore=',errore:0:9); end else calcola(es,ed); end; begin clrscr; leggi_dati; clrscr; writeln('a= ',a:5:6,' b= ',b:12:6); readln; calcola(a,b); writeln('premi enter'); readln; end.
program bise4a; uses crt; var a,b,medio,x,y:real; k,n:integer; function f(x:real):real; begin f:=x*x*x*x-7*x*x*x+2*x*x-100*x+610; end; procedure leggi_dati; begin repeat gotoxy(25,13);write('estremo sinistro...prova 4..2..4 =');read(a); gotoxy(25,14);write('estremo destro prova 5..6..6 =');read(b); until f(a)*f(b)<0; gotoxy(25,15);write('numero bisezioni..prova 10 =');read(n); end; procedure calcola (es,ed:real); begin for k:=1 to n do begin medio:=(es+ed)/2; if f(es)*f(medio)<=0 then ed:=medio else es:=medio; write('estremo sinistro:',es:12:8); write(' estremo destro:',ed:12:8); writeln('medio:',medio:12:8); write('Fs:',f(es):12:8); write('Fd:',f(ed):12:8); writeln('Fm:',f(medio):12:8); writeln('-------------------------------------------------------'); end; writeln('radice approssimata:',medio:0:8); end; begin clrscr; leggi_dati; clrscr; writeln('a= ',a:5:6,' b= ',b:12:6); calcola(a,b); writeln('premi enter'); readln; end.
program bise4b; uses crt; var a,b,medio,x,y:real; k,n,scelta:integer; function f(x:real):real; begin f:=x*x*x*x-7*x*x*x+2*x*x-100*x+610; end; procedure calcola (es,ed:real); begin for k:=1 to n do begin medio:=(es+ed)/2; if f(es)*f(medio)<=0 then ed:=medio else es:=medio; write('estremo sinistro:',es:12:8); write(' estremo destro:',ed:12:8); writeln(' medio:',medio:12:8); write('Fs:',f(es):12:8); write(' Fd:',f(ed):12:8); writeln(' Fm:',f(medio):12:8); writeln('-------------------------------------------------------'); READLN; end; writeln('radice approssimata:',medio:0:8); end; procedure leggi_dati; begin clrscr; repeat gotoxy(25,13);write('estremo sinistro...prova 4..2..4 =');read(a); gotoxy(25,14);write('estremo destro prova 5..6..6 =');read(b); until f(a)*f(b)<0; gotoxy(25,15);write('numero bisezioni..prova 10 =');read(n); clrscr; writeln('a= ',a:5:6,' b= ',b:12:6); calcola(a,b); write('per altra prova,scrivi 1...per finire scrivi 2 ');readln(scelta); if scelta=1 then leggi_dati; end; begin clrscr; leggi_dati; clrscr; writeln('premi enter'); readln; end.
program bise4b; uses crt; var a,b,medio,x,y:real; k,n,scelta:integer; function f(x:real):real; begin f:=x*x*x*x-7*x*x*x+2*x*x-100*x+610; end; procedure calcola (es,ed:real); begin for k:=1 to n do begin medio:=(es+ed)/2; if f(es)*f(medio)<=0 then ed:=medio else es:=medio; write('estremo sinistro:',es:12:8); write(' estremo destro:',ed:12:8); writeln(' medio:',medio:12:8); write('Fs:',f(es):12:8); write(' Fd:',f(ed):12:8); writeln(' Fm:',f(medio):12:8); writeln('-------------------------------------------------------'); READLN; end; writeln('radice approssimata:',medio:0:8); end; procedure leggi_dati; begin clrscr; repeat gotoxy(25,13);write('estremo sinistro...prova 4..2..4 =');read(a); gotoxy(25,14);write('estremo destro prova 5..6..6 =');read(b); until f(a)*f(b)<0; gotoxy(25,15);write('numero bisezioni..prova 10 =');read(n); clrscr; writeln('a= ',a:5:6,' b= ',b:12:6); calcola(a,b); write('per altra prova,scrivi 1...per finire scrivi 2 ');readln(scelta); if scelta=1 then leggi_dati; end; begin clrscr; leggi_dati; clrscr; writeln('premi enter'); readln; end.
program bise4c; uses crt; var a,b,medio,x,y:real; k,n,tipo:integer; function f1(x:real):real; begin f1:=x*x*x*x-7*x*x*x+2*x*x-100*x+610; end; function f2(x:real):real; begin f2:=x*x*x-9*x+1; end; function f3(x:real):real; begin f3:=x*x*x-9*x*x+5; end; function f4(x:real):real; begin f4:=x*x*x-4*x*x+2*x-5; end; function f5(x:real):real; begin f5:=x*x*x-3*x*x+5*x-6; end; procedure calcola1 (es,ed:real); begin clrscr; for k:=1 to n do begin medio:=(es+ed)/2; if f1(es)*f1(medio)<=0 then ed:=medio else es:=medio; write('estremo sinistro:',es:12:8); write(' estremo destro:',ed:12:8); writeln('medio:',medio:12:8); write('Fs:',f1(es):12:8); write('Fd:',f1(ed):12:8); writeln('Fm:',f1(medio):12:8); writeln('-------------------------------------------------------'); READLN; end; writeln('radice approssimata:',medio:0:8); READLN; end; procedure calcola2 (es,ed:real); begin clrscr; for k:=1 to n do begin medio:=(es+ed)/2; if f2(es)*f2(medio)<=0 then ed:=medio else es:=medio; write('estremo sinistro:',es:12:8); write(' estremo destro:',ed:12:8); writeln('medio:',medio:12:8); write('Fs:',f2(es):12:8); write('Fd:',f2(ed):12:8); writeln('Fm:',f2(medio):12:8); writeln('-------------------------------------------------------'); READLN; end; writeln('radice approssimata:',medio:0:8); READLN; end; procedure calcola3 (es,ed:real); begin clrscr; for k:=1 to n do begin medio:=(es+ed)/2; if f3(es)*f3(medio)<=0 then ed:=medio else es:=medio; write('estremo sinistro:',es:12:8); write(' estremo destro:',ed:12:8); writeln('medio:',medio:12:8); write('Fs:',f3(es):12:8); write('Fd:',f3(ed):12:8); writeln('Fm:',f3(medio):12:8); writeln('-------------------------------------------------------'); READLN; end; writeln('radice approssimata:',medio:0:8); READLN; end; procedure calcola4 (es,ed:real); begin clrscr; for k:=1 to n do begin medio:=(es+ed)/2; if f4(es)*f4(medio)<=0 then ed:=medio else es:=medio; write('estremo sinistro:',es:12:8); write(' estremo destro:',ed:12:8); writeln('medio:',medio:12:8); write('Fs:',f4(es):12:8); write('Fd:',f4(ed):12:8); writeln('Fm:',f4(medio):12:8); writeln('-------------------------------------------------------'); READLN; end; writeln('radice approssimata:',medio:0:8); READLN; end; procedure calcola5 (es,ed:real); begin clrscr; for k:=1 to n do begin medio:=(es+ed)/2; if f5(es)*f5(medio)<=0 then ed:=medio else es:=medio; write('estremo sinistro:',es:12:8); write(' estremo destro:',ed:12:8); writeln('medio:',medio:12:8); write('Fs:',f5(es):12:8); write('Fd:',f5(ed):12:8); writeln('Fm:',f5(medio):12:8); writeln('-------------------------------------------------------'); READLN; end; writeln('radice approssimata:',medio:0:8); READLN; end; procedure leggi_dati1; begin repeat gotoxy(25,13);write('estremo sinistro...prova 4..2..4 =');read(a); gotoxy(25,14);write('estremo destro prova 5..6..6 =');read(b); until f1(a)*f1(b)<0 ; gotoxy(25,15);write('numero bisezioni..prova 10 =');read(n); calcola1(a,b); end; procedure leggi_dati2; begin repeat gotoxy(25,13);write('estremo sinistro...prova -4 =');read(a); gotoxy(25,14);write('estremo destro prova -3 =');read(b); until f2(a)*f2(b)<0 ; gotoxy(25,15);write('numero bisezioni..prova 10 =');read(n); calcola2(a,b); end; procedure leggi_dati3; begin repeat gotoxy(25,13);write('estremo sinistro...prova -2 =');read(a); gotoxy(25,14);write('estremo destro prova 0 =');read(b); until f3(a)*f3(b)<0 ; gotoxy(25,15);write('numero bisezioni..prova 10 =');read(n); calcola3(a,b); end; procedure leggi_dati4; begin repeat gotoxy(25,13);write('estremo sinistro...prova 2 =');read(a); gotoxy(25,14);write('estremo destro prova 4 =');read(b); until f4(a)*f4(b)<0 ; gotoxy(25,15);write('numero bisezioni..prova 10 =');read(n); calcola4(a,b); end; procedure leggi_dati5; begin repeat gotoxy(25,13);write('estremo sinistro...prova 4 =');read(a); gotoxy(25,14);write('estremo destro prova 0 =');read(b); until f5(a)*f5(b)<0 ; gotoxy(25,15);write('numero bisezioni..prova 10 =');read(n); calcola5(a,b); end; procedure scelta; var ancora:integer; begin clrscr; writeln('funzioni memorizzate da provare '); writeln('1...f1:=x*x*x*x-7*x*x*x+2*x*x-100*x+610;'); writeln('2...f2:=x*x*x-9*x+1;'); writeln('3...f3:=x*x*x-9*x*x+5;'); writeln('4...f4:=x*x*x-4*x*x+2*x-5;'); writeln('5.. f5:=x*x*x-3*x*x+5*x-6;'); writeln('----------------------------------'); write('indica funzione da provare 1,2,3,4,5.');readln(tipo); case tipo of 1:leggi_dati1; 2:leggi_dati2; 3:leggi_dati3; 4:leggi_dati4; 5:leggi_dati5; end; WRITELN('-------------------------------'); write('altra prova:scrivi 1...fine:scrivi 2 ');readln(ancora); if ancora=1 then scelta; end; begin clrscr; scelta; writeln('premi enter'); readln; end.
program bise4d; uses crt; var a,b,medio,x,y:real; k,n,tipo:integer; function f1(x:real):real; begin f1:=x*x*x*x-7*x*x*x+2*x*x-100*x+610; end; function f2(x:real):real; begin f2:=x*x*x-9*x+1; end; function f3(x:real):real; begin f3:=x*x*x-9*x*x+5; end; function f4(x:real):real; begin f4:=x*x*x-4*x*x+2*x-5; end; function f5(x:real):real; begin f5:=x*x*x-3*x*x+5*x-6; end; procedure calcola1 (es,ed:real); begin clrscr; for k:=1 to n do begin medio:=(es+ed)/2; if f1(es)*f1(medio)<=0 then ed:=medio else es:=medio; end; writeln('radice approssimata:',medio:0:8); READLN; end; procedure calcola2 (es,ed:real); begin clrscr; for k:=1 to n do begin medio:=(es+ed)/2; if f2(es)*f2(medio)<=0 then ed:=medio else es:=medio; end; writeln('radice approssimata:',medio:0:8); READLN; end; procedure calcola3 (es,ed:real); begin clrscr; for k:=1 to n do begin medio:=(es+ed)/2; if f3(es)*f3(medio)<=0 then ed:=medio else es:=medio; end; writeln('radice approssimata:',medio:0:8); READLN; end; procedure calcola4 (es,ed:real); begin clrscr; for k:=1 to n do begin medio:=(es+ed)/2; if f4(es)*f4(medio)<=0 then ed:=medio else es:=medio; end; writeln('radice approssimata:',medio:0:8); READLN; end; procedure calcola5 (es,ed:real); begin clrscr; for k:=1 to n do begin medio:=(es+ed)/2; if f5(es)*f5(medio)<=0 then ed:=medio else es:=medio; end; writeln('radice approssimata:',medio:0:8); READLN; end; procedure leggi_dati1; begin repeat gotoxy(25,13);write('estremo sinistro...prova 4..2..4 =');read(a); gotoxy(25,14);write('estremo destro prova 5..6..6 =');read(b); until f1(a)*f1(b)<0 ; gotoxy(25,15);write('numero bisezioni..prova 10 =');read(n); calcola1(a,b); end; procedure leggi_dati2; begin repeat gotoxy(25,13);write('estremo sinistro...prova -4 =');read(a); gotoxy(25,14);write('estremo destro prova -3 =');read(b); until f2(a)*f2(b)<0 ; gotoxy(25,15);write('numero bisezioni..prova 10 =');read(n); calcola2(a,b); end; procedure leggi_dati3; begin repeat gotoxy(25,13);write('estremo sinistro...prova -2 =');read(a); gotoxy(25,14);write('estremo destro prova 0 =');read(b); until f3(a)*f3(b)<0 ; gotoxy(25,15);write('numero bisezioni..prova 10 =');read(n); calcola3(a,b); end; procedure leggi_dati4; begin repeat gotoxy(25,13);write('estremo sinistro...prova 2 =');read(a); gotoxy(25,14);write('estremo destro prova 4 =');read(b); until f4(a)*f4(b)<0 ; gotoxy(25,15);write('numero bisezioni..prova 10 =');read(n); calcola4(a,b); end; procedure leggi_dati5; begin repeat gotoxy(25,13);write('estremo sinistro...prova 4 =');read(a); gotoxy(25,14);write('estremo destro prova 0 =');read(b); until f5(a)*f5(b)<0 ; gotoxy(25,15);write('numero bisezioni..prova 10 =');read(n); calcola5(a,b); end; procedure scelta; var ancora:integer; begin clrscr; writeln('funzioni memorizzate da provare '); writeln('1...f1:=x*x*x*x-7*x*x*x+2*x*x-100*x+610;'); writeln('2...f2:=x*x*x-9*x+1;'); writeln('3...f3:=x*x*x-9*x*x+5;'); writeln('4...f4:=x*x*x-4*x*x+2*x-5;'); writeln('5.. f5:=x*x*x-3*x*x+5*x-6;'); writeln('----------------------------------'); write('indica funzione da provare 1,2,3,4,5.');readln(tipo); case tipo of 1:leggi_dati1; 2:leggi_dati2; 3:leggi_dati3; 4:leggi_dati4; 5:leggi_dati5; end; WRITELN('-------------------------------'); write('altra prova:scrivi 1...fine:scrivi 2 ');readln(ancora); if ancora=1 then scelta; end; begin clrscr; scelta; writeln('premi enter'); readln; end.
program biseziona1; (* calcolo valori funzione entro campo da indicare *) (* scelta estremi sinistro e destro per calcolo radice approssimata *) (* scegliere tra valori di x ove la funzione cambia segno *) uses crt; var a,b,medio,ampiezza,errore,x,y:real; function f(x:real):real; begin f:=x*x*x-9*x+1; (* funzione inserire...poi riattivare con COMPILE-RUN *) end; procedure prova; var g,h,k:integer; begin clrscr; write('scrivi valore iniziale per calcolo funzione:');readln(g); write('scrivi valore finale per calcolo funzione :');readln(h); writeln('scegli estremo sinistro e destro per calcolo radice'); for k:=g to h do writeln('per x=',k:8,' ....f(x).....=',f(k):8:6); end; procedure calcola (es,ed:real); begin medio:=(es+ed)/2; if f(es)*f(medio)<=0 then ed:=medio else es:=medio; ampiezza:=ed-es; write('estremo sinistro:',es:5:8); writeln(' estremo destro:',ed:12:8); if ampiezza<errore then begin writeln; write('radice approssimata :',medio:0:8); writeln(' errore=',errore:0:9); end else calcola(es,ed); end; procedure leggi_dati; begin repeat gotoxy(45,13);write('estremo sinistro ');read(a); gotoxy(45,14);write('estremo destro ');read(b); until f(a)*f(b)<0; errore:=0.001; clrscr; writeln('a=',a:5:6,'b= ',b:12:6); end; procedure scelta; var ancora:integer; begin prova; leggi_dati; calcola(a,b); readln; write('scrivi 1 per altra prova..scrivi 2 per finire ');readln(ancora); if ancora=1 then scelta; end; begin clrscr; scelta; end.
program biseziona2; (* calcolo valori funzione entro campo da indicare *) (* scelta estremi sinistro e destro per calcolo radice approssimata *) (* scegliere tra valori di x ove la funzione cambia segno *) (* uscita se funzione sempre stesso segno *) uses crt; var a,b,medio,ampiezza,errore,x,y:real; function f(x:real):real; begin f:=9*x*x+4; (* funzione inserire...poi riattivare con COMPILE-RUN *) end; procedure uscita; begin clrscr; writeln('funzione sempre stesso segno:fine operazione'); writeln('premi enter per uscire ');Readln;READLN; halt; end; procedure prova; var g,h,k:integer; begin clrscr; write('scrivi valore iniziale per calcolo funzione:');readln(g); write('scrivi valore finale per calcolo funzione :');readln(h); writeln('scegli estremo sinistro e destro per calcolo radice'); writeln('scrivi 1000..1000 per uscire da richiesta '); for k:=g to h do writeln('per x=',k:8,' ....f(x).....=',f(k):8:6); end; procedure calcola (es,ed:real); begin medio:=(es+ed)/2; if f(es)*f(medio)<=0 then ed:=medio else es:=medio; ampiezza:=ed-es; write('estremo sinistro:',es:5:8); writeln(' estremo destro:',ed:12:8); if ampiezza<errore then begin writeln; write('radice approssimata :',medio:0:8); writeln(' errore=',errore:0:9); end else calcola(es,ed); end; procedure leggi_dati; begin repeat gotoxy(45,13);write('estremo sinistro ');read(a); gotoxy(45,14);write('estremo destro ');read(b); if a=1000 then uscita; until f(a)*f(b)<0; errore:=0.001; clrscr; writeln('a=',a:5:6,'b= ',b:12:6); end; procedure scelta; var ancora:integer; begin prova; leggi_dati; calcola(a,b); readln; write('scrivi 1 per altra prova..scrivi 2 per finire ');readln(ancora); if ancora=1 then scelta; end; begin clrscr; scelta; end.