Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Pascal - Programma calcolo limiti
Forum - Pascal - Programma calcolo limiti

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
yuco91 (Normal User)
Rookie


Messaggi: 21
Iscritto: 25/08/2009

Segnala al moderatore
Postato alle 13:51
Venerdì, 19/02/2010
Salve raga. dovrei realizare un programma per il calcolo dei limiti di una funzione . La funzione è già stabilita : " y=2x+1 " . il programma deve solo dare il risultato del limite di quella funzione per x-->c , dove c è un numero che inseriamo da tastiera.

sapreste aiutarmi ?

PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 19:05
Venerdì, 19/02/2010
Ciao!

Per risolvere il problema, io farei un sotto programma per il calcolo della funzione, in modo da poterlo richiamare per il calcolo del limite.

Tu avrai già elaborato qualcosa. Se si posta il codice e descrivici dove trovi difficoltà.

PM Quote
Avatar
yuco91 (Normal User)
Rookie


Messaggi: 21
Iscritto: 25/08/2009

Segnala al moderatore
Postato alle 21:14
Venerdì, 19/02/2010
Riporto di seguito il codice che ho già scritto ( la funzione è diversa da quella ke ho menzionato precedentemente). In realtà , come potrai vedere , il programma mi calcola tutti i valori sia dell'intorno destro che di quello sinistro del valore del limite. Infatti fa variare la x per valori maggiori (e minori) di un certo incremento (decremento)  e trova il corrispondente valore del limite. Io però vorrei un modo per calcolare il limite in modo più efficace e preciso .

Codice sorgente - presumibilmente Delphi

  1. {Nome programma}
  2.  
  3. program limite;  
  4.  
  5. uses wincrt;
  6.  
  7.  
  8. {Variabili}
  9.  
  10. var x, lim: real;  
  11.     t : char;
  12.     x0 : integer;
  13.  
  14.  
  15. {Inizio procedure}
  16.  
  17. procedure intornodestro;
  18.  
  19. begin
  20.  
  21. clrscr;
  22. writeln ('Per questo valore di x0 la funzione può essere studiata solo nell''intorno destro');
  23. writeln;
  24.  
  25.  
  26. x:= x0 + 0.2;
  27.  
  28.     while x >= x0 do
  29.  
  30.           begin
  31.           lim:= sqrt(x*x-4);
  32.           writeln ('x =',x:4:2,'     y =',lim:8:4);
  33.           x:=x-0.02;
  34.           end;
  35. readln;
  36. clrscr;
  37.  
  38. end;
  39.  
  40. procedure intornosinistro;
  41.  
  42. begin
  43.  
  44. clrscr;
  45. writeln ('Per questo valore di x0 la funzione può essere studiata solo nell''intorno sinistro');
  46. writeln;
  47.  
  48.  
  49. x:= x0 - 0.2;
  50.  
  51.     while x <= x0 do
  52.  
  53.           begin
  54.           lim:= sqrt(x*x-4);
  55.           writeln ('x =',x:4:2,'     y =',lim:8:4);
  56.           x:=x+0.02;
  57.           end;
  58. readln;
  59. clrscr;
  60.  
  61. end;
  62.  
  63. procedure proceduraerrore;
  64.  
  65. begin
  66.  
  67. clrscr;
  68. writeln ('##########');
  69. writeln ('# ERRORE #');
  70. writeln ('##########');
  71. writeln;
  72. writeln ('Il valore di x0 inserito non appartiene al C. E.');
  73.  
  74. end;
  75.  
  76. {Fine procedure}
  77.  
  78.  
  79. {Corpo del programma}
  80.  
  81. begin
  82.    repeat
  83.         writeln ('******************************************************');
  84.         writeln ('* Benvenuto nel programma LIMITE DI UNA FUNZIONE !!! *');
  85.         writeln ('******************************************************');
  86.         writeln;
  87.         writeln;
  88.         writeln ('Questo programma consente di calcolare il limite  della funzione');
  89.         writeln;
  90.         writeln ('f(x)= sqrt(x^2-4) ');
  91.         writeln;
  92.         writeln ('per x che tende ad un valore finito.');
  93.         writeln;
  94.         write ('Si introduca il valore di x0 =');
  95.         readln(x0);
  96.  
  97.           case x0 of
  98.  
  99.           -2 : intornosinistro;
  100.           2: intornodestro;
  101.          
  102.           else
  103.  
  104.           if (x0<2) AND (x0>-2) then
  105.  
  106.           proceduraerrore
  107.  
  108.           else
  109.  
  110.              begin
  111.  
  112.              x:= x0 + 0.2;
  113.  
  114.              while x >= x0 do
  115.  
  116.                 begin
  117.                 lim:= sqrt(x*x-4);
  118.                 writeln ('x =',x:4:2,'     y =',lim:8:4);
  119.                 x:=x-0.02;
  120.                 end;
  121.  
  122.              x:= x0 - 0.2;
  123.  
  124.              while x <= x0 do
  125.  
  126.                 begin
  127.                 lim:= sqrt(x*x-4);
  128.                 writeln ('x =',x:4:2,'     y =',lim:8:4);
  129.                 x:=x+0.02;
  130.                 end;
  131.  
  132.          
  133.                         writeln;
  134.                         writeln ('Il limite di sqrt(x^2-4)');
  135.                         writeln ('per x--> ', x0:4);
  136.                         writeln ('vale ', lim:8:4);
  137.              end;
  138.  
  139.         writeln;
  140.         writeln;
  141.         writeln ('Se vuoi coninuare premi Invio. Per terminare digita - N -');
  142.         readln(t);
  143.         clrscr;
  144.         end;
  145.    until (t='n') OR (t='N');  
  146. end.


PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 21:36
Venerdì, 19/02/2010
Cosa intendi per "un modo per calcolare il limite in modo più efficace e preciso " ?

Comunque ho notato che usi solo varibili globali, e, a mio avviso, la variabile x0 dovrebbe essere di tipo real.

Il mio consiglio, ripeto, è quello di cerare una procedura per il calcolo della funzione

Ecco un esempio:
Codice sorgente - presumibilmente Delphi

  1. function funzione(x:real; var y:real):boolean;
  2. var delta:real;
  3. begin
  4.   delta:=x*x-4;
  5.   if delta<0 then funzione:=false
  6.   else
  7.   begin
  8.    y:=sqrt(delta);
  9.    funzione:=true;
  10.   end;
  11. end;



Non è necessario riscrivere la stessa funzione nel programma!

Se si dovesse cambiare formola come faresti?

Ultima modifica effettuata da Poggi Marco il 19/02/2010 alle 22:45
PM Quote
Avatar
yuco91 (Normal User)
Rookie


Messaggi: 21
Iscritto: 25/08/2009

Segnala al moderatore
Postato alle 23:14
Venerdì, 19/02/2010
Per "più preciso" intendo un programma che mi permetta di calcolare il limite normalmente , ossia un limite il cui risultato sia un numero e non una sequenza di numeri come invece mi da il programma ora. voglio calcolare il limite della funzione precisamente.

PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 23:44
Venerdì, 19/02/2010
Non capisco quale sia la difficoltà!

Ecco un esempio:

Codice sorgente - presumibilmente Delphi

  1. program limite;  
  2.  
  3. uses wincrt;
  4.  
  5.  
  6. {Variabili}
  7.  
  8. var x, lim: real;  
  9.     t : char;
  10.  
  11. function funzione(x:real; var y:real):boolean;
  12. var delta:real;
  13. begin
  14.   delta:=x*x-4;
  15.   if delta<0 then funzione:=false
  16.   else
  17.   begin
  18.    y:=sqrt(delta);
  19.    funzione:=true;
  20.   end;
  21. end;
  22.  
  23. procedure proceduraerrore;
  24. begin
  25.  
  26. clrscr;
  27. writeln ('##########');
  28. writeln ('# ERRORE #');
  29. writeln ('##########');
  30. writeln;
  31. writeln ('Il valore di x0 inserito non appartiene al C. E.');
  32.  
  33. end;
  34.  
  35. begin
  36.    repeat
  37.         writeln ('******************************************************');
  38.         writeln ('* Benvenuto nel programma LIMITE DI UNA FUNZIONE !!! *');
  39.         writeln ('******************************************************');
  40.         writeln;
  41.         writeln;
  42.         writeln ('Questo programma consente di calcolare il limite  della funzione');
  43.         writeln;
  44.         writeln ('f(x)= sqrt(x^2-4) ');
  45.         writeln;
  46.         writeln ('per x che tende ad un valore finito.');
  47.         writeln;
  48.         write ('Si introduca il valore di x0 =');
  49.         readln(x);
  50.         if funzione(x, lim) then   writeln ('x =',x:4:2,'     y =',lim:8:4)
  51.         else proceduraerrore;
  52.         writeln;
  53.         writeln ('Se vuoi coninuare premi Invio. Per terminare digita - N -');
  54.         readln(t);
  55.         clrscr;
  56.    until (t='n') or (t='N');  
  57. end.



PM Quote
Avatar
yuco91 (Normal User)
Rookie


Messaggi: 21
Iscritto: 25/08/2009

Segnala al moderatore
Postato alle 13:20
Domenica, 21/02/2010
Testo quotato

Postato originariamente da Poggi Marco:

Non capisco quale sia la difficoltà!





non si tratta di difficoltà , am del fatto che anche con il tuo esempio il programma non è molto preciso , anzi, da risultati scorretti . Prova ad esempio ad inserire x-->4 e vedrai che il risultato del limite invece di essere 12 , come facilmente si può capire sarà 4,xxxx .

PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 18:08
Domenica, 21/02/2010
Cosa intendi con 4,xxxx ?

Se si inserisce 4 viene calcolato: 4*4-4=12, e successivamente, la radice di 12 (=3.464101...). Almeno secondo la funzione che tu hai scelto.

PM Quote
Avatar
yuco91 (Normal User)
Rookie


Messaggi: 21
Iscritto: 25/08/2009

Segnala al moderatore
Postato alle 17:06
Lunedì, 22/02/2010
Ok . scusami , non avevo letto bene il codice che mi hai gentilmente postato. Era più semplice di come pensassi :D .

Se invece volessi farlo in generale, di una funzione inserita da tastiera ? qualche suggerimento ?

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo