Laboratorio computazionale numerico Lezione 8

Documenti analoghi
3 Bacini di attrazione

Laboratorio di Analisi Numerica Lezione 6

Laboratorio di Analisi Numerica Lezione 6

Laboratorio computazionale numerico Lezione 3

Laboratorio di Analisi Numerica Lezione 2

Laboratorio di Analisi Numerica Lezione 4

Soluzione di Equazioni non lineari

Laboratorio didattico di matematica computazionale

Elementi Elem d enti i d I i nf I orm nf a orm tic a a tic a e Applicazioni Numeriche T I File in Octave

Interpolazione e approssimazione di funzioni

Laboratorio di Calcolo Numerico Laboratorio 4: Functions. Soluzione di Equazioni non lineari

1. Si scriva una function Matlab che implementa il seguente metodo di punto fisso

Laboratorio di Calcolo Numerico Laboratorio 5: Scrittura su FILE. Soluzione di Equazioni non lineari

Esperienze di programmazione Lezione 3

Esercitazione 1 Conversione di base

Laboratorio computazionale numerico Lezione 1

Corso di Matematica per la Chimica

Laboratorio computazionale numerico Lezione 4

Laboratorio computazionale numerico Lezione 2

Interpolazione e approssimazione di dati

Laboratorio computazionale numerico Lezione 3

Laboratorio di Analisi Numerica Lezione 1

Esercitazione 1 Conversione di base

d dx n 0. I polinomi di Legendre possono essere definiti (e, quindi, calcolati) in modo ricorsivo, come segue. Siano

Appunti di informatica. Lezione 8 anno accademico Mario Verdicchio

Laboratorio di Calcolo Numerico Laboratorio 4: Grafici di convergenza e functions

LABORATORIO DI INFORMATICA ESERCITAZIONE VIII

Laboratorio di Analisi Numerica Lezione 3

ISTITUTO DI ISTRUZIONE SUPERIORE A. EINSTEIN PROGETTO LAUREE SCIENTIFICHE

Interpolazione e approssimazione di dati

Esercizi di autovalutazione - Matlab Metodi Numerici con Elementi di Programmazione A.A

Esercizi di MatLab. Sommario Esercizi di introduzione a MatLab per il corso di Calcolo Numerico e Laboratorio, A.A

Calcolo Numerico Corso di Laurea in Informatica Preappello del 28/05/2014 (durata due ore) Tema 1

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 4 - Metodi di Newton e Punto fisso

Metodi di Ottimizzazione

Equazioni e sistemi non lineari

Prove d esame Esercizi con Matlab

Laboratorio di Analisi Numerica Lezione 7

Esercizi Elaborato (versione )

Corso di Analisi Numerica

Laboratorio di Calcolo Numerico

Capitolo 2. Equazioni non lineari. 2.1 Metodo di bisezione. 2.2 Ordine dei metodi

Esercizi di autovalutazione - Matlab Metodi Numerici con Elementi di Programmazione A.A

Foglio di esercizi n.1

Laboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili, Bisezione

Laboratorio di Calcolo Numerico

Laboratorio di Analisi Numerica Lezione 3

Laboratorio di Calcolo Numerico Laboratorio 8: Vettori e Matrici

Introduzione al MATLAB c Parte 2

10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate

Laboratorio di Calcolo Numerico Laboratorio 4: Functions e metodo di Picard

Vettori e Matrici. Corso di Calcolo Numerico. 24 Aprile 2018

PON Liceo Scientifico Leonardo da Vinci. Vallo della Lucania

Introduzione allo Scilab Parte 5: funzioni su matrici; intervalli, grafici.

Lezione 5, 5/11/2014

Laboratorio di Analisi Numerica Lezione 1

Lezione 3 Interpolazione Polinomiale.

Laboratorio di Calcolo Numerico

Ottimizzazione numerica

Analisi Numerica I Approssimazione polinomiale

Esercitazioni di Informatica B A.A. 2010/2011 Pseudocodice. Nicola Vitucci

Corso di Calcolo Numerico

Esercizi su polinomio di Taylor, metodi numerici per il calcolo di zeri di funzione e iterazioni di punto fisso

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 6 Metodi iterativi per sistemi lineari

Interpolazione polinomiale. Interpolazione polinomiale

Esercitazione 2. Prima parte

Universita degli Studi di Ancona - Facolta di Ingegneria Laurea in Ing. Elettronica (VO) Ing. Informatica e Automatica - Ing. delle Telecomunicazioni

