Sei sulla pagina 1di 2

Erone e Galileo

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 .

Moto di due proiettili


Un grave lanciato dallorigine (x = 0,y = 0) con velocit` iniziale (vx ,vy ) compie un moto a parabolico di equazioni x(t) = vx t y(t) = vy t 0.5 g t con g = 9.82 (unit` arbitrarie). a Scrivere un programma che: 1. Stampi sullo schermo una breve descrizione di quel che far` ; a 2. Chieda allutente di inserire le componenti della velocit` iniziale di due proiettili; a 3. Calcoli, a partire da t = 0, la posizione dei proiettili ad intervalli di durata t. Il valore di t deve essere denito come direttiva di precompilatore. Il calcolo prosegue no a che uno dei due proiettili tocca terra (terra vuol dire y 0.); 4. Calcoli e stampi la distanza massima dei proiettili lungo le traiettorie calcolate; 5. Stampi il tempo a cui si ` realizzata la massima distanza. e
2

(4)