Equazioni e sistemi non lineari

Documenti analoghi
Equazioni e sistemi non lineari

Equazioni e sistemi non lineari

Equazioni e sistemi non lineari

Equazioni e sistemi non lineari

Equazioni e sistemi non lineari

Equazioni e sistemi non lineari

Equazioni e sistemi non lineari

Comandi di Input/Output in Matlab

Equazioni non lineari. Gabriella Puppo

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

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 3-24/3/2014

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

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 9 - Equazioni non lineari

Complementi di Matematica A.A Laboratorio 10

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

Soluzione di Equazioni non lineari

Problema. Equazioni non lineari. Metodo grafico. Teorema. Cercare la soluzione di

Claudio Estatico Equazioni non-lineari

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

Metodi per il calcolo degli zeri di funzioni non lineari

Esercizio 1. Esercizio 2

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 7

MATLAB:Metodi Numerici per zeri di funzioni.

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

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 11 - Metodi numerici per equazioni differenziali ordinarie

Laboratorio di Matematica Computazionale A.A Lab. 4

Laboratorio di Matematica Computazionale A.A Lab. 4

Programmare con MATLAB c Parte 5 Cicli: for e while

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 4-23/3/2015

Calcolo del fattore di convergenza

Metodi di Ottimizzazione

Laboratorio 3-30 settembre 2005

Calcolo Numerico - Prova Matlab 19 luglio 2013

Metodi iterativi per equazioni nonlineari.

Università degli Studi di Ferrara

Laboratorio di Matematica Computazionale A.A Lab. 3

Laboratorio di Calcolo Numerico

Laboratorio di Calcolo Numerico A.A Laboratorio 4 Risoluzione di sistemi non lineari Metodo di punto fisso

Autovalori ed autovettori di una matrice

Autovalori ed autovettori di una matrice

Autovalori ed autovettori di una matrice

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 3

Introduzione al MATLAB c Parte 2

Metodi di Iterazione Funzionale

1 Esercizi relativi al Capitolo 1

Lezione 5, 5/11/2014

Corso di Analisi Numerica

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

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

Esame di Calcolo Numerico per Informatica A.A. 2010/11: testo soluzioni Proff. S. De Marchi e M. R. Russo 12 luglio 2011

Elementi di Calcolo Scientifico per l Ingegneria A.A

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

Laboratorio di Calcolo Numerico

Equazioni non lineari: esempi. Risoluzione f (x) = 0 con x [a,b] R, f C([a,b]).

Capitolo 1. Esercizi a.a Esercizi. Esercizio 1.1 Dimostrare che il metodo iterativo

Metodi Numerici con elementi di Programmazione (A.A )

Ricerca di zeri di equazioni non lineari

Metodi Numerici per l Approssimazione degli Zeri di una Funzione

Equazioni differenziali con valori al bordo

Metodi Numerici con elementi di Programmazione (A.A )

Interpolazione e approssimazione di funzioni

Corso di Calcolo Numerico

Integrazione numerica

Comandi di Input/Output in Matlab

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

Autovalori ed autovettori di una matrice

Corso di Calcolo Numerico

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

Corso di Laurea Specialistica in Ingegneria Meccanica e Ingegneria Energetica Progetto numerico al calcolatore

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 11 - Metodi numerici per equazioni differenziali ordinarie

METODI DI PUNTO FISSO

Calcolo Numerico con elementi di programmazione

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 11 Metodi numerici per equazioni differenziali ordinarie

f(x) = x e x, prendere come intervallo iniziale [0, 1] e fissare come precisione ε = 10 8.

Metodi Numerici (A.A ) Prof. F. Pitolli

Daniela Lera A.A

Laboratorio di Calcolo Numerico

Metodi numerici per zeri di funzioni

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

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

Metodi per la risoluzione di equazioni non lineari

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

Programma del corso di: Laboratorio di Programmazione e Calcolo Corso di laurea in Matematica a.a Proff. B. Paternoster, D.

Laboratorio di Calcolo Numerico Laboratorio 3: equazioni non lineari

Soluzioni: Laboratorio Calcolo Numerico labor3.pdf

Calcolo Numerico (A.A ) Esercitazione n. 9. Metodo del punto unito, Metodo di Newton per sistemi

Algoritmi e dintorni: La radice quadrata Prof. Ettore Limoli. Formule iterative

Calcolo Numerico (A.A ) Esercitazione n. 9. Metodo del punto unito, Metodo di Newton per sistemi