Interpolazione polinomiale.

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 4 - Polinomi e Interpolazione polinomiale

Laboratorio di Matematica Computazionale A.A Lab. 4

Ciclo do while in FORTRAN

Esercizio 1. Esercizio 2

Introduzione a Matlab

Esercitazione 2. Prima parte

Esame di Calcolo Numerico per Informatica A.A. 2010/11 Proff. S. De Marchi e M. R. Russo 20 giugno 2011

A lezione sono stati presentati i seguenti passi per risolvere un problema:

Derivazione numerica. Introduzione al calcolo numerico. Derivazione numerica (II) Derivazione numerica (III)

1 Esercizi relativi al Capitolo 1

Annamaria Mazzia. Corso di Metodi Numerici per l Ingegneria dispense e altro materiale su

Integrazione numerica

Generazione di una mesh rettangolare

Metodi Numerici Prova di Laboratorio Esami del Stefano Gualandi

SCILAB: Analisi degli errori

Laboratorio di Analisi Numerica Lezione 2

Informatica B. Facoltà di Ingegneria Industriale Laurea in Ingegneria Energetica, Meccanica e dei Trasporti. Prof. Marco Masseroli

Laboratorio di Sperimentazioni di Fisica I MOD A. 14 ottobre 2009

Prof. Marco Masseroli

Algoritmi stabili e instabili

Analisi Numerica. Debora Botturi ALTAIR. Debora Botturi. Laboratorio di Sistemi e Segnali

Transcript:

Laboratorio computazionale numerico Lezione 8 f.poloni&sns.it 2008-12-03 1 Frattali di Newton In questa lezione cercheremo di disegnare i frattali che si ottengono disegnando i bacini di attrazione del metodo di Newton complesso per un polinomio. Le immagini risultanti dovrebbero assomigliare a quella seguente. Il problema può essere suddiviso in molti sottoproblemi ognuno abbastanza semplice. 1.1 Manipolazione di polinomi Dato un polinomio, lo rappresentiamo come il vettore dei suoi coefficienti: ad esempio, a x 3 1 corrisponde il vettore [1;0;0; 1]. Notare che se il polinomio ha grado n, il vettore ha lunghezza n + 1. Il metodo di Horner per valutare un polinomio corrisponde a fare i prodotti associandoli in questo modo: per esempio, per un polinomio di grado 4, a(x) = (((a 4 x + a 3 ) x + a 2 ) x + a 1 ) x + a 0. Esercizio 1. Scrivere una function y=horner(p,x) che prende un polinomio p (rappresentato come il vettore dei suoi coefficienti) e un numero x e calcola p(x) con il metodo di Horner. 1

