• Non ci sono risultati.

Equazioni nonlineari

N/A
N/A
Protected

Academic year: 2021

Condividi "Equazioni nonlineari"

Copied!
20
0
0

Testo completo

(1)

Equazioni nonlineari

´

Angeles Mart´ınez Calomardo e Alvise Sommariva

Universit`a degli Studi di Padova Dipartimento di Matematica Pura e Applicata

(2)

Equazioni non lineari

Risoluzione f (x ) = 0 con x ∈ [a, b] ⊆ R, f ∈ C ([a, b]). Esempio 1:

equazioni polinomiali pN(x ) = 0 con pN polinomio di grado

N. Possibili problemi (nessuna soluzione in R, soluzioni multiple).

Esempio 2:

f (x ) = sin (x ) − x . Soluzione unica poich`e f decrescente (vedi derivata).

(3)

Risoluzione di equazioni non lineari

Convergenza e ordine convergenza

Metodo iterativo: genera successione {xn}n∈N che si desidera

convergere a x∗ tale che f (x∗) = 0.

Ordine di convergenza del metodo iterativo: sia {xk} una

successione convergente ad x∗ e sia ek = xk− x∗ l’errore al

passo k. Se esiste un numerop > 0 e una costante C 6= 0 tale che lim k→∞ |ek+1| |ek|p = C

allora p `e chiamato ordine di convergenza della successione e C `e la costante asintotica di errore.

(4)

Metodo di bisezione

Sia f : [a, b] → R una funzione continua e supponiamo

f (a) · f (b) < 0. Ilmetodo di bisezionegenera una successione di intervalli (ak,bk) con

f (ak) · f (bk) < 0,

[ak, bk] ⊂ [ak−1, bk−1],

|bk − ak| = 1

2|bk−1− ak−1|.

Fissate due tolleranze 1, 2 si arresta l’algoritmo quando

|bk − ak| ≤ 1 oppure |f ((ak + bk)/2)| ≤ 2.

(5)

Metodo di bisezione

Dati a ≤ b con f (a) · f (b) < 0 bisezione calcola c = (a + b)/2. Se f (a) · f (c) > 0 sostituisce c ad a,

viceversa sostituisce c a b.

Si ferma se le condizioni d’arresto sono verificate.

Esempio: studiamo f (x ) = 0 con f (x ) = sin (x ) − x . Osserviamo che se x < 0 allora f (x ) > 0 altrimenti f (x ) ≤ 0.

1 a = −0.30000000, b = 0.40000000 → c = 0.05000000.

2 a = −0.30000000, b = 0.05000000 → c = −0.12500000

3 a = −0.12500000, b = 0.05000000 → c = −0.03750000

4 a = −0.03750000, b = 0.05000000 → c = 0.00625000

(6)

Metodo di bisezione: alcuni fatti

Non ha una velocit`a di convergenza nel senso della definizione sopra definita.

Esempio: se applico bisezione per risolvere sin (x ) − x = 0, in [a, b] = [−3, 2] la successione |en+1/en| alterna valori 1.5 e

1/6 e quindi non converge con ordine 1. Usa solo il segno della funzione.

Se f (a) · f (b) < 0 e f ∈ C ([a, b]) allora converge (sempre!!) a un x∗ tale che f (x∗) = 0.

Fissata una tolleranza , e due punti iniziali a, b tali che f (a) · f (b) < 0 (con f ∈ C ([a, b])) per avere un’errore assoluto |xn− x∗| sulla soluzione xinferiore ad  occorrono al pi´u

n = ceil(log(b − a) − log 

log 2 )

iterazioni del metodo.

(7)

Bisezione in Matlab/Octave: criterio arresto

Sia c un’approssimazione dello zero e si supponga di doverlo determinare a meno di una tolleranza tol.

Il criterio del residuo |f (c)| < tol non `e spesso accettabile: funzione piatta: si pensi a risolvere l’equazione f (x ) = 0 con f (x ) = 10−50· x; il residuo |f (1)| = 10−50ma 1 `e molto

distante da x∗= 0.

funzione ripida: si pensi a risolvere l’equazione

(8)

Bisezione in Matlab/Octave: criterio arresto

Residuo pesato

Siano a < b e c = (a + b)/2. Diciamoresiduo pesato|f (c) · w | con

w := f (b) − f (a) b − a

−1 . Si vede subito che w−1 `e un rapporto incrementale.