Laboratorio 2. Calcolo simbolico, limiti e derivate. Metodo di Newton.

LEZIONE 5. Esercizio 5.1. Calcolare il limite per x ± delle seguenti funzioni. lim. lim. lim. lim. lim. e x ) x. per x. lim

Polinomi. I polinomi della forma

CALCOLO NUMERICO. Francesca Mazzia. Calcolo degli autovalori. Dipartimento Interuniversitario di Matematica. Università di Bari

Esame di Calcolo Numerico per Informatica A.A. 2010/11 Proff. S. De Marchi e M. R. Russo 31 agosto 2011 Testo e soluzioni

Calcolo Numerico con elementi di programmazione

Transcript:

Equazioni e sistemi non lineari Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 4 novembre 2007

Outline 1 Ricerca degli zeri di una funzione Problema e definizioni Metodo di Newton-Raphson Test d arresto Metodo delle secanti Function di Matlab 2 Soluzione di sistemi non lineari Il metodo di Newton-Raphson per sistemi Problemi di minimo 3 Gestione dell output 4 Appendice

Zeri di funzione Problema Data f : [a, b] R si cerca x [a, b] tale che f (x) = 0. Indichiamo con α uno zero di f. Teorema Supponiamo che la funzione f : [a, b] R sia continua in [a, b] e che f (a) f (b) < 0; allora esiste α (a, b) tale che f (α) = 0.

Ordine di convergenza di un metodo iterativo Definizione Si dice che un metodo iterativo è convergente di ordine p > 1 se vale α x k+1 lim k α x k p = C 0. Si dice che un metodo iterativo converge linearmente se esiste un numero positivo 0 < C < 1 tale che α x k+1 lim = C. k α x k Si dice che un metodo iterativo converge superlinearmente se vale α x k+1 lim = 0. k α x k

Metodo di Newton-Raphson Supponiamo di avere calcolato il valore x k. La migliore approssimazione lineare della funzione f nel punto x k è data dalla retta tangente t k (x) = f (x k ) + f (x k )(x x k ). Ponendo t k (x) = 0, si ricava il nuovo punto della successione x k+1. Iterata di Newton-Raphson Dato x 0, x k+1 = x k f (x k) f (x k )

Teorema di convergenza locale quadratica Teorema Sia f : [a, b] R una funzione di classe C 2. Sia α tale che f (α) = 0, f (α) 0. Allora esiste η > 0 tale che se il punto iniziale x 0 soddisfa α x 0 η allora si ha: 1. Per ogni k N, α x k η; 2. lim x k = α; k α x k+1 3. lim k (α x k ) 2 = f (α) 2f (α).

Algoritmo di Newton-Raphson 1. Dato x 0. 2. valuta y = f (x 0 ) e la derivata dy = f (x 0 ); 3. Se il test d arresto è verificato, x 0 è la soluzione cercata; stop. 4. Altrimenti: 3.1 calcola δ = y/dy; 3.2 aggiorna x 0 = x 0 + δ. 3.3 valuta y = f (x 0 ) e la derivata dy = f (x 0 ); 5. Ripeti da 3.

Test d arresto Si deve trovare un modo per imporre che l errore sia inferiore ad una tolleranza prestabilita, ossia tale che α x k α toll, oppure α x k toll se α = 0. Due possibilità: f (x k ) toll non efficiente se f (α) 0 oppure f (α) >> 1. x k+1 x k toll efficiente se il metodo converge superlinearmente.

Function grafnewt grafnewt La function grafnewt.m implementa l algoritmo di Newton-Raphson e riporta in un grafico il comportamento della soluzione: [zero,fz,iter,xk,fk]=grafnewton (f,fd,a,b,x0,toll,niter) Input f function che contiene l espressione della funzione f ; df function che contiene l espressione della derivata f ; a,b intervallo in cui viene rappresentata la funzione; x0 punto iniziale per l iterazione; toll tolleranza desiderata; Niter numero massimo di ietrazioni da eseguire; Output zero soluzione cercata; fz valore di f nello zero calcolato; xk vettore contenente le successive approssimazioni x k ; fk vettore contenente i valori f (x k ); iter numero di iterazioni necessarie per arrivare alla soluzione.

Esercizio Si consideri la funzione f (x) = x 3sin(3x) x x [0, 6]. Usare la function grafnewt per calcolare lo zero di f e rappresentare il procedimento iterativo con le seguenti scelte del dato iniziale x 0 = 0.1, x 0 = 2, x 0 = 2.1, x 0 = 2.2, x 0 = 2.4, x 0 = 2.5 e x 0 = 3.

