Esercitazione 5 Esercizio 3 radice quadrata con metodo

  • Slides: 10
Download presentation
Esercitazione 5 Esercizio 3 (radice quadrata con metodo di Newton) Autore: Cristiano Cavo S

Esercitazione 5 Esercizio 3 (radice quadrata con metodo di Newton) Autore: Cristiano Cavo S 161894 I Corso

Esercizio 3 (radice quadrata con metodo di Newton) Il problema chiede di utilizzare l’algoritmo

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 R 0 = x dove Rn è il valore della radice all'iterazione nesima e Rn-1 è quello all'iterazione n-1. Il metodo proposto da Newton è iterativo.

Esercizio 3 (radice quadrata con metodo di Newton) Tradotto in algoritmo: Per un certo

Esercizio 3 (radice quadrata con metodo di Newton) Tradotto in algoritmo: Per un certo numero di volte rn = (rn_meno 1 + x/rn_meno 1) / 2 /* devo predisporre per la prossima iterazione */ rn_meno 1 = rn

Esercizio 3 (radice quadrata con metodo di Newton) Il ciclo (WHILE) deve essere effettuato

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: R 0 = 2 R 1 = (2 + 2 / 2) / 2 = 1. 5 R 2 = (1. 5 + 2 / 1. 5) / 2 = 1. 416 R 3 = (1. 416 + 2 / 1. 416) / 2 = 1. 4142

Esercizio 3 (radice quadrata con metodo di Newton) Si deduce che Rn si avvicina

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).

Esercizio 3 (radice quadrata con metodo di Newton) Finché (diff > SOGLIA) rn =

Esercizio 3 (radice quadrata con metodo di Newton) Finché (diff > SOGLIA) rn = (rn_meno 1 + x/rn_meno 1) / 2 diff = |rn – rn_meno 1| rn_meno 1 = rn Adesso aggiungo le inizializzazioni: rn_meno 1 è fissata dall’alg. Di Newton (= x) diff la devo scegliere io, in modo che al primo passaggio si entri nel ciclo.

Esercizio 3 (radice quadrata con metodo di Newton) Se prima dell’istruzione WHILE impostiamo: diff

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.

Esercizio 3 (radice quadrata con metodo di Newton) Traduzione in linguaggio C. /*Definizione librerie

Esercizio 3 (radice quadrata con metodo di Newton) Traduzione in linguaggio C. /*Definizione librerie e costanti*/ #include <stdio. h> #include <math. h> #define SOGLIA 0. 001 main() { double x, rn_meno 1, diff, r; system("CLS");

Esercizio 3 (radice quadrata con metodo di Newton) Traduzione in linguaggio C. printf("Calcolo della

Esercizio 3 (radice quadrata con metodo di Newton) Traduzione in linguaggio C. printf("Calcolo della radice di un numero. nn. Inserisci il numero x di cui calcolarne la radice: n"); scanf("%lf", &x); rn_meno 1=x; diff=2*SOGLIA;

Esercizio 3 (radice quadrata con metodo di Newton) Traduzione in linguaggio C. while(diff>SOGLIA) {

Esercizio 3 (radice quadrata con metodo di Newton) Traduzione in linguaggio C. while(diff>SOGLIA) { rn=(rn_meno 1+x/rn_meno 1)/2; diff=fabs(rn-rn_meno 1); rn_meno 1=rn; } r=sqrt(x); printf("n. La radice di x equivale a: %fnn. Il valore di x calcolato con sqrt è: %fnn", rn, r); system("PAUSE"); }");