fisica:informatica:201415:esercitazioni:esercitazione3bis
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente | ||
fisica:informatica:201415:esercitazioni:esercitazione3bis [21/01/2015 alle 15:34 (10 anni fa)] – [Esercizio 1: Approssimazione dell'integrale] Susanna Pelagatti | fisica:informatica:201415:esercitazioni:esercitazione3bis [28/02/2015 alle 08:24 (10 anni fa)] (versione attuale) – [Esercizio 1: Approssimazione dell'integrale] Susanna Pelagatti | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
====== Esercitazione 3 ====== | ====== Esercitazione 3 ====== | ||
+ | Per la soluzione di questi esercizi utilizzare dove serve la libreria matematica | ||
+ | [[http:// | ||
+ | Includendo all' | ||
+ | < | ||
+ | #include < | ||
+ | </ | ||
+ | e compilando con | ||
+ | < | ||
+ | gcc -Wall -pedantic file.c -o nome_eseguibile -lm | ||
+ | </ | ||
===== Esercizio 1: Approssimazione dell' | ===== Esercizio 1: Approssimazione dell' | ||
Consideriamo la funzione | Consideriamo la funzione | ||
Linea 13: | Linea 23: | ||
'' | '' | ||
il procedimento dei trapezio per '' | il procedimento dei trapezio per '' | ||
+ | |||
+ | ===== Esercizio 2: Calcolo della radice quadrata ====== | ||
+ | Dato un numero reale positivo //a// si consideri la sequenza dei numeri reali //x// definita da | ||
+ | < | ||
+ | x[0] = 1 | ||
+ | x[i+1] = 1/2*(x[i] + a/x[i]) | ||
+ | </ | ||
+ | si puo' dimostrare che '' | ||
+ | |||
+ | Scrivere un programma che legga il valore di //a// da standard input e calcoli la radice quadrata di //a// utilizzando la sequenza. In particolare, | ||
+ | |||
+ | Ad ogni ciclo, far stampare su standard output il numero dell' | ||
===== Esercizio 2: L' | ===== Esercizio 2: L' | ||
+ | L' | ||
+ | < | ||
+ | z(0) = 0 | ||
+ | z(n+1) = z(n)^2 + c | ||
+ | </ | ||
+ | e' limitata, cioe' '' | ||
+ | Infatti al variare di '' | ||
+ | all’infinito o rimanere confinata in un disco di raggio 2 del piano complesso centrato | ||
+ | nell’origine. | ||
+ | |||
+ | L’algoritmo piu' semplice per visualizzare (una approssimazione de) l’insieme di Mandelbrot ´e l’// | ||
+ | da visualizzare) ed '' | ||
+ | - Si suddivide A in una griglia di punti a distanza uniforme (pixel) | ||
+ | - per ogni pixel (x, y) | ||
+ | - si calcolano r valori della sequenza con c=(x,y) | ||
+ | - se dopo r iterazioni '' | ||
+ | - altrimenti si assegna a c il colore j, che e' il minimo indice per cui '' | ||
+ | Di seguito viene mostrato un possibile pseudocodice per il calcolo del singolo pixel: | ||
+ | < | ||
+ | Per ogni pixel: | ||
+ | { | ||
+ | x = x0 = x co-ordinate of pixel | ||
+ | y = y0 = y co-ordinate of pixel | ||
+ | x2 = x*x | ||
+ | y2 = y*y | ||
+ | iteration = 0 | ||
+ | maxiteration = 1000 | ||
+ | while ( x2 + y2 < (2*2) | ||
+ | AND iteration < maxiteration ) | ||
+ | { | ||
+ | y = 2*x*y + y0 | ||
+ | x = x2 - y2 + x0 | ||
+ | x2 = x*x | ||
+ | y2 = y*y | ||
+ | iteration = iteration + 1 | ||
+ | } | ||
+ | if ( iteration == maxiteration ) | ||
+ | colour = black | ||
+ | else | ||
+ | colour = iteration | ||
+ | } | ||
+ | </ | ||
+ | Nel codice, le coordinate del pixel (x, y) sono usate come valore iniziale per il calcolo. Il risultato di ogni iterazione e' usato come punto d’inizio della successiva. Ad ogni | ||
+ | iterazione si controlla se siamo usciti dal cerchio di raggio 2 (e quindi se (x,y) non | ||
+ | appartiene a M), se questo e' vero si assegna il numero di iterazioni come colore a (x, y) e | ||
+ | si considera il prossimo punto, altrimenti si calcola la nuova iterazione. Quindi, rispetto | ||
+ | alla definizione iniziale: | ||
+ | |||
+ | < | ||
+ | z = x + iy | ||
+ | c = x0 + iy0 | ||
+ | z^2 = x^2 + i2xy − y^2. | ||
+ | </ | ||
+ | Inoltre, '' | ||
+ | Scrivere un programma C che calcola l' |
fisica/informatica/201415/esercitazioni/esercitazione3bis.1421854489.txt.gz · Ultima modifica: 21/01/2015 alle 15:34 (10 anni fa) da Susanna Pelagatti