Function newton newton La function newton.m implementa l algoritmo di Newton-Raphson con la seguente riga di dichiarazione: [zero,fz,iter,xk,fk]=newton (f,fd,x0,toll,niter,alfa) Input f function che contiene l espressione della funzione f ; df function che contiene l espressione della derivata f ; x0 punto iniziale per l iterazione; toll tolleranza desiderata; Niter numero massimo di ietrazioni da eseguire; alfa valore esatto della soluzione se conosciuto. Output zero soluzione cercata; fz valore di f nello zero calcolato; xk vettore contenente le successive approssimazioni x k ; fk vettore contenente i valori f (x k ); iter numero di iterazioni necessarie per arrivare alla soluzione.

Tabella dei risultati La function newton produce una tabella che contiene in ciascuna riga: - numero dell iterazione k; - soluzione approssimata x k ; - valore della funzione f (x k ); - differenza x k x k 1 ; α x k - rapporto (α x k 1 ) 2 Nota bene Per calcolare l ultima colonna della tabella viene usato il valore esatto se conosciuto. Se non si conosce il valore esatto dello zero, la variabile alfa non viene assegnata e l ordine di convergenza viene calcolato usando alfa=zero.

Test Esercizio 1 Usare la function newton per calcolare gli zeri delle seguenti funzioni, con x 0 assegnato: f (x) = sin x cos 2x x 0 = 1 f (x) = x 3 7x 2 + 11x 5 x 0 = 2 e x 0 = 7 f (x) = x 4 12x 3 47x 2 60x + 24 x 0 = 0 e x 0 = 2 Fare un grafico di ciascuna funzione e commentare i risultati ottenuti. Esercizio 2 Si consideri l equazione 2x 4 11x 3 + 21x 2 16x + 4 = 0. 1. Plottare la funzione nell intervallo [0, 3]. 2. Trovare gli zeri mediante il metodo di Newton usando i seguenti valori iniziali: x 0 = 0.75, 1.25, 1.75, 2.25, 2.75. 3. Per ciascuna radice trovata dire l ordine di convergenza.

Metodo delle secanti Supponiamo di avere calcolato il valore x k. Nel caso in cui non si disponga della derivata di f oppure il costo del calcolo sia eccessivo si può considerare la secante che passa per (x k, f (x k )) e (x k 1, f (x k 1 )): s k (x) = f (x k ) + f (x k) f (x k 1 ) x k x k 1 (x x k ). Ponendo s k (x) = 0, si ricava il nuovo punto della successione x k+1. Iterata delle secanti Dati x 0 e x 1 x k+1 = x k x k x k 1 f (x k ) f (x k 1 ) f (x k).

Teorema di convergenza locale superlineare Teorema Sia f : [a, b] R una funzione di classe C 2. Sia α tale che f (α) = 0, f (α) 0. Allora esiste η > 0 tale che se il punto iniziale x 0 soddisfa α x 0 η allora si ha: 1. Per ogni k N, α x k η; 2. lim x k = α; k 3. lim k α x k+1 (α x k )(α x k 1 ) = f (α) 2f (α) α x k+1 4. lim k α x k p = M (1+1/p) con p = (1 + 5)/2 e M = f (α) /(2 f (α) ).

Algoritmo delle secanti 1. Dato x 0 e x 1 ; 2. valuta f 0 = f (x 0 ) e f 1 = f (x 1 ). 3. Se il test d arresto è verificato, x 1 è la soluzione cercata; stop. 4. Altrimenti: 3.1 calcola dy = (f 1 f 0 )/(x 1 x 0 ); 3.2 calcola δ = f 1 /dy; 3.3 aggiorna x 0 = x 1, x 1 = x 1 + δ; 3.4 aggiorna f 0 = f 1 ; 3.5 valuta f 1 = f (x 1 ). 5. Ripeti da 3.

Function secanti secanti La function secanti.m implementa l algoritmo delle secanti con la seguente riga di dichiarazione: [zero,fz,iter,xk,fk]=secanti (f,x0,x1,toll,niter,alfa) Input f function che contiene l espressione della funzione f ; x0,x1 dati iniziali per l iterazione; toll tolleranza desiderata; Niter numero massimo di ietrazioni da eseguire; alfa valore esatto della soluzione se conosciuto. Output zero soluzione cercata; fz valore di f nello zero calcolato; xk vettore contenente le successive approssimazioni x k ; fk vettore contenente i valori f (x k ); iter numero di iterazioni necessarie per arrivare alla soluzione.

