RISOLUZIONE NUMERICA DI SISTEMI NON LINEARI · 2019. 9. 28. · Non richiede il calcolo della...

14
RISOLUZIONE NUMERICA DI SISTEMI NON LINEARI Esempio: si vuole risolvere numericamente ( x 2 1 - x 2 2 =1 x 2 1 + x 2 2 - 2x 1 =3. (1) Definisco: f 1 (x 1 , x 2 )= x 2 1 - x 2 2 - 1 f 2 (x 1 , x 2 )= x 2 1 + x 2 2 - 2x 1 - 3 e F(x) = f 1 (x 1 , x 2 ) f 2 (x 1 , x 2 ) Risolvere (1) vuol dire trovare α =[α 1 2 ] T R 2 : tale che F(α) = 0. ©Paola Gervasio (UniBS) - Calcolo Scientifico 1

Transcript of RISOLUZIONE NUMERICA DI SISTEMI NON LINEARI · 2019. 9. 28. · Non richiede il calcolo della...

Page 1: RISOLUZIONE NUMERICA DI SISTEMI NON LINEARI · 2019. 9. 28. · Non richiede il calcolo della matrice Jacobiana, ma costruisce ad ogni k una matrice B k che approssima in maniera

RISOLUZIONE NUMERICA DI SISTEMI NON LINEARIEsempio:

si vuole risolvere numericamente{x2

1 − x22 = 1

x21 + x2

2 − 2x1 = 3.(1)

Definisco:

f1(x1, x2) = x21 − x2

2 − 1

f2(x1, x2) = x21 + x2

2 − 2x1 − 3e F(x) =

[f1(x1, x2)f2(x1, x2)

]Risolvere (1) vuol dire

trovare α = [α1, α2]T ∈ R2 : tale che F(α) = 0.

©Paola Gervasio (UniBS) - Calcolo Scientifico 1

Page 2: RISOLUZIONE NUMERICA DI SISTEMI NON LINEARI · 2019. 9. 28. · Non richiede il calcolo della matrice Jacobiana, ma costruisce ad ogni k una matrice B k che approssima in maniera

Piu in generale, per risolvere il sistemaf1(x1, x2, . . . , xn) = 0f2(x1, x2, . . . , xn) = 0...fn(x1, x2, . . . , xn) = 0

si definiscono x = [x1, x2, . . . , xn]T e la funzione vettoriale

F : Rn → Rn : F(x) =

f1(x) = f1(x1, x2, . . . , xn)f2(x) = f2(x1, x2, . . . , xn)...fn(x) = fn(x1, x2, . . . , xn)

Si cerca α = [α1, α2, . . . , αn]T ∈ Rn : tale che F(α) = 0.

©Paola Gervasio (UniBS) - Calcolo Scientifico 2

Page 3: RISOLUZIONE NUMERICA DI SISTEMI NON LINEARI · 2019. 9. 28. · Non richiede il calcolo della matrice Jacobiana, ma costruisce ad ogni k una matrice B k che approssima in maniera

METODO DI NEWTON PER SISTEMIRicordo che Newton per equazioni scalari e:

x (0) dato

x (k+1) = x (k) − f (x (k))

f ′(x (k)), k = 0, 1, ....

Per lavorare con funzioni vettoriali F(x) devo sostituire: f ′(x (k)) con lamatrice Jacobiana di F valutata in x(k)

JF (x(k)) =

∂f1∂x1

(x(k)) ∂f1∂x2

(x(k)) ... ∂f1∂xn

(x(k))

∂f2∂x1

(x(k)) ∂f2∂x2

(x(k)) ... ∂f2∂xn

(x(k))

. . . . . .. . . . . .

∂fn∂x1

(x(k)) ∂fn∂x2

(x(k)) ... ∂fn∂xn

(x(k))

e reinterpretare la divisione 1/f ′(x (k)) come calcolo della matrice inversaJ−1F (x(k)).

©Paola Gervasio (UniBS) - Calcolo Scientifico 3

Page 4: RISOLUZIONE NUMERICA DI SISTEMI NON LINEARI · 2019. 9. 28. · Non richiede il calcolo della matrice Jacobiana, ma costruisce ad ogni k una matrice B k che approssima in maniera

Allora il metodo di Newton per equazioni scalarix (0) dato

x (k+1) = x (k) − f (x (k))

f ′(x (k)), k ≥ 0

diventa, per equazioni vettoriali:

{x(0)dato

x(k+1) = x(k) − J−1F (x(k))F(x(k)) k ≥ 0

(2)

Il problema cruciale e: come calcolare il vettorez = x(k+1) − x(k) = −J−1

F (x(k))F(x(k))

©Paola Gervasio (UniBS) - Calcolo Scientifico 4

Page 5: RISOLUZIONE NUMERICA DI SISTEMI NON LINEARI · 2019. 9. 28. · Non richiede il calcolo della matrice Jacobiana, ma costruisce ad ogni k una matrice B k che approssima in maniera

Come calcolare z = −J−1F (x(k))F(x(k))

Ad ogni iterazione k:- valuto JF (x(k)) e la memorizzo in una matrice A- valuto −F(x(k)) e lo memorizzo in un vettore b- calcolo z = A\b

Attenzione: Il comando \ non calcola in maniera esplicita A−1, macalcola z risolvendo il sistema lineare Az = b

Se A e non singolare Az = b⇔ z = A−1b

©Paola Gervasio (UniBS) - Calcolo Scientifico 5

Page 6: RISOLUZIONE NUMERICA DI SISTEMI NON LINEARI · 2019. 9. 28. · Non richiede il calcolo della matrice Jacobiana, ma costruisce ad ogni k una matrice B k che approssima in maniera

Partendo dalla function newton.m scrivere NEWTON per SISTEMI

newtonsys.m

Input: f, Jf, x0, tol, kmax

k=0, err=tol+1

mentre k < kmax e err> tol

valuto b = −F(x(k))valuto A = JF (x(k))risolvo Az = baggiorno la soluzione x(k+1) = x(k) + zcalcolo l’errore err=‖x(k+1) − x(k)‖ = ‖z‖aggiorno k: k=k+1

aggiorno x

Output: zero, f(zero), n iterazioni, [err].

©Paola Gervasio (UniBS) - Calcolo Scientifico 6

Page 7: RISOLUZIONE NUMERICA DI SISTEMI NON LINEARI · 2019. 9. 28. · Non richiede il calcolo della matrice Jacobiana, ma costruisce ad ogni k una matrice B k che approssima in maniera

ESERCIZIO

(essisnl)Calcolare numericamente le 4 radici del sistema non lineare

{x2 − y2 = 1x2 + y2 − 2x = 3

⇔{

x21 − x2

2 = 1x2

1 + x22 − 2x1 = 3

(3)

con il metodo di Newton. Rappresentare graficamente su un solografico le storie di convergenza (ovvero gli errori ‖xk+1 − xk‖ alvariare di k = 0, ..., kmax) e commentare i risultati ottenuti.Scegliere questi tre dati inziali x0=[1;1], x0=[2;-1],

x0=[-2;-2].Svolgimento1. Rappresentazione grafica per la localizzazione delle radici2. Risoluzione numerica

©Paola Gervasio (UniBS) - Calcolo Scientifico 7

Page 8: RISOLUZIONE NUMERICA DI SISTEMI NON LINEARI · 2019. 9. 28. · Non richiede il calcolo della matrice Jacobiana, ma costruisce ad ogni k una matrice B k che approssima in maniera

1. Rappresentazione grafica per la localizzazione delleradici

x = [x1, x2]t , f1(x) = x21 − x2

2 − 1, f2(x) = x21 + x2

2 − 2x1 − 3.Per localizzare le radici del sistema: disegno le superficiz = f1(x) e z = f2(x) e le contour f1(x) = 0 e f2(x) = 0.Esempio per f1:

[x1,x2]= meshgrid ( -3:.1:3);

z_f1=x1.^2-x2.^2 -1;

z_f2=x1.^2+x2.^2 -2*x1 -3;

figure (1); clf

mesh(x1 ,x2 ,z_f1); title(’z=f1(x_1 ,x_2)’)

xlabel(’x_1’); ylabel(’x_2’)

hold on

contour(x1 ,x2 ,z1 ,[0 0],’g’,’linewidth ’ ,2);

Disegnare f2 su una seconda figura e le due contour (in z = 0) suuna terza figura.

©Paola Gervasio (UniBS) - Calcolo Scientifico 8

Page 9: RISOLUZIONE NUMERICA DI SISTEMI NON LINEARI · 2019. 9. 28. · Non richiede il calcolo della matrice Jacobiana, ma costruisce ad ogni k una matrice B k che approssima in maniera

-10

-5

2

0

2

z=f1(x,y)

0

5

0

-2 -2

-5

0

2

5

10

2

z=f2(x,y)

15

0

20

0

-2 -2

linee di livello a quota z=0

-3 -2 -1 0 1 2 3

-3

-2

-1

0

1

2

3

©Paola Gervasio (UniBS) - Calcolo Scientifico 9

Page 10: RISOLUZIONE NUMERICA DI SISTEMI NON LINEARI · 2019. 9. 28. · Non richiede il calcolo della matrice Jacobiana, ma costruisce ad ogni k una matrice B k che approssima in maniera

f e Jf devono essere function handle che dipendono dal vettore x.Prima per disegnare le superifici ho utilizzato gli array x1 e x2.Ora per risolvere il sistema, x(1) e x(2) sono le componenti di ununico array x.

f e un function handle vettore colonna di 2 componenti

f=@(x)[x(1).^2 -x(2).^2 -1; % <−− f_1(x_1,x_2)x(1).^2+x(2).^2 -2*x(1)-3] % <−− f_2(x_1,x_2)

Jf e un function handle matrice 2× 2

Jf=@(x)[2*x(1), -2*x(2); % df_1/dx_1 , df_1/dx_22*x(1)-2, 2*x(2)] % df_2/dx_1 , df_2/dx_2

Definire gli altri input per newtonsys.m e chiamare newtonsys.m

©Paola Gervasio (UniBS) - Calcolo Scientifico 10

Page 11: RISOLUZIONE NUMERICA DI SISTEMI NON LINEARI · 2019. 9. 28. · Non richiede il calcolo della matrice Jacobiana, ma costruisce ad ogni k una matrice B k che approssima in maniera

Storie di convergenza.Con i comandi

plot(Err1 ,’r’); hold on

plot(Err2 ,’b’); plot(Err3 ,’k’)

legend(’x0=[1;1] , alpha =(2 ,1.73)’,...

’x0=[2;-1], alpha =(2 , -1.73)’,...

’x0=[-2;-2], alpha =(-1,0)’)

si ottengono le seguenti storie di convergenza:

0 5 10 15 20 25 300

0.5

1

1.5

2

2.5

x0=[1;1], alpha=(2,1.73)

x0=[2;−1], alpha=(2,−1.73)

x0=[−2;−2], alpha=(−1,0)

La rappresentazione non e buona.©Paola Gervasio (UniBS) - Calcolo Scientifico 11

Page 12: RISOLUZIONE NUMERICA DI SISTEMI NON LINEARI · 2019. 9. 28. · Non richiede il calcolo della matrice Jacobiana, ma costruisce ad ogni k una matrice B k che approssima in maniera

Comando semilogy

Sostituendo il comando plot con semilogy

semilogy(Err1 ,’r’); hold on

semilogy(Err2 ,’b’); semilogy(Err3 ,’k’)

legend(’x0=[1;1] , alpha =(2 ,1.73)’,...

’x0=[2;-1], alpha =(2 , -1.73)’,...

’x0=[-2;-2], alpha =(-1,0)’)

si ottengono le seguenti storie di convergenza:

0 5 10 15 20 25 3010

−10

10−8

10−6

10−4

10−2

100

102

x0=[1;1], alpha=(2,1.73)

x0=[2;−1], alpha=(2,−1.73)

x0=[−2;−2], alpha=(−1,0) La curva nera mostra unaconvergenza lineare. Lealtre due curve conver-genza quadratica. Infattialpha=(-1,0) e radicemultipla, le altre duesono semplici.

©Paola Gervasio (UniBS) - Calcolo Scientifico 12

Page 13: RISOLUZIONE NUMERICA DI SISTEMI NON LINEARI · 2019. 9. 28. · Non richiede il calcolo della matrice Jacobiana, ma costruisce ad ogni k una matrice B k che approssima in maniera

Il metodo di Broyden

E‘ una possibile generalizzazione del metodo delle secanti perrisolvere sistemi di equazioni non lineari.Non richiede il calcolo della matrice Jacobiana, ma costruisce adogni k una matrice Bk che approssima in maniera opportunaJF (x(k)).Richiede una matrice iniziale B0, una scelta comune consiste nelprendere B0 = I (matrice identita).Scaricare broyden.m dal direttorio delle function matlabpaola-gervasio.unibs.it/CS/matlab

La sintassi di chiamata e:[zero,res,niter]=broyden(fun,B0,x0,tol,nmax,pflag)

Risolvere il problema precedente con il metodo di Broyden.

©Paola Gervasio (UniBS) - Calcolo Scientifico 13

Page 14: RISOLUZIONE NUMERICA DI SISTEMI NON LINEARI · 2019. 9. 28. · Non richiede il calcolo della matrice Jacobiana, ma costruisce ad ogni k una matrice B k che approssima in maniera

Altri esempi di sistemi non lineari

{4x2

1 + x22 = 4

x1 + x2 = sin(x1 − x2).

− 1

81 cos(x1) + 19x

22 + 1

3 sin(x3) = x113 sin(x1) + 1

3 cos(x3) = x2

−19 cos(x1) + 1

3x2 + 16 sin(x3) = x3.

{x2

1 + x22 − 2x1 − 2x2 + 1 = 0

x1 + x2 − 2x1x2 = 0

©Paola Gervasio (UniBS) - Calcolo Scientifico 14