listati con turbo pascal per bisezione (varianti)
bis4a bis5a bis6a bis7a bis8a bis9a bis11a bis12a
program bis4a; (* calcola valori funzione entro campo da assegnare *) (* scelta estremi sinistro e destro tra valori calcolati sopra *) (* cerca radice approssimata dopo n bisezioni da indicare *) uses crt; var a,b,medio,x,y:real; k,n,t:integer; function f1(x:real):real; begin f1:=-7*x+2*exp(-3*x)-1; end; function f2(x:real):real; begin f2:=2*sqrt(x)-3*exp(-x); end; function f3(x:real):real; begin f3:=2*exp(-x)+2*x*x-3; end; function f4(x:real):real; begin f4:=2*sqrt(x)+3*x-1; end; function f5(x:real):real; begin f5:=3*sin(x)/cos(x)+x-1; end; procedure uscita; begin writeln('funzione sempre con stesso segno:riprova o esci'); writeln('premi enter ');readln;readln; halt; end; procedure vedi(es,ed:real); begin for k:=1 to n do begin medio:=(es+ed)/2; if t=1 then if f1(es)*f1(medio)<=0 then ed:=medio else es:=medio else if t=2 then if f2(es)*f2(medio)<=0 then ed:=medio else es:=medio else if t=3 then if f3(es)*f3(medio)<=0 then ed:=medio else es:=medio else if t=4 then if f4(es)*f4(medio)<=0 then ed:=medio else es:=medio else if t=5 then if f5(es)*f5(medio)<=0 then ed:=medio else es:=medio end; writeln('radice approssimata:',medio:0:8); WRITELN('premi enter per proseguire'); READLN; end; procedure calcola (es,ed:real); begin clrscr; vedi(es,ed); end; procedure leggi_dati; begin gotoxy(45,13);write('estremo sinistro =');read(a); gotoxy(45,14);write('estremo destro =');read(b); if a=100 then uscita; gotoxy(45,16);write('numero iterazioni :prova 20..=');readln(n); calcola(a,b); 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 100..100 se funzione sempre con stesso segno,o per FINE '); case t of 1:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f1(k):8:6);end; 2:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f2(k):8:6);end; 3:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f3(k):8:6);end; 4:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f4(k):8:6);end; 5:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f5(k):8:6);end; end; leggi_dati; end; procedure scelta; var ancora:integer; begin clrscr; writeln('funzioni memorizzate da provare '); writeln('1...f1:=-7x+2e(-3x)-1'); writeln('2...f2:=2*sqrt(x)-3e(-x).SOLO VALORI POSITIVI o ZERO;'); writeln('3...f3:=2*e(-x)+2x^2-3'); writeln('4...f4:=2sqrt(x)+3x-1 ....SOLO VALORI POSITIVI o ZERO;'); writeln('5.. f5:=3sin(x)/cos(x)+x-1'); writeln('----------------------------------'); write('indica funzione da provare 1,2,3,4,5.');readln(t); prova; 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 bis5a; (* calcola valori funzione entro campo da assegnare *) (* scelta estremi sinistro e destro tra valori calcolati sopra *) (* cerca radice approssimata dopo n bisezioni da indicare *) (* stampa valori funzioni calcolati per x variabile *) uses crt; var a,b,medio,x:real; k,n,t:integer; y1,y2,y3,y4,y5:string; function f1(x:real):real; begin f1:=-7*x+2*exp(-3*x)-1; end; function f2(x:real):real; begin f2:=2*sqrt(x)-3*exp(-x); end; function f3(x:real):real; begin f3:=2*exp(-x)+2*x*x-3; end; function f4(x:real):real; begin f4:=2*sqrt(x)+3*x-1; end; function f5(x:real):real; begin f5:=3*sin(x)/cos(x)+x-1; end; procedure uscita; begin writeln('funzione sempre con stesso segno:riprova o esci'); writeln('premi enter ');readln;readln; halt; end; procedure vedi(es,ed:real); begin for k:=1 to n do begin medio:=(es+ed)/2; if t=1 then begin if f1(es)*f1(medio)<=0 then ed:=medio else es:=medio; writeln('f(s)=',f1(es):10:6,'..f(d)=',f1(medio):10:6);end else if t=2 then BEGIN if f2(es)*f2(medio)<=0 then ed:=medio else es:=medio; writeln('f(s)=',f2(es):10:6,'..f(d)=',f2(medio):10:6);end else if t=3 then BEGIN if f3(es)*f3(medio)<=0 then ed:=medio else es:=medio; writeln('f(s)=',f3(es):10:6,'..f(d)=',f3(medio):10:6);end else if t=4 then BEGIN if f4(es)*f4(medio)<=0 then ed:=medio else es:=medio; writeln('f(s)=',f4(es):10:6,'..f(d)=',f4(medio):10:6);end else if t=5 then BEGIN if f5(es)*f5(medio)<=0 then ed:=medio else es:=medio; writeln('f(s)=',f5(es):10:6,'..f(d)=',f5(medio):10:6);end; writeln('sinistro=',es:10:6,'..destro=',ed:10:6,'..medio=',medio:10:6); WRITELN('-------------------------------------------------------'); end; writeln('radice approssimata:',medio:0:8); WRITELN('premi enter per proseguire'); READLN; end; procedure leggi_dati; begin gotoxy(45,13);write('estremo sinistro =');read(a); gotoxy(45,14);write('estremo destro =');read(b); if a=100 then uscita; gotoxy(45,16);write('numero iterazioni :prova 20..=');readln(n); vedi(a,b); end; procedure prova; var g,h,k:integer; begin clrscr; case t of 1:writeln(y1); 2:writeln(y2); 3:writeln(y3); 4:writeln(y4); 5:writeln(y5); end; 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 100..100 se funzione sempre con stesso segno,o per FINE '); case t of 1:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f1(k):8:6);end; 2:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f2(k):8:6);end; 3:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f3(k):8:6);end; 4:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f4(k):8:6);end; 5:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f5(k):8:6);end; end; leggi_dati; end; procedure scelta; var ancora:integer; begin clrscr; y1:='f1:=-7x+2e(-3x)-1'; y2:='f2:=2*sqrt(x)-3e(-x) SOLO VALORI POSITIVI o ZERO'; y3:='f3:=2*e(-x)+2x^2-3'; y4:='f4:=2sqrt(x)+3x-1 ....SOLO VALORI POSITIVI o ZERO'; y5:='f5:=3sin(x)/cos(x)+x-1'; writeln('funzioni memorizzate da provare '); writeln('1.',y1); writeln('2.',y2); writeln('3.',y3); writeln('4.',y4); writeln('5.',y5); writeln('----------------------------------'); write('indica funzione da provare 1,2,3,4,5.');readln(t); prova; 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 bis6a; (* calcola valori funzione entro campo da assegnare *) (* scelta estremi sinistro e destro tra valori calcolati sopra *) (* cerca radice approssimata dopo n bisezioni da indicare *) (* stampa valori funzioni calcolati per x variabile *) uses crt; var a,b,medio,x,y:real; k,n,t,pausa:integer; function f1(x:real):real; begin f1:=-7*x+2*exp(-3*x)-1; end; function f2(x:real):real; begin f2:=2*sqrt(x)-3*exp(-x); end; function f3(x:real):real; begin f3:=2*exp(-x)+2*x*x-3; end; function f4(x:real):real; begin f4:=2*sqrt(x)+3*x-1; end; function f5(x:real):real; begin f5:=3*sin(x)/cos(x)+x-1; end; procedure uscita; begin writeln('funzione sempre con stesso segno:riprova o esci'); writeln('premi enter ');readln;readln; halt; end; procedure vedi(es,ed:real); begin for k:=1 to n do begin medio:=(es+ed)/2; if t=1 then begin if f1(es)*f1(medio)<=0 then ed:=medio else es:=medio; writeln('sinistro=',es:10:6,'..destro=',ed:10:6,'..medio=',medio:10:6); writeln('f(s)=',f1(es):10:6,'..f(d)=',f1(medio):10:6);end else if t=2 then BEGIN if f2(es)*f2(medio)<=0 then ed:=medio else es:=medio; writeln('sinistro=',es:10:6,'..destro=',ed:10:6,'..medio=',medio:10:6); writeln('f(s)=',f2(es):10:6,'..f(d)=',f2(medio):10:6);end else if t=3 then BEGIN if f3(es)*f3(medio)<=0 then ed:=medio else es:=medio; writeln('sinistro=',es:10:6,'..destro=',ed:10:6,'..medio=',medio:10:6); writeln('f(s)=',f3(es):10:6,'..f(d)=',f3(medio):10:6);end else if t=4 then BEGIN if f4(es)*f4(medio)<=0 then ed:=medio else es:=medio; writeln('sinistro=',es:10:6,'..destro=',ed:10:6,'..medio=',medio:10:6); writeln('f(s)=',f4(es):10:6,'..f(d)=',f4(medio):10:6);end else if t=5 then BEGIN if f5(es)*f5(medio)<=0 then ed:=medio else es:=medio; writeln('sinistro=',es:10:6,'..destro=',ed:10:6,'..medio=',medio:10:6); writeln('f(s)=',f5(es):10:6,'..f(d)=',f5(medio):10:6);end ; WRITELN; IF pausa=1 then begin write('premi ENTER');readln;end; end; writeln('radice approssimata:',medio:0:8); WRITELN('premi enter per proseguire'); READLN; end; procedure calcola (es,ed:real); begin clrscr; vedi(es,ed); end; procedure leggi_dati; begin gotoxy(45,13);write('estremo sinistro =');read(a); gotoxy(45,14);write('estremo destro =');read(b); if a=100 then uscita; gotoxy(45,16);write('numero iterazioni :prova 20..=');readln(n); calcola(a,b); 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 100..100 se funzione sempre con stesso segno,o per FINE '); case t of 1:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f1(k):8:6);end; 2:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f2(k):8:6);end; 3:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f3(k):8:6);end; 4:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f4(k):8:6);end; 5:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f5(k):8:6);end; end; leggi_dati; end; procedure scelta; var ancora:integer; begin clrscr; writeln('funzioni memorizzate da provare '); writeln('1...f1:=-7x+2e(-3x)-1'); writeln('2...f2:=2*sqrt(x)-3e(-x).SOLO VALORI POSITIVI o ZERO;'); writeln('3...f3:=2*e(-x)+2x^2-3'); writeln('4...f4:=2sqrt(x)+3x-1 ....SOLO VALORI POSITIVI o ZERO;'); writeln('5.. f5:=3sin(x)/cos(x)+x-1'); writeln('----------------------------------'); write('indica funzione da provare 1,2,3,4,5.');readln(t); write('scrivi 1 per pausa durante visualizzazione..0=senza pausa'); readln(pausa); prova; 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 bis7a; (* calcola valori funzione entro campo da assegnare *) (* scelta estremi sinistro e destro tra valori calcolati sopra *) (* cerca radice approssimata dopo n bisezioni da indicare *) (* stampa valori funzioni calcolati per x variabile *) uses crt; var a,b,medio,x,y:real; k,n,t,pausa:integer; function f1(x:real):real; begin f1:=-7*x+2*exp(-3*x)-1; end; function f2(x:real):real; begin f2:=2*sqrt(x)-3*exp(-x); end; function f3(x:real):real; begin f3:=2*exp(-x)+2*x*x-3; end; function f4(x:real):real; begin f4:=2*sqrt(x)+3*x-1; end; function f5(x:real):real; begin f5:=3*sin(x)/cos(x)+x-1; end; procedure uscita; begin writeln('funzione sempre con stesso segno:riprova o esci'); writeln('premi enter ');readln;readln; halt; end; procedure vedi(es,ed:real); begin for k:=1 to n do begin medio:=(es+ed)/2; if t=1 then begin if f1(es)*f1(medio)<=0 then ed:=medio else es:=medio; writeln('f(s)=',f1(es):10:6,'..f(d)=',f1(medio):10:6);end else if t=2 then BEGIN if f2(es)*f2(medio)<=0 then ed:=medio else es:=medio; writeln('f(s)=',f2(es):10:6,'..f(d)=',f2(medio):10:6);end else if t=3 then BEGIN if f3(es)*f3(medio)<=0 then ed:=medio else es:=medio; writeln('f(s)=',f3(es):10:6,'..f(d)=',f3(medio):10:6);end else if t=4 then BEGIN if f4(es)*f4(medio)<=0 then ed:=medio else es:=medio; writeln('f(s)=',f4(es):10:6,'..f(d)=',f4(medio):10:6);end else if t=5 then BEGIN if f5(es)*f5(medio)<=0 then ed:=medio else es:=medio; writeln('f(s)=',f5(es):10:6,'..f(d)=',f5(medio):10:6);end ; writeln('sinistro=',es:10:6,'..destro=',ed:10:6,'..medio=',medio:10:6); WRITELN('------------------------------------------------------------'); IF pausa=1 then begin write('premi ENTER');readln;end; end; writeln('radice approssimata:',medio:0:8); WRITELN('premi enter per proseguire'); READLN; end; procedure calcola (es,ed:real); begin clrscr; vedi(es,ed); end; procedure leggi_dati; begin gotoxy(45,13);write('estremo sinistro =');read(a); gotoxy(45,14);write('estremo destro =');read(b); if a=100 then uscita; gotoxy(45,16);write('numero iterazioni :prova 20..=');readln(n); calcola(a,b); 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 100..100 se funzione sempre con stesso segno,o per FINE '); case t of 1:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f1(k):8:6);end; 2:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f2(k):8:6);end; 3:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f3(k):8:6);end; 4:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f4(k):8:6);end; 5:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f5(k):8:6);end; end; leggi_dati; end; procedure scelta; var ancora:integer; begin clrscr; writeln('funzioni memorizzate da provare '); writeln('1...f1:=-7x+2e(-3x)-1'); writeln('2...f2:=2*sqrt(x)-3e(-x).SOLO VALORI POSITIVI o ZERO;'); writeln('3...f3:=2*e(-x)+2x^2-3'); writeln('4...f4:=2sqrt(x)+3x-1 ....SOLO VALORI POSITIVI o ZERO;'); writeln('5.. f5:=3sin(x)/cos(x)+x-1'); writeln('----------------------------------'); write('indica funzione da provare 1,2,3,4,5.');readln(t); write('scrivi 1 per pausa durante visualizzazione..0=senza pausa'); readln(pausa); prova; 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 bis8a; (* calcola valori funzione entro campo da assegnare *) (* scelta estremi sinistro e destro tra valori calcolati sopra *) (* cerca radice approssimata dopo n bisezioni da indicare *) (* stampa valori funzioni calcolati per x variabile *) uses crt; var a,b,medio,x,y:real; k,n,t,pausa:integer; function f1(x:real):real; begin f1:=-7*x+2*exp(-3*x)-1; end; function f2(x:real):real; begin f2:=2*sqrt(x)-3*exp(-x); end; function f3(x:real):real; begin f3:=2*exp(-x)+2*x*x-3; end; function f4(x:real):real; begin f4:=2*sqrt(x)+3*x-1; end; function f5(x:real):real; begin f5:=3*sin(x)/cos(x)+x-1; end; procedure uscita; begin writeln('funzione sempre con stesso segno:riprova o esci'); writeln('premi enter ');readln;readln; halt; end; procedure vedi(es,ed:real); begin for k:=1 to n do begin medio:=(es+ed)/2; case t of 1: begin if f1(es)*f1(medio)<=0 then ed:=medio else es:=medio; writeln('f(s)=',f1(es):10:6,'..f(d)=',f1(medio):10:6);end; 2:BEGIN if f2(es)*f2(medio)<=0 then ed:=medio else es:=medio; writeln('f(s)=',f2(es):10:6,'..f(d)=',f2(medio):10:6);end; 3:BEGIN if f3(es)*f3(medio)<=0 then ed:=medio else es:=medio; writeln('f(s)=',f3(es):10:6,'..f(d)=',f3(medio):10:6);end; 4:BEGIN if f4(es)*f4(medio)<=0 then ed:=medio else es:=medio; writeln('f(s)=',f4(es):10:6,'..f(d)=',f4(medio):10:6);end; 5:BEGIN if f5(es)*f5(medio)<=0 then ed:=medio else es:=medio; writeln('f(s)=',f5(es):10:6,'..f(d)=',f5(medio):10:6);end ; END; writeln('sinistro=',es:10:6,'..destro=',ed:10:6,'..medio=',medio:10:6); WRITELN('------------------------------------------------------------'); IF pausa=1 then begin write('premi ENTER');readln;end; end; writeln('radice approssimata:',medio:0:8); WRITELN('premi enter per proseguire'); READLN; end; procedure leggi_dati; begin gotoxy(45,13);write('estremo sinistro =');read(a); gotoxy(45,14);write('estremo destro =');read(b); if a=100 then uscita; gotoxy(45,16);write('numero iterazioni :prova 20..=');readln(n); vedi(a,b); end; procedure prova; var g,h,k:integer; begin WRITELN('---------------------------------------------------------------'); WRITELN('...prima si cercano valori della funzione entro campo assegnato'); WRITELN('...prendere nota dei valori ove la funzione cambia segno '); WRITELN('...se la funzione cambia segno,annotare valori variabile '); writeln('...scegli estremo sinistro e destro per calcolo radice '); writeln('...scrivi 100..100 se funzione sempre con stesso segno,o per FINE '); WRITELN('----------------------------------------------------------------'); write('scrivi valore iniziale per calcolo funzione:');readln(g); write('scrivi valore finale per calcolo funzione :');readln(h); writeln('premi enter');READLN;clrscr; case t of 1:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f1(k):8:6);end; 2:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f2(k):8:6);end; 3:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f3(k):8:6);end; 4:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f4(k):8:6);end; 5:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f5(k):8:6);end; end; leggi_dati; end; procedure scelta; var ancora:integer; begin clrscr; writeln('funzioni memorizzate da provare '); writeln('1...f1:=-7x+2e(-3x)-1'); writeln('2...f2:=2*sqrt(x)-3e(-x).SOLO VALORI POSITIVI o ZERO;'); writeln('3...f3:=2*e(-x)+2x^2-3'); writeln('4...f4:=2sqrt(x)+3x-1 ....SOLO VALORI POSITIVI o ZERO;'); writeln('5.. f5:=3sin(x)/cos(x)+x-1'); writeln('----------------------------------'); write('indica funzione da provare 1,2,3,4,5.');readln(t); write('scrivi 1 per pausa durante visualizzazione..0=senza pausa'); readln(pausa); prova; 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 bis9a; (* calcola valori funzione entro campo da assegnare *) (* scelta estremi sinistro e destro tra valori calcolati sopra *) (* cerca radice approssimata dopo n bisezioni da indicare *) (* stampa valori funzioni calcolati per x variabile *) uses crt; var a,b,medio,x:real; k,n,pausa:integer; function f1(x:real):real; begin f1:=-7*x+2*exp(-3*x)-1; (* funzione da inserire,poi RUN *) (* f1:=x*x*-5*x-2 *) end; procedure uscita; begin writeln('funzione sempre con stesso segno:riprova o esci'); writeln('premi enter ');readln;readln; halt; end; procedure vedi(es,ed:real); begin for k:=1 to n do begin medio:=(es+ed)/2; if f1(es)*f1(medio)<=0 then ed:=medio else es:=medio; writeln('f(s)=',f1(es):10:6,'..f(d)=',f1(medio):10:6); writeln('sinistro=',es:10:6,'..destro=',ed:10:6,'..medio=',medio:10:6); WRITELN('------------------------------------------------------------'); IF pausa=1 then begin write('bisezione n.',k,' su ',n,'..premi ENTER'); readln;end; end; writeln('radice approssimata:',medio:0:8); WRITELN('premi enter per proseguire'); READLN; end; procedure leggi_dati; begin gotoxy(45,13);write('estremo sinistro =');read(a); gotoxy(45,14);write('estremo destro =');read(b); if a=100 then uscita; gotoxy(45,16);write('numero iterazioni :prova 20..=');readln(n); vedi(a,b); end; procedure prova; var g,h,k:integer; begin WRITELN('---------------------------------------------------------------'); WRITELN('...prima si cercano valori della funzione entro campo assegnato'); WRITELN('...prendere nota dei valori ove la funzione cambia segno '); WRITELN('...se la funzione cambia segno,annotare valori variabile '); writeln('...scegli estremo sinistro e destro per calcolo radice '); writeln('...scrivi 100..100 se funzione sempre con stesso segno,o per FINE '); WRITELN('----------------------------------------------------------------'); write('scrivi valore iniziale per calcolo funzione:');readln(g); write('scrivi valore finale per calcolo funzione :');readln(h); writeln('premi enter');READLN;clrscr; for k:=g to h do begin writeln('per x=',K:8,'...f(x)=',f1(k):8:6);end; leggi_dati; end; procedure scelta; var ancora:integer; begin clrscr; writeln('funzioni memorizzate da provare '); writeln('f1:=-7x+2e(-3x)-1'); write('scrivi 1 per pausa durante visualizzazione..0=senza pausa..'); readln(pausa); prova; 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 bis11a; (* calcola valori funzione entro campo da assegnare *) (* scelta automatica estremi sinistro e destro tra valori calcolati sopra *) (* cerca radice approssimata dopo n bisezioni da indicare *) (* stampa valori funzioni calcolati per x variabile *) uses crt; var a,b,medio,x:real; k,n,pausa:integer; y:string; function f1(x:real):real; begin f1:=-7*x+2*exp(-3*x)-1; (* funzione da inserire,poi RUN *) (* cambiare funzione anche in y..SCELTA *) (* f1:=x*x*-5*x-2 *) (* f1:=-7*x+2*exp(-3*x)-1 *) end; procedure uscita; begin writeln('funzione sempre con stesso segno:riprova'); writeln('premi enter ');readln; halt; end; procedure vedi(es,ed:real); begin for k:=1 to n do begin medio:=(es+ed)/2; if f1(es)*f1(medio)<=0 then ed:=medio else es:=medio; writeln('f(s)=',f1(es):10:6,'..f(d)=',f1(medio):10:6); writeln('sinistro=',es:10:6,'..destro=',ed:10:6,'..medio=',medio:10:6); WRITELN('------------------------------------------------------------'); IF pausa=1 then begin write('BISEZIONE n.',k,' su ',n,'..premi ENTER'); readln;end; end; writeln('-------------------------------------------------------------'); writeln('radice approssimata:',medio:0:8); WRITELN('premi enter per proseguire'); READLN; end; procedure prova; var g,h,k:integer; begin WRITELN('---------------------------------------------------------------'); WRITELN('...prima si cercano valori della funzione entro campo assegnato'); WRITELN('...poi il programma cerca primi valori funzioni discordi '); WRITELN('...quindi assegna campo per ricerca radice approssimata '); WRITELN('----------------------------------------------------------------'); write('scrivi valore iniziale per calcolo funzione:');readln(g); write('scrivi valore finale per calcolo funzione :');readln(h); write('scrivi numero bisezioni da eseguire :20....:');readln(n); writeln('premi enter');READLN;clrscr; for k:=g to h do begin writeln('per x=',K:8,'...f(x)=',f1(k):12:6); if f1(k)*f1(k-1)<=0 then vedi(k-1,k);end; if f1(k)*f1(k-1)>0 then uscita; end; procedure scelta; var ancora:integer; begin clrscr; writeln('funzioni memorizzate da provare '); y:='-7x+2e(-3x)-1'; (* funzione da cambiare *) writeln(y); write('scrivi 1 per pausa durante visualizzazione..0=senza pausa..'); readln(pausa); prova; 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 bis12a; (* calcola valori funzione entro campo da assegnare *) (* scelta estremi sinistro e destro tra valori calcolati sopra *) (* cerca radice approssimata dopo n bisezioni da indicare *) (* ricerca radice tra estemi con passo da indicare *) (* stampa valori funzioni calcolati per x variabile *) uses crt; var a,b,medio,x:real; k,n,pausa,sosta:integer; y:string; function f1(x:real):real; begin f1:=-7*x+2*exp(-3*x)-1; (* funzione da inserire,poi RUN *) (* cambiare funzione anche in y..SCELTA *) (* f1:=x*x*-5*x-2 *) (* f1:=-7*x+2*exp(-3*x)-1 *) end; procedure uscita; begin writeln('funzione sempre con stesso segno:riprova'); writeln('premi enter ');readln; halt; end; procedure vedi(es,ed:integer); var passo,z:real; p,opzione:integer; begin writeln('estremi entro i quali cercare radice ',es:12,ed:12); writeln('assegna passo per ricerca..0.1 0.01 0.001 ');readln(passo); writeln('scrivi numero valori da provare..10...20..30..');readln(n); writeln('scrivi 1 per vedere singoli risultati,oppure 2 ');readln(sosta); z:=es; writeln('osserva valore funzione che cambia segno per trovare radice'); writeln('se non cambia segno,prova con altro passo,altro numero valori '); WRITELN('premi enter');READLN; clrscr; for p:=1 to n do begin writeln('per x=',z:8:6,' f(x)=',f1(z):8:6);z:=z+passo; if sosta=1 then begin readln end;end; writeln('----------------------------------------------------------'); write('per altro passo scrivi 1..per fine scrivi 2 ');readln(opzione); if opzione=1 then vedi(es,ed) else uscita; end; procedure prova; var g,h,k:integer; begin WRITELN('---------------------------------------------------------------'); WRITELN('...prima si cercano valori della funzione entro campo assegnato'); WRITELN('...poi il programma cerca primi valori funzioni discordi '); WRITELN('...quindi assegna campo per ricerca radice approssimata '); WRITELN('----------------------------------------------------------------'); write('scrivi valore iniziale per calcolo funzione:');readln(g); write('scrivi valore finale per calcolo funzione :');readln(h); writeln('premi enter');READLN;clrscr; for k:=g to h do begin writeln('per x=',K:8,'...f(x)=',f1(k):12:6); if f1(k)*f1(k-1)<=0 then vedi(k-1,k);end; if f1(k)*f1(k-1)>0 then uscita; end; procedure scelta; var ancora:integer; begin clrscr; writeln('funzioni memorizzate da provare '); y:='-7x+2e(-3x)-1'; (* funzione da cambiare *) writeln(y); write('scrivi 1 per pausa durante visualizzazione..0=senza pausa..'); readln(pausa); prova; 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.