Esercizio Usare la function secanti per risolvere gli esercizi 1 e 2, scegliendo lo stesso valore di x0 e x1 = x0 + 0.5. In caso di non convergenza, modificare opportunamente il valore di x1.

fzero Calcola gli zeri di una funzione reale di variabile reale con la seguente sintassi [x,fval]=fzero(@fun,x0) [x,fval]=fzero(fun,x0) Input fun nome della function o della funzione inline che contiene la funzione f x0 dato iniziale Output x approssimazione dello zero calcolato fval valore di f in x. Si possono ottenere delle informazioni complete sulle iterazioni usando il comando [x,fval]=fzero(@fun,x0,optimset( disp, iter ))

Il metodo di Newton-Raphson per sistemi Consideriamo una funzione a valori vettoriali F : A R n con A R n : f 1 (x 1, x 2,..., x n ) f F (x) = 2 (x 1, x 2,..., x n )......... f n (x 1, x 2,..., x n ) Problema Trovare x = (x 1, x 2,..., x n ) A tale che F (x) = 0.

Linearizzazione Per semplicità consideriamo n = 2 quindi abbiamo il sistema: { f (x, y) = 0 g(x, y) = 0 Supponiamo di essere arrivati a calcolare un approssimazione (x k, y k ) e consideriamo l approssimazione di f e g con i piani tangenti nel punto (x k, y k ): { f (x, y) f (xk, y k ) + f x (x k, y k )(x x k ) + f y (x k, y k )(y y k ) g(x, y) g(x k, y k ) + g x (x k, y k )(x x k ) + g y (x k, y k )(y y k )

Iterazione del metodo di Newton-Raphson La nuova approssimazione si ottiene come x k+1 = x k + δ x y k+1 = y k + δ y dove il vettore δ = (δ x, δ y ) T è la soluzione del sistema J(x k, y k )δ = F (x k, y k ) e J(x k, y k ) = ( fx (x k, y k ) f y (x k, y k ) g x (x k, y k ) g y (x k, y k ) ) F (x k, y k ) = ( f (xk, y k ) g(x k, y k ) )

Algoritmo di Newton-Raphson Newton sist.m 1. Dato x 0. 2. Se il test d arresto è verificato, x 0 è la soluzione cercata; stop. 3. Altrimenti: 3.1 valuta Y = F(x 0 ) e lo Jacobiano A = J(x 0 ); 3.2 risolvi Aδ = Y ; 3.3 aggiorna x 0 = x 0 + δ. 4. Ripeti da 2. Nota bene F è il nome di una function che fornisce il valore di F in un vettore colonna di dimensione n. J è il nome di una function che fornisce il valore dello Jacobiano come array nxn.

Function newtonsys La function newtonsys risolve un sistema non lineare mediante il seguente comando: [zero,fz,iter,xk,fk]=newtonsys (f,fd,x0,toll,niter,alfa) Input f function che contiene la funzione f (vettore colonna); df function che contiene lo Jacobiano J (matrice); x0 punto iniziale per l iterazione (vettore colonna); toll tolleranza desiderata; Niter numero massimo di ietrazioni da eseguire; alfa valore esatto della soluzione se conosciuto. Output zero soluzione cercata; fz valore di f nello zero calcolato; xk array contenente le successive approssimazioni x k ; fk array contenente i valori f (x k ); iter numero di iterazioni necessarie per arrivare alla soluzione.

Esercizi Esercizio Applicare il metodo di Newton-Raphson per trovare gli zeri delle seguenti funzioni: F 1 (x, y) = F 2 (x, y) = ( x + y 3 x 2 + y 2 9 ( x 2 + y 2 2 e x 1 + y 3 2 ) ) radici: (0, 3) (3, 0) x 0 = (1, 5), x 0 = (2, 3) radice: (1, 1) x 0 = (1.5, 2), x 0 = (2, 3)

Problemi di minimo Esercizio Usare la function newtonsys per trovare il minimo delle seguenti funzioni di più variabili: f (x, y) = 10x 2 + y 2 f (x, y) = (x 2) 4 + (x 2) 2 y 2 + (y + 1) 2 f (x, y) = x 4 + (x + y) 2 + (e x 1) 2 f (x, y) = 100(y x 2 ) 2 + (1 x) 2 α = (0, 0) x0=[1;2] α = (2, 1) x0=[1;1] α = (0, 0) x0=[1;1],[-1;3] α = (1, 1) x0=[-1.9;2] Rappresentare le superfici corrispondenti alle funzioni date e le loro curve di livello. Risolvere i precedenti problemi di minimo usando la function di Matlab fminsearch mediante il seguente comando x = fminsearch(fun,x0) essendo fun il nome della function che contiene la funzione e x0 il punto iniziale. Per ulteriori dettagli sull uso di questa function dare il comando help fminsearch.

Esercizio facoltativo Radici terze dell unità Risolvere in campo complesso l equazione z 3 = 1. Tre radici: z 0 = 1, z 1 = 0.5 + i sin(2π/3) e z 3 = 0.5 i sin(2π/3). Posto z = x + iy, trasformare l equazione data in un sistema di due equazioni reali relative alla parte reale e al coefficiente dell immaginario. Trovare le soluzioni mediante il metodo di Newton-Raphson. Considerare nel piano complesso un quadrato di lato L. Suddividere tale quadrato in n 2 quadratini. Utilizzare il centro di ciascun quadratino come x 0 per la risoluzione con il metodo di Newton-Raphson. Colorare il quadratino corrispondente di rosso se la radice trovata è z 0, di blu se la radice trovata è z 1, di verde se la radice trovata è z 2.

Gestione dell output disp(stringa di caratteri) visualizza la stringa di caratteri sullo schermo fprintf(fid, formato, variabili) scrive in un file fid il valore delle variabili con il formato assegnato. Se fid manca l output è inviato sullo schermo. stringa=sprintf(formato, variabili) indirizza su una stringa di testo stringa l output. Per visualizzare poi si usa disp(stringa).

Formato Codice di formato Azione %s formato stringa %d formato senza parte frazionaria %f formato numero decimale %e formato esponenziale %g formato in forma compatta usando %f o %e \n inserisce carattere di ritorno a capo \t inserisce carattere di tabulazione

Esempio Valore %6.3f %6.3e %6d 2 2.000 2.000e+00 2 0.02 0.020 2.000e-02 2.000000e-02 200 200.000 2.000e+02 200 sqrt(2) 1.414 1.414e+00 1.414214e+00 sqrt(2) 0.141 1.414e-01 1.414214e-01

Input Variabile=input (stringa di caratteri) attende un ingresso da tastiera come descritto dalla stringa di caratteri e lo assegna alla Variabile.

Esempio % tabella.m % Realizza una tabella di valori % del seno e del coseno % n=input( Inserisci il numero di valori: ); x=linspace(0,pi,n); c=cos(x); s=sin(x); disp( --------------------------------------------- ) fprintf( k\t x(k)\t cos(x(k))\t sin(x(k))\n ); disp( --------------------------------------------- ) fprintf( %d\t %3.2f\t %6.5f\t %6.5f\n,[1:n;x;c;s]);

Uso del file tabella.m >> tabella >> Inserisci il numero di valori: 5 ------------------------------------------------ k x(k) cos(x(k)) sin(x(k)) ------------------------------------------------ 1 0.00 1.00000 0.00000 2 0.79 0.70711 0.70711 3 1.57 0.00000 1.00000 4 2.36-0.70711 0.70711 5 3.14-1.00000 0.00000 Nell esempio i valori del seno e del coseno sono contenuti in vettori riga.

nargin La function nargin conta i parametri in input di una function. Può servire per rendere più flessibile l uso di una function. Esempio - nargin Nella function newton si può passare come dato anche il valore dello zero esatto per fare l analisi dell errore e della convergenza. Uso la seguente riga di dichiarazione: function [zero,fz,iter,xk,fk]=newton (f,fd,x0,toll,niter,alfa) Nel programma per valutare l ordine di convergenza uso le seguenti istruzioni: if nargin==5 alfa=zero end e poi procedo con il calcolo del rapporto che dà la convergenza.

nargout La function nargout conta i parametri in output di una function. Può servire per rendere più flessibile l uso di una function. Esempio - nargout Non sempre usando la function newton interessa conoscere tutta la successione dei valori ottenuti, più spesso interessano solo il valore dello zero, quello della f ed il numero delle iterazioni. Uso comunque la seguente riga di dichiarazione: function [zero,fz,iter,xk,fk]=newton (f,fd,x0,toll,niter,alfa) Se non interessa tutta la successione inserisco nel programma prima della costruzione dei vettori xk e fk il seguente controllo: if nargout>=4 xk=... fk=... end