funzione piatta: si pensi a risolvere l’equazione f (x ) = 0 con f (x ) = 10−50· x; w `e grande (w = 1050) e quindi

|f (1)| = 10−50 ma |f (1)w | = 1;

funzione ripida: si pensi a risolvere l’equazione f (x ) = 0 con f (x ) = 1050· x; w `e piccolo (w = 10−50) e quindi

|f (10−20)| = 1030 ma |f (10−20)w | = 1030· 10−50= 10−20 Per f pi`u generali, il test del residuo pesato |f (c)w | < tol prova ad adattare situazioni in cui il test del residuo |f (c)| < tol non sia affidabile.

(9)

Metodo di bisezione: implementazione

f u n c t i o n [ c , k , s e m i l u n g h e z z a , r e s i d u o p e s a t o ]= b i s e z i o n e ( a , b , tolintv , tolres , maxit , f )

(10)

Metodo bisezione: implementazione

f o r i n d e x =1: m a x i t

c ( i n d e x ) =(a+b ) / 2 ; fc=f e v a l( f , c ( index ) ) ; s e m i l u n g h e z z a ( i n d e x ) =(b−a ) / 2 ; den =(fb−fa ) ;

(11)

Metodo bisezione: descrizione dell’implementazione

Supposto I0 = [a0, b0] ≡ [a, b] con f (a) · f (b) < 0, calcoliamo

c1 punto medio di I0.

Registrata la semi-ampiezza di I0 nella prima componente del

vettore semilunghezza e il residuo pesato

ρ1:= |f (c1) · (b0− a0)/(f (b0) − f (a0))|

nella prima componente del vettore residuopesato, si testa se i criteri di arresto sono verificati. Se uno solo di questi test viene soddisfatto si esce dalla routine.

Altrimenti si determina l’intervallo I1 = [a1, b1] con a1 = c1 e

b1= b0 oppure b1 = c1 e a1 = ao in modo che sia

(12)

Metodo bisezione: descrizione dell’implementazione

Supposto Ik = [ak, bk] con f (ak) · f (bk) < 0, calcoliamo ck+1

punto medio di Ik.

Registrata la semi-ampiezza di Ik nella k + 1-sima

componente del vettore semiamp e il residuo pesato ρk+1 := |f (ck+1) · (bk − ak)/(f (bk) − f (ak))|

nella k + 1-sima componente del vettore residuopesato, si testa se i criteri di arresto sono verificati. Se uno solo di questi test viene soddisfatto si esce dalla funzione.

Altrimenti si considera l’intervallo Ik+1 = [ak+1, bk+1] con

ak+1 = ck+1 e bk+1 = bk oppure bk+1 = ck+1 e ak+1 = ak in

modo che sia f (ak+1) · f (bk+1) < 0.

(13)

Bisezione in Matlab/Octave: demobisezione.m

Salviamo in demobisezione.m il seguente file

f=i n l i n e (’ x .ˆ2 −2 ’) ; a =1; b =2;

t o l r e s =10ˆ( −15) ; t o l i n t v =10ˆ( −15) ; m a x i t =1000;

[ c , iter , aa , bb ]= b i s e z i o n e ( a , b , tolintv , tolres , maxit , f ) ;

f o r m a t l o n g e ; [ aa bb ]

inline: definisce la funzione da valutare;

bisezione: funzione (function) bisezione (da fare); a,b: intervallo iniziale bisezione (input);

tolres,tolintv,maxit: tolleranze bisezione (input); f: passaggio di funzione come variabile (input);

c: vettore contenente la successione di punti medi generata da bisez. (output);

(14)

Metodo Newton: definizione

Il metodo di Newton richiede che

f sia derivabile con continuit`a su un intervallo [a, b] di R; f(1)(x ) 6= 0 per ogni x ∈ [a, b].

Se ben definito, il metodo di Newton genera la successione {xk}

(15)

Metodo Newton: convergenza locale