Esercizio 2. Scrivere una function dp=derivata(p) che prende un polinomio p (vettore di coefficienti) e restituisce la sua derivata (vettore di coefficienti). 1.2 Metodo di Newton Il metodo di Newton è l iterazione x k+1 = x k p(x k) p (x(k). Esercizio 3. Scrivere una function x=newton(p,x0) che esegue il metodo di Newton sul polinomio p partendo dal punto iniziale x0. Come criterio di arresto, si può usare quello di terminare se p(x) 10 12 : function x=newton (p, x0 ) ; x=x0 ; px=horner (p, x0 ) ; while ( abs ( px)>1e 12) %c a l c o l a i l nuovo x e i l nuovo px endwhile endfunction Testare il metodo di Newton sul polinomio p(x) = x 3 + 1. Quali sono le sue radici? Riuscite a trovare un valore iniziale per il metodo di Newton che lo faccia convergere ad ognuna di esse? Ricordate che il modo più semplice per inserire un numero complesso in Octave è 2+3 I. 1.3 Manipolazione di immagini Per un computer, un immagine è formata da un rettangolo di quadratini colorati (pixel). Ogni quadratino viene colorato con luce rossa, verde e blu, ognuna con una certa intensità. In Octave, un immagine è rappresentata da una matrice contenente dei numeri interi. Octave traduce questi interi in colori in base a una matrice n 3, detta 2

colormap, che contiene nella riga k-esima i tre valori di intensità (in una scala da 0 a 1) rispettivamente del rosso, verde e blu da associare al k-esimo colore. Per esempio, inizializzando la colormap con le istruzioni octave :24> cm=eye ( 3 ) cm = 1 0 0 0 1 0 0 0 1 octave :25> colormap (cm ) ; octave :26> Octave colorerà tutti gli elementi contenenti il numero 1 di una matrice immagine di verde (intensità=1 0 0), tutti gli elementi contenenti 2 di rosso, tutti gli elementi contenenti 3 di blu. Per esempio, provate a dare le istruzioni octave :28> A=ones (100,100)+ eye ( 100, 100) octave :29> image(a) (l istruzione image visualizza un immagine a schermo). 1.4 Frattale di Newton Per disegnare il frattale di Newton relativo al polinomio p(x) = x 3 + 1, abbiamo bisogno innanzitutto di una funzione che decida a quale valore c è convergenza. Esercizio 4. Scrivere una funzione function val=decidi(x) che restituisca 1, 2 o 3 a seconda se il numero complesso x è più vicino a 1, a 1 2 + I 3 2, o a 1 2 I 3 2. Prendiamo 101 valori equispaziati nell intervallo [ 2, 2] con l istruzione range= 2:0.04:2. Esercizio 5. Scrivere una function img=disegna() che non prende alcun argomento e restituisce una matrice 101 101 calcolata in questo modo: per ogni coppia (i, j), Calcola il punto del piano complesso z0=range(i)+i range(j); Esegue il metodo di Newton per il polinomio x 3 + 1 = 0; Utilizzando la funzione decidi(z), scriva 1, 2 o 3 in img(i, j) se il metodo di Newton con valore iniziale z0 converge rispettivamente a una delle tre radici del polinomio 1. La funzione appena scritta sarà probabilmente abbastanza lenta (potrebbe metterci un mezzo minuto...) e restituirà una matrice img che potete visualizzare a schermo con l istruzione image(img) (se non l avete ancora fatto, utilizzate prima l istruzione colormap(eye(3)) per inizializzare la colormap). 1 potete dare per scontato che il metodo di Newton converga per tutti i valori iniziali nel nostro range. 3

1.5 Ottimizzazione (se avete finito e vi state annoiando) La funzione appena scritta è abbastanza lenta. Una volta che abbiamo stabilito che è troppo lenta, e solo allora 2, possiamo pensare a come farla andare più veloce. Per come è fatto Octave (è un linguaggio interpretato), le parti critiche sono: l esecuzione di molte istruzioni è lenta: per esempio un ciclo for vs. un assegnazione fatta direttamente su un vettore: for i =1:100 v ( i )= i +1; %e piu l e n t o d i v=1+1:100; la chiamata di funzioni è lenta, in particolare le funzioni definite dall utente sono più costose di quelle già esistenti dentro Octave. Un primo passo può essere quello di sostituire le nostre funzioni horner e derivata con due funzioni già esistenti in Octave che fanno lo stesso lavoro: rispettivamente polyval e polyderiv. Poi, dovremmo cercare di rimpiazzare le 101 101 chiamate di funzione con un esecuzione di Newton in parallelo su tutti gli elementi della matrice. Ci possono aiutare l istruzione./ di Octave (divisione elemento per elemento tra due matrici/vettori) e il fatto che polyval lavora in parallelo elemento per elemento se gli passiamo una matrice. La funzione decidi () invece è più complicata, serve utilizzare le variabili di tipo logical (date un occhiata alla sezione 4.5 del manuale di Octave, lo trovate per esempio sul sito del corso). Potete passare il resto della lezione a cercare di velocizzare il programma appena scritto. In fondo a questo documento (c è una pagina bianca in mezzo) trovate una possibile soluzione. 2 Premature optimization is the root of all evil, D. Knuth (quello che ha inventato il TEX, tra le altre cose). 4

5

1.6 Soluzione di Ottimizzazione function img=d i s e g n a o p t ( dimensione ) p = [ 1 ; 0 ; 0 ; 1 ] ; n=dimensione ; range = 2:4/(n 1 ) : 2 ; deg=size (p,1) 1; dp=p o l y d e r i v ( p ) ; roots=roots ( p ) ; colormap ( eye ( 3 ) ) ; %da cambiare se s i a l z a i l grado d e l polinomio... %matrice d e i v a l o r i i n i z i a l i X=ones (n, 1 ) range+range ones ( 1, n ) I ; %esegue 10 p a s s i d i Newton in p a r a l l e l o, dovrebbero b a s t a r e for k=1:10 X=X polyval (p,x). / polyval ( dp,x) ; %t r o v a i l punto piu v i c i n o in p a r a l l e l o img=zeros (n, n ) ; for i =1: deg Map=ones (n, n ) ; for j =1: deg i f ( j = i ) Map=Map & ( abs (X roots ( i ) ) < abs (X roots ( j ) ) ) ; endif img (Map)= i ; endfunction 6