Scaricare la presentazione
PubblicatoMimi Di bella Modificato 11 anni fa
1
Esercitazione 5 Esercizio 3 (radice quadrata con metodo di Newton)
Autore: Cristiano Cavo S I Corso
2
Esercizio 3 (radice quadrata con metodo di Newton)
Il problema chiede di utilizzare l’algoritmo di Newton per il calcolo della radice quadrata di x: Rn = (Rn-1 + x / Rn-1) / 2 avendo posto R0 = x dove Rn è il valore della radice all'iterazione n-esima e Rn-1 è quello all'iterazione n-1. Il metodo proposto da Newton è iterativo.
3
Esercizio 3 (radice quadrata con metodo di Newton)
Tradotto in algoritmo: Per un certo numero di volte rn = (rn_meno1 + x/rn_meno1) / 2 /* devo predisporre per la prossima iterazione */ rn_meno1 = rn
4
Esercizio 3 (radice quadrata con metodo di Newton)
Il ciclo (WHILE) deve essere effettuato fintanto che si verifica una certa condizione. Per capire qual è questa condizione, valuto come evolve l’algoritmo di Newton facendo un esempio: R0 = 2 R1 = (2 + 2 / 2) / 2 = 1.5 R2 = ( / 1.5) / 2 = R3 = ( / 1.416) / 2 =
5
Esercizio 3 (radice quadrata con metodo di Newton)
Si deduce che Rn si avvicina asintotticamente al valore vero. Un criterio di terminazione in questo caso è di vedere se tra una iterazione e quella successiva il valore è cambiato di poco: devo quindi calcolare la differenza tra Rn ed Rn-1 e controllare se il valore ottenuto è minore di una soglia (conviene calcolare la differenza in valore assoluto, per tener conto dei numeri < 1).
6
Esercizio 3 (radice quadrata con metodo di Newton)
Finché (diff > SOGLIA) rn = (rn_meno1 + x/rn_meno1) / 2 diff = |rn – rn_meno1| rn_meno1 = rn Adesso aggiungo le inizializzazioni: rn_meno1 è fissata dall’alg. Di Newton (= x) diff la devo scegliere io, in modo che al primo passaggio si entri nel ciclo.
7
Esercizio 3 (radice quadrata con metodo di Newton)
Se prima dell’istruzione WHILE impostiamo: diff = 2 * SOGLIA possiamo essere sicuri che la condizione di partenza è una condizione valida. Ora ci si può occupare del resto del programma.
8
Esercizio 3 (radice quadrata con metodo di Newton)
Traduzione in linguaggio C. /*Definizione librerie e costanti*/ #include <stdio.h> #include <math.h> #define SOGLIA main() { double x, rn, rn_meno1, diff, r; system("CLS");
9
Esercizio 3 (radice quadrata con metodo di Newton)
Traduzione in linguaggio C. printf("Calcolo della radice di un numero.\n\nInserisci il numero x di cui calcolarne la radice:\n"); scanf("%lf", &x); rn_meno1=x; diff=2*SOGLIA;
10
Esercizio 3 (radice quadrata con metodo di Newton)
Traduzione in linguaggio C. while(diff>SOGLIA) { rn=(rn_meno1+x/rn_meno1)/2; diff=fabs(rn-rn_meno1); rn_meno1=rn; } r=sqrt(x); printf("\nLa radice di x equivale a: %f\n\nIl valore di x calcolato con sqrt è: %f\n\n\n\n", rn, r); system("PAUSE"); }");
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.