Nel caso del metodo di Newton la convergenza non `e in generale garantita.

Esistono degli esempi in cui il metodo produce una successione non convergente. Ci`o nonostante esistono molti teoremi che illustrano quando si `e certi che il metodo converga.

Uno zero x∗ si dicesemplice se f (x∗) = 0 e f(1)(x∗) 6= 0.

Teorema. Sia x∗∈ (a, b) uno zero semplice di f : [a, b] → R. Si supponga inoltre f ∈ C2([a, b]). Allora per x0 ∈ [a, b]

sufficientemente vicino a x∗ le iterazioni del metodo di Newton xk+1= xk − f (xk)/f(1)(xk), k = 0, 1, 2, . . .

(16)

Metodo Newton: alcuni fatti

1 Il metodo di Newton non `e sempre convergente.

2 Se converge, non `e detto che l’ordine di convergenza sia p = 2

(conv. quadratica).

3 Se uno zero x∗ di f non `e semplice allora la convergenza non

`

e quadratica.

(17)

Metodo Newton: implementazione

f u n c t i o n [ x , scarti , ko ]= new ( x0 , tol , kmax , f , df ) x _ o l d=x0 ; ko =0; x =[ x0 ] ; s c a r t i = [ ] ; s t e p=r e a l m a x; k =0;

(18)

Metodo Newton: esempio

Quale esempio con il file demonewton.m usiamo il metodo di Newton per il calcolo di√2, cio`e l’unica radice positiva di f (x ) = x2− 2.

f=i n l i n e (’ x .ˆ2 −2 ’) ; df=i n l i n e (’ 2∗ x ’) ; x0 =1;

t o l s t e p =10ˆ( −15) ; m a x i t =1000;

[ x , scarti , ko ]= newton ( x0 , tolstep , maxit , f , df ) ;

(19)

Metodo Newton: implementazione, esempio

Il comando inlinepermette di definire le funzioni

f (x ) = x2− 2 e f(1)(x ) = 2x , in forma vettoriale (si noti il .).

Il valore da cui parte il metodo di Newton `ex0(vicino a x∗). tolstep definisce la tolleranza del criterio di arresto dello step

|xk+1− xk| ≤ tolstep uscendo al massimo dopomaxit iterazioni.

(20)

Equazioni non lineari

Esercizi

Calcolare con i metodi di bisezione e Newton un’approssimazione dello zero α di

5x = exp (−x ) (1)

x3− 2 = 0 (2)

x log (x ) − 1 = 0 (3)

Verificare che per le approssimazioni x∗ ≈ α fornite sia

effettivamente f (x∗) ≈ 0. Quante iterazioni occorrono perch´e i metodi forniscano tale x∗, supponendo di utilizzare una tolleranza di 10−15?

Riferimenti

Documenti correlati

% toll: tolleranza richiesta per il valore assoluto % della differenza di due iterate successive % nmax: massimo numero di iterazioni permesse %. % Dati

Uno dei metodi pi` u comunemente utilizzati per la risoluzione di equazioni nonlineari ` e quello delle secanti, che nel caso di sistemi di equazioni nonlineari porta (non

Keywords: Metodo di bisezione, stima dell’errore col residuo pesato; metodo di Newton, convergenza globale, velocit`a (ordine) di convergenza, cenno alla convergenza locale,

se un tale c ha residuo pesato sotto la tolleranza toll allora l’intervallo [c, c] contiene il valore desiderato, e quindi dopo aver modificato le variabili aa, bb siamo usciti

Uno dei metodi pi` u comunemente utilizzati per la risoluzione di equazioni nonlineari ` e quello delle secanti, che nel caso di sistemi di equazioni nonlineari porta (non

Il metodo di Newton `e anche noto come metodo di Newton-Raphson, in quanto sviluppato da Newton nell’opera Analysis Aequationes Numero Terminorum Infinitas (1666, scritto nel 1671

In seguito testi- amo il metodo con diverse combinazioni del punto iniziale x0, della tolleranza richi- esta e del numero massimo di iterazioni e si commentiamo i risultati.. Il

sqrt(a) ) si stimi la velocita’ di convergenza del metodo di Newton (5) per il calcolo della radice quadrata di un numero.. Comincioli, Analisi Numerica, metodi modelli