Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
In questa esercitazione si chiede di scrivere due diversi programmi. Il primo, che dovrete chiamare erone.c, approssima con un algoritmo iterativo il valore della radice quadrata di un numero razionale. Il secondo, che dovrete chiamare galileo.c, si occupa del moto di due proiettili. Se non riuscite a scrivere entrambe i programmi qui...beh, avete di che esercitarvi a casa!
Algoritmo di Erone
Erone di Alessandria propose un algoritmo per lapprossimazione della radice quadrata di un numero. Lalgoritmo si basava su considerazioni geometriche. Qui a noi interessa x solo (o meglio ci serve solo sapere) che se a0 ` una stima per eccesso di x, allora a0 ` una e e stima per difetto della stessa radice. La media di questi due valori a1 = 1 2 a0 + x a0 (1)
rappresenta una approssimazione della radice migliore delle stime per eccesso e per difetto. Il procedimento di stima pu` essere iterato no a che la variazione del risultato che si o ottiene ad un passo ed al successivo non sia pi` piccola di una soglia, , predenta (questo u equivale a dire che la stima ` arrivata a convergenza con una precisione pari ad ). La e formula iterativa si scrive 1 x an+1 = an + (2) 2 an con n = 0, 1, ... e la condizione di convergenza ` data da e |an+1 an | < (3)
Scrivere un programma che: 1. Stampi sullo schermo una breve descrizione di quel che far` ; a 2. Chieda allutente di inserire il valore di x e quello di . Entrambe gli input devono essere maggiore di zero. Si inserisca nel programma un ciclo di controllo su questi valori che informi lutente di eventuali errori di digitazione e consenta di inserire nuovamente il (o i) dati non corretti; 3. Denisca come valore di partenza del ciclo iterativo a0 = x; 4. Calcoli iterativamente lapprossimazione della radice. Literazione consiste in un ciclo che ripete (2) no a che non si ` raggiunta la convergenza ssata dalla soglia ; e 5. Alla ne del ciclo bisogna stampare sullo schermo, con un messaggio informativo, il numero di iterazioni che sono state necessarie per convergere (quindi queste vanno contate nel ciclo) ed il valore dellapprossimazione ottenuta;
Variazione sul tema Utilizzando la struttura del programma precedente, calcolare il valore della radice di x = 500 per = 10k dove k = 1, ...6. Alla ne di ognuno di questi calcoli, stampare sullo schermo il valore di , quello dellapprossimazione della radice ed il numero di iterazioni corrispondente alla precisione 10k .
(4)