La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Radice quadrata di un numero

Presentazioni simili


Presentazione sul tema: "Radice quadrata di un numero"— 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. L’espressione funzionale è: y1/2 = x , cioè il numero y è tale che y = x2. Da cui: x2 – 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 dell’intervallo, 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(x) F(x) = x2 F(b) Q2 Q3 Y Q1 F(a) x O a M1 X M3 M2 b

7 Passo importante (1) Per applicare il metodo dicotomico bisogna individuare gli estremi superiore ed inferiore dell’intervallo 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 < 1 si ha radice > 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 dell’intervallo; Calcolare il quadrato del valor medio; Restringere l’intervallo di iterazione del procedimento, spostando il limite superiore o inferiore dell’intervallo nel punto medio.

9 Bozza dell’algoritmo (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 dell’algoritmo (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 l’uguaglianza: Poiché quadrato è il risultato di un’elaborazione (medio * medio), l’uguaglianza potrebbe non essere mai raggiunta (quindi l’algoritmo 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 dell’algoritmo (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 dell’algoritmo (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 L’algoritmo generale da seguire è: Leggi valore da tastiera;
Verifica se valore è un numero positivo, altrimenti hai finito; Assegna gli estremi dell’intervallo; 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 Stop Leggi valore Se valore >= 0 Se valore >= 1
F V Se valore >= 1 F Stampa ERRORE limite_inf = 1 limite_sup = valore limite_inf = 0 limite_sup = 1 Inizializza quadrato = valore + 2*EPSILON Finché |quadrato - valore| > EPSILON F Stampa medio V Calcola medio Calcola quadrato Calcola sqrt (valore) Se quadrato > valore V F Stampa sqrt limite_sup = medio limite_inf = medio Stop

16 Programma in linguaggio C
#include <stdio.h> #include <stdlib.h> #include <math.h> #define EPSILON 0.001 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)); printf("\nIl valore inserito non è valido perche' e' negativo!\n"); return EXIT_SUCCESS;


Scaricare ppt "Radice quadrata di un numero"

Presentazioni simili


Annunci Google