La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Radice quadrata di un numero Salomone Fabio matr. 191337.

Presentazioni simili


Presentazione sul tema: "Radice quadrata di un numero Salomone Fabio matr. 191337."— Transcript della presentazione:

1 Radice quadrata di un numero Salomone Fabio matr

2 Problema Scrivere un algoritmo per determinare la radice quadrata di un numero positivo mediante il metodo di bisezione o metodo dicotomico.

3 Studio del problema nel suo dominio specifico (1) In matematica qualunque numero positivo possiede una radice quadrata, cioè un numero che moltiplicato per se stesso dà come risultato il numero iniziale. Lespressione funzionale è: y 1/2 = x, cioè il numero y è tale che y = x 2. Da cui: x 2 – y = 0.

4 Studio del problema nel suo dominio specifico (2) In questo modo si riconduce il calcolo della radice al problema di determinare lo zero di una funzione. NOTA: si mette anche in relazione una funzione, la radice, con la sua funzione inversa, il quadrato.

5 Studio del problema nel suo dominio specifico (3) Per verificare se esiste lo zero della funzione applichiamo il teorema di esistenza degli zeri, cioè se una funzione è reale, continua in un intervallo chiuso e limitato [a,b] ed assume valori di segno opposto agli estremi dellintervallo, allora esiste almeno un punto X tale che f(X)=0. Inoltre la funzione che si considera è strettamente monotona, quindi lo zero è unico.

6 Applicazione grafica del metodo dicotomico F(b) Y Q1 F(a) Q2 a M1 M3 X M2 b F(x) x F(x) = x 2 Q3 O

7 Passo importante (1) Per applicare il metodo dicotomico bisogna individuare gli estremi superiore ed inferiore dellintervallo in cui si cerca la radice quadrata: Ipotesi:generalmente la radice è al valore stesso. Gli estremi si possono supporre: limite_inf = 0, limite_sup = valore; ATTENZIONE: nel caso di 0 valore. Raffinamento: Se valore > 1, allora si possono inizializzare limite_inf = 1, limite_sup = valore; Se 0 < valore <= 1 allora si può avere limite_inf = 0, limite_sup = 1.

8 Passo importante (2) Determinati gli estremi su cui operare bisogna applicare il metodo di bisezione o dicotomico, il quale consiste in tre passi: Calcolare il punto medio dellintervallo; Calcolare il quadrato del valor medio; Restringere lintervallo di iterazione del procedimento, spostando il limite superiore o inferiore dellintervallo nel punto medio.

9 Bozza dellalgoritmo (1) Leggi valore In base a valore, determina limite_inf e limite_sup /* passo importante: */ medio (limite_inf + limite_sup) / 2 quadrato medio * medio Se (quadrato > valore) limite_sup medio Altrimenti limite_inf medio DOMANDA: Quante volte eseguo il passo?

10 Bozza dellalgoritmo (2) Leggi valore In base a valore, determina limite_inf e limite_sup /* Ipotesi */ Finché quadrato valore /* passo importante: */ medio (limite_inf + limite_sup) /2 quadrato medio * medio Se (quadrato > valore) limite_sup medio Altrimenti limite_inf medio

11 Osservazione quadrato valore è equivalente a not (quadrato = valore). Osserviamo luguaglianza: Poiché quadrato è il risultato di unelaborazione (medio * medio), luguaglianza potrebbe non essere mai raggiunta (quindi lalgoritmo andrebbe in loop). SOLUZIONE: quadrato = valore è equivalente a (quadrato – valore) = 0, allora si può porre ragionevolmente: |quadrato – valore| < (con piccolo a piacere, compatibilmente con la precisione della rappresentazione ).

12 Bozza dellalgoritmo (3) Leggi valore In base a valore, determina limite_inf e limite_sup /* Raffinamento */ Finché |quadrato – valore| > epsilon /* passo importante: */ medio (limite_inf + limite_sup) / 2 quadrato medio * medio Se (quadrato > valore) limite_sup medio Altrimenti limite_inf medio ATTENZIONE: Devo inizializzare quadrato in modo da garantire che si entri nel ciclo.

13 Bozza dellalgoritmo (4) Leggi valore In base a valore, determina limite_inf e limite_sup quadrato valore + 2*epsilon Finché |quadrato – valore| > epsilon /* passo importante: */ medio (limite_inf + limite_sup) / 2 quadrato medio * medio Se (quadrato > valore) limite_sup medio Altrimenti limite_inf medio

14 Algoritmo Lalgoritmo generale da seguire è: Leggi valore da tastiera; Verifica se valore è un numero positivo, altrimenti hai finito; Assegna gli estremi dellintervallo; Inizializza quadrato, per poter entrare nel ciclo; Applica il metodo dicotomico, calcolando medio e quadrato, finché la differenza tra quadrato e valore è maggiore di un epsilon fissato; Visualizza medio; Calcola la radice con la funzione sqrt(x) e visualizzala per confronto.

15 Start Leggi valore Se valore >= 0 Stop Se valore >= 1 limite_inf = 1 limite_sup = valore limite_inf = 0 limite_sup = 1 Inizializza quadrato = valore + 2*EPSILON Finché |quadrato - valore| > EPSILON Calcola medio Calcola quadrato Se quadrato > valore limite_sup = medio limite_inf = medio Stampa medio Calcola sqrt (valore) Stampa sqrt Stampa ERRORE V V V V F F F F

16 Programma in linguaggio C #include #define EPSILON int main() { double valore; double limite_sup, limite_inf; double quadrato, medio; printf("Inserisci il dato di cui vuoi la radice quadrata: "); scanf("%lf", &valore); if (valore >= 0) { if (valore > 1) { limite_sup = valore; limite_inf = 1; } else { limite_sup = 1; limite_inf = 0; }

17 quadrato = valore + 2 * EPSILON; while ( fabs(quadrato - valore) > EPSILON ) { medio = (limite_sup + limite_inf) / 2; quadrato = medio * medio; if (quadrato > valore) limite_sup = medio; else limite_inf = medio; } printf("\nLa radice quadrata di %f vale %f\n", valore, medio); printf("\nLa funzione sqrt fornisce il valore %f\n", sqrt(valore)); } else { printf("\nIl valore inserito non è valido perche' e' negativo!\n"); } return EXIT_SUCCESS; }


Scaricare ppt "Radice quadrata di un numero Salomone Fabio matr. 191337."

Presentazioni simili


Annunci Google