03. Equazioni non lineari

pdf:: [[3. Equazioni non lineari - ANEP - Pitolli.pdf]]

L'analisi numerica è la scienza degli errori
Approssimare soluzioni equazione non lineare

3. I metodi numerici

calcolo numerico

Il calcolo numerico è quella branca della matematica che costruisce e analizza i metodi numerici atti a risolvere, con l'aiuto del calcolatore, differenti problemi matematici che nascono da varie discipline.

esempio: serbatoio sferico

Immaginiamo di voler progettare un serbatoio sferico per la raccolta d'acqua da installare in un piccolo villaggio in una regione arida

Il primo passo è la #Errori inerenti.

Si passa quindi alla formulazione di un #Modello matematico. Nel nostro caso consiste nella formula per calcolare il volume del liquido noto il raggio R del serbatoio e l'altezza h dell'acqua al suo interno.

Sia il serbatoio di raggio 3m, a quale altezza bisogna riempirlo per avere a disposizione acqua sufficiente per il fabbisogno minimo di un mese per 20 persone?

Dati

  • Raggio R=3m
  • Periodo T=30giorni
  • Persone N=20

Dati stimati

  • Consumo minimo C=50l a persona
  • Litri d'acqua L=503020l=30.000l
  • Volume dell'acqua V=30m3

Modello matematico

Schermata 2023-03-06 alle 17.55.06.png|300

Sappiamo che il volume del liquido contenuto nel serbatoio può essere calcolato dalla formula:

V(h)=πh23Rh3
dove h è l'altezza in metri dell'acqua nel serbatoio

Soluzione

Voglio trovare l'altezza h per cui V(h)=30. Devo risolvere l'equazione non lineare:

V(h)=πh23Rh3f(h)=πh39πh2+90=0

Schermata 2023-03-06 alle 17.57.50.png

  1. Problema
  2. Schematizzare
  3. Tradurre in linguaggio matematico --> Errori inerenti
  4. Modello matematico
  5. Metodo Numerico --> Errore di troncamento
  6. Algoritmo --> Stabilità
  7. Soluzione numerica --> Errori di arrotondamento (il calcolatore lavora con un numero limitato di cifre significative)

Risoluzione di un problema con i metodi numerici

Descrizione del problema fisico

Si comincia dalla descrizione del problema.
Si registrano le misure fornite, azioni (forze) in gioco. Si fanno le dovute approssimazioni.

Traduzione del problema in linguaggio matematico

Il problema fisico deve essere tradotto in equazioni matematiche. Una volta fatto ciò avremo a disposizione un #Modello matematico.

Modello matematico

Alcuni esempi di modelli matematici nella #Traduzione del problema in linguaggio matematico sono:

Quando si costruisce un modello matematico si compiono alcuni errori detti [[#Errori inerenti]].

Errori inerenti

Gli errori inerenti sono gli errori che si commettono nella costruzione di un [[#Modello matematico]].

Metodo numerico

Una volta definito il modello si passa all'utilizzo di un metodo analitico (se possibile) o un metodo numerico per trovarne la soluzione.
Quando si usano i metodi numerici si devono costruire degli algoritmi compiono #Errori di troncamento

Intervallo di separazione

Il primo passo da seguire è quello di isolare la soluzione del problema che si vuole risolvere.

intervallo di separazione $i$

L'Intervallo di Separazione è un intervallo in cui abbiamo individuato un'unica soluzione del problema.

I=[a,b] t.c. !ξI

dove ξ è soluzione esatta del problema.

Errori di troncamento

Gli errori di troncamento sono gli errori che si compiono nell'applicazione di un #Metodo numerico. Ad esempio, se applico il metodo di bisezione l'errore di troncamento è quello che compio per essermi fermato dopo 5 iterazioni piuttosto che un numero maggiore.

Algoritmo

Applicare un #Metodo numerico significa scrivere un algoritmo che possa essere reiterato un numero finito di volte per arrivare sempre più vicino al risultato reale del problema. Quando si costruisce un algoritmo è bene assicurarsi che sia stabile. È infatti possibile che il risultato esploda dopo un certo numero di reiterazioni.

Soluzione numerica

Dopo aver applicato il #Metodo numerico si arriva finalmente alla soluzione numerica al problema.
È importante a questo punto interpretare il risultato e assicurarsi che la soluzione abbia senso (non possiamo avere ad esempio masse negative).
In questa fase si deve inoltre fare attenzione a un'ulteriore causa di errore: gli #Errori di arrotondamento

Errori di arrotondamento

I calcolatori lavorano con un numero finito di cifre significative. Quando rappresentano un numero con molte cifre (ad esempio π) per i calcoli compieranno degli errori dovuti al fatto che non sono in grado di rappresentare il numero nella sua interezza. Questi tipi di errori si chiamano errori di troncamento.

L'arrotondamento è la prima fonte di errore. I dati di input, che hanno un numero infinito di cifre, vengono trasformati, tramite arrotondamento, in numeri macchina, con un numero finito di cifre.

esempio: errore di arrotondamento

q1(x)=(x1)7q2(x)=x77x6+21x535x4+35x321x2+7x1

I polinomi q1(x) e q2(x) sono algebricamente identici.
Se però calcoliamo i loro valori numericamente nell'intervallo [0.9998,1.0002] usando 10 cifre significative:

x q1(x) q2(x) Valore esatto Errore di arrotondamento
1 0 0 0 0
1.0001 1028 1010 1028 1010

Schermata 2023-03-06 alle 20.27.32.png

Cancellazione numerica

Un errore che si verifica quando calcoliamo la differenza di due numeri molto vicini.

Algoritmo

algoritmo

Successione di istruzioni, finita e non ambigua, che consente di ottenere risultati numerici a partire dai dati di input.

Gli algoritmi vengono poi implementati in un linguaggio di programmazione.

Stabilità di un algoritmo

Anche quando l'errore di arrotondamento è piccolo, la sua propagazione può avere effetti disastrosi. Essi possono infatti venire amplificati, rendendo in questo caso la soluzione del tutto inaffidabile. In questo caso si dice che l'algoritmo è instabile.

Metodi numerici per la soluzione di problemi non lineari

Libro: 3.4

Metodo di bisezione

Il metodo di Bisezione

3.1 Il metodo di Bisezione


Il metodo di bisezione è un metodo numerico che consiste nel dimezzare di volta in volta l'Intervallo di separazione e usare il punto medio di tale intervallo come approssimazione della soluzione ξ.
Consente di costruire una successione {xk} di approssimazioni di ξ, ottenute assumendo xk come punto medio di un intervallo [ak1,bk1] con kN+.

☑️ Ipotesi

ipotesi
  1. I=[a,b] Intervallo di separazione
  2. f(x)C0[a,b]
  3. f(a)f(b)<0

Algoritmo

GraficoMetodoBisezione 1.png

Individuato unIntervallo di separazione [a0,b0] ne calcolo il punto medio che chiamerò x1:
x1=b0+a02
Ora controllo in quale tra gli intervalli [a0,x1] e [x1,b0] appartiene la soluzione ξ, verificando che il prodotto f(ak1)f(xk) oppure il prodotto f(bk1)f(xk) sia negativo.

Una volta individuato l'intervallo, ripeto il procedimento usando quello come nuovo intervallo di separazione. Supponiamo ad esempio che la soluzione cada nell'intervallo [a0,x1], questo sarà proprio il nuovo intervallo di separazione [a1,b1]=[a0,x1].

Chiamo x2 il punto medio tra a1 e b1:
x2=a1+b12
Continuando a ripetere questo processo, ammesso che il metodo converga, xk sarà man mano sempre più vicino alla soluzione ξ.

  • Input: a=a0,b=b0 per k=1,2,...
    • xk=bk1ak12
  • se:
    • f(ak1)f(xk)<0[ak,bk]=[ak1,xk]
    • f(bk1)f(xk)<0[ak,bk]=[xk,bk1]

Errori

Errore di troncamento

Nell'applicazione del metodo di bisezione, compiamo un Errore di troncamento dovuto quindi al numero di iterazioni che compiamo

Convergenza

Calcolo l'errore ek tenendo presente che esso dovrà per forza essere minore della metà dell'ampiezza dell'intervallo.
A sua volta l'ampiezza dell'intervallo [ak1,bk1] sarà la metà dell'intervallo della iterazione predente [ak2,bk2] e così via

$
\begin{align}
|e_{k}| = |\xi - x_{k}| \le & \frac{b_{k-1} - a_{k-1}}{2} \

&\le \frac{1}{2} \frac{b_{k-2}-a_{k-2}}{2} \

\vdots \

&\le \frac{1}{2^{k}} (b_{0}- a_{0})

\end{align}

\Rightarrow |e_{k}| = |\xi - x_{k}| \le \frac{1}{2^{k}} (b_{0} - a_{0})
Converge?
\lim_{k \to \infty} |e_{k}| = \lim_{k \to \infty} \left|\frac{1}{2^{k}}(b_{0}-a_{0}) \right| = 0
$

Ordine di convergenza

ordine di convergenza

Il metodo di bisezione ha ordine di convergenza pari a 1:
p=1


Dimostrazione:

Ricordo che:
|ek+1|=bkak2=12bk1ak12=bk1ak122
e che:
|ek|=bk1ak12
per cui
|ek+1||ek|pbk1ak1222bk1ak1=12
con p=1.

Stima iterazioni necessarie

Per ottenere l'approssimazione della soluzione con una tolleranza scelta ε sono necessarie almeno un certo numero k di iterazioni. Questo numero può essere stimato a partire dalla relazione:

|ek|=12k(ba)ε

Risolvendo per k otteniamo infatti:

$
\begin

2^{k} &\ge \frac{b-a}{\varepsilon} \

log_{2}\left( 2^{k} \right) &\ge log_{2}\left( \frac{b-a}{\varepsilon} \right) \

k &\ge log_{2}\left( \frac{b-a}{\varepsilon} \right)

\end{align}
$
Tenendo presente che k deve per definizione essere un numero intero positivo.

Criterio di arresto

Criterio di arresto a posteriori

Posso interrompere l'algoritmo quando l'errore al passo k è minore di una tolleranza scelta ε.
|ek|ε

Implementazione in Matlab

function [soluzioneApprox,erroreStimato, iterazioniNecessarie] = MetodoBisezioneNonLineari(estremoInferiore, estremoSuperiore, funzione, tolleranza, numeroMaxIterazioni)

% Questa funzione serve ad applicare il metodo di bisezione a una funzione
% assegnata per ricavarne la soluzione approssimata.
% Input:
% estermoInferiore, estremoSuperiore: Estremi dell'intervallo di separazione
% funzione: la funzione, definita come anonymous function, a cui
% applicare il metodo
% tolleranza: La tolleranza con la quale si vuole trovare la soluzione
% numeroMaxIterazioni: Il numero max di iterazioni che si vogliono
% provare prima di interrompere il calcolo. (Se non specificato è
% inizializzato a 100

% ------------

% Outpu:
% soluzioneApprox: la soluzione approssimata
% erroreStimato: la media degli errori calcolati come b-a e come f(xn)
% iterazioniNecessarie: Il numero di iterazioni necessarie alla stima
% dell'errore
% Cerco la radice di una funzione f nell'intervallo [a,b] con il metodo di
% bisezione
% Suppongo di aver già individuato gli estremi degli intervalli di
% separazione
% Sfrutteremo un criterio di arresto basato sulla tolleranza:
% f = Funzione della quale vogliamo cercare la radice
% a = Estremo inferiore in cui è stata isolata la radice
% b = Estremo superiore in cui è stata isolata la radice
% toll = Tolleranza (\tollilon)
% numeroMaxIterazioni = Massimo numero di iterazioni

f = funzione;

% So che nell'intervallo definito sotto sicuremante ci sarà una soluzione
a = estremoInferiore;
b = estremoSuperiore;

% Definisco la tolleranza
toll = tolleranza;
maxIter = 100;
maxIter = numeroMaxIterazioni;

% Vogliamo calcolare:
% xn: Approx della radice
% err1 = |x(n) - x(n-1)|
% err2 = f(xn)
% iter = Numero di iterazioni

format long

% Inizializzo i parametri necessari
iter = 0; err1 = b-a; err2 = toll+1; x0 = a;

% Verifico che la radice esista
if f(a)*f(b) > 0
	error('Non ci sono soluzioni nellintervallo [a,b]') % Con questo comando blocco l'esecuzione dello script
elseif f(a)*f(b) == 0
	if f(a) == 0
		xn = a;
	elseif f(b) == 0
		xn = b;
	end
	return % Return perché non voglio andare avanti se queste condizioni del secondo if sono rispettate
end

% Calcolo successione
while (err1 > toll) && iter < maxIter
	xn = (a+b)/2;
	if f(a)*f(xn) < 0
		b = xn;
	elseif f(xn)*f(b) < 0
		a = xn;
end

iter = iter + 1;
err1 = abs(xn-x0);
err2 = abs(f(xn));
x0 = xn;
end

soluzioneApprox = xn;
erroreStimato = abs((err1 + err2)/2);
iterazioniNecessarie = iter;

end

Metodi iterativi a un punto

Si parla anche di metodi delle approssimazioni successive o dell'iterazione funzionale.

Un metodo di risoluzione consiste nel riformulare il problema dato riscrivendolo in una forma che sia più semplice da risolvere.
L'equazione

f(x)=0

può infatti essere riscritta come

x=φ(x)

in un certo intervallo di separazione I.
Se ξ è una radice esatta di f per cui f(ξ)=0, si ha che

ξ=f(ξ)

Equazione di punto unito

equazione di punto unito

Applicando questo metodo, il valore x per cui
x=φ(x)

è detto punto unito e l'equazione è detta equazione di punto unito.

Geometricamente, trovare il punto unito di φ significa trovare l'intersezione tra le due rette:

y=xy=φ(x)
es - equazioni di punto unito

L'equazione
f(x)=x2x2=0
può essere riscritta in varie forme, tra cui:

$
\begin

x = \varphi_{1}(x) = \sqrt{x+2} & x = \varphi_{2}(x) = - \sqrt{x+2} \
x = \varphi_{3}(x) = x^{2}-2 & x = \varphi_{4}(x) = 1+ \frac{2}

\end{matrix}
$

A questo punto si può scrivere la soluzione approssimata tramite un metodo iterativo a un punto:

xn=φ(xn1)

e l'obbiettivo è cercare la xn tale che:

xn=φ(xn)

ossia proprio il punto unito.

Metodo Approssimazioni successive

Per approssimare un punto unito si può utilizzare il metodo delle approssimazioni successive:

{x0Approssimazione inizialexk=φ(xk1)k=1,2,...

La funzione φ è detta di iterazione.

Convergenza per punto unito

teorema

Definito l'errore di troncamento ek, se il metodo converge, ossia

limk|ek|=0

che equivale a dire

limk|ξxk|=0limkxk=ξ

ALLORA

limkxk=ξ
e
ξ=φ(ξ)
dove ξ è proprio il punto unito.

CN di convergenza per punto unito
teo - convergenza per punto unito

Se la successione
{x0Approssimazione inizialexk=φ(xk1)k=1,2,...
è Convergente a un valore τ e φ è continua in τ
allora τ è punto unito di φ, cioè τ=φ(τ).

Criterio di arresto per punto unito

teo - criterio di arresto per punto unito

Se il metodo è convergente, una buona approssimazione di ξ è data dal valore di xk per il quale
|xkxk1|ε

Alcuni metodi

I metodi seguenti sono esempi di metodi alle approssimazioni successive:

Metodo di Newton

Metodo di Newton

3.2 Il metodo delle Tangenti


Il metodo delle tangenti, detto anche metodo di Newton sfrutta il Polinomio di Taylor per approssimare il valore delle funzioni. In questo caso è necessario scegliere un'approssimazione iniziale x0.

Si tratta di fatto di un metodo di linearizzazione. Infatti, come vedremo, interromperemo il Polinomio di Taylor al primo ordine, confondendo quindi il valore della funzione con il valore della tangente.

Metodo_delle_tangenti.png

☑️ Ipotesi

Per l'applicabilità del metodo di newton, la funzione deve rispettare le seguenti ipotesi:

ipotesi
  1. I è Intervallo di separazione
  2. f(x)C1(I=[a,b])
  3. f(x)0k

Algoritmo

Scelgo un'approssimazione iniziale x0.

Approssimo la funzione f(x) con un polinomio di Taylor al secondo ordine:
f(x)=f(x0)+f(x0)(xx0)+12f(τ)(xx0)2 con τ[x0,x]
Se cerco la radice di f(x) impongo la funzione approssimata uguale a 0:
f(x)=f(x0)+f(x0)(xx0)=!0
da cui
x1=x0f(x0)f(x0)
motivo per cui dobbiamo imporre anche f(xk)0 tra le #☑️ Ipotesi.

Dopodiché approssimo nuovamente la funzione con Taylor usando stavolta x1 al posto di x0:
f(x)=f(x1)+f(x1)(xx1)=!0
da cui
x2=x1f(x1)f(x1)
Continuo ad iterare questo procedimento. Avrò così, in definitiva:
xk=xk1f(xk1)f(xk1)
Il metodo convergerà per alcuni valori di x0JI (Ossia scegliendo x0 abbastanza vicino a ξ).

algoritmo

{x0Punto inizialexk=xk1f(xk1)f(xk1)

Convergenza

condizione necessaria di convergenza

Sia I=[a,b] un intervallo di separazione di uno zero di f;

Sia:

  • fC2[a,b]
  • f(x)0
  • x[a,b]

Allora esiste un intorno J di ξ, con JI, tale che, se x0J, la successione risulta convergente a ξ.

Inoltre, se fC3[a,b] l'ordine di convergenza è 2.


convergenza con estremo di fourier

Sia:

  • fC2[a,b]
  • f(a)f(b)<0
  • f(x)0

per x[a,b], sia x0 l'[[#Estremo di Fourier]] di [a,b], allora:

  1. Esiste un unico ξ(a,b), tale che f(ξ)=0
  2. La successione {φ(xn)} è monotona e converge a ξ
  3. Se fC3[a,b], la convergenza è quadratica

Estremo di Fourier

Se f(x)0xI si può dimostrare che si può scegliere uno dei due estremi di I come approssimazione iniziale x0.

Supponiamo di avere una funzione monotona, senza massimi o minimi locali, a concavità fissa.
L'estremo di Fourier di un intervallo è quello dei due tale che il prodotto f(a)f(a)>0 dove a è l'estremo.

Ordine di convergenza

ordine di convergenza per tangenti

p=2

Per calcolare l'ordine di convergenza devo calcolare il limite:
limk|ek+1||ek|p=C>0p1
Calcolo |ek+1|:

|ek+1|=ξxk+1=(ξf(ξ)f(ξ))xk+1
essendo f(ξ)f(ξ)=0 perché f(ξ)=0.

$
\begin{align}
|e_{k+1}| = \xi - x_{k+1} &= \left( \xi - \frac{f(\xi)}{f'(\xi)} \right) - x_{k+1} = \

&= \left( \xi - \frac{f(\xi)}{f'(\xi)} \right) - \left( x_{k} - \frac{f(x_{k})}{f'(x_{k})} \right) = \

&= (\xi - x_{k}) - \left( \frac{f(\xi)}{f'(\xi)} - \frac{f(x_{k})}{f'(x_{k})} \right) = \

\end{align}
$
Sviluppando f(xk) e f(xk) in serie di Taylor e ricordando ξxk=ek ottengo:

$
\begin

|e_{k+1}| &= \left|
e_{k} - \left( \frac{f(\xi)}{f'(\xi)} - \frac{f(\xi) + f'(\xi)(-e_{k}) + \frac{1}{2} f''(\xi)e_{k}^{2} }{f'(\xi)} \right)
\right| \

&= \frac{1}{2} \left| \frac{f''(\xi)}{f'(\xi)} \right| |e_{k}^{2}|
\end{align}
$

Si ha quindi che

|ek+1||ek|pp=212|f(ξ)f(ξ)|
quindi

limk|ek+1||ek|2=12|f(ξ)f(ξ)|
Allora l'ordine di convergenza del metodo delle tangenti è p=2.

Implementazione in Matlab

function xk = tangenti(x0,f, df, N_max)

% Input:
%   x0: approx iniziale
%   f, df: funzione e derivata
%   N_max: numero di iterazioni
% 
% Output:
%   xk: approx dello zero

for i = 1:N_max
    xk = x0 - f(x0) / df(x0);
    errk = abs(xk - x0);
    x0 = xk;
    fprintf('k = %3i x_k = %14.12f err=%9.3e f=%18.12f f''=%18.12f \n', i, xk, errk, f(x0), df(x0));
end

end

Metodo di Newton in Rn

Al link 03.4 Metodo di Newton in n dimensioni

Se in R possiamo riscrivere una funzione sviluppandola in un Polinomio di Taylor, lo stesso possiamo fare con Rn.

Sia F(X):RnRn, posso scrivere
F(X)=F(X(k))+JF(X(k))(XX(k))+...

dove
$
\boldsymbol J_F(\boldsymbol X) =
\begin

\frac{\partial f_1}{\partial x_1} & \frac{\partial f_1}{\partial x_2} & \dots &\frac{\partial f_1}{\partial x_n} \

\frac{\partial f_2}{\partial x_1} & \frac{\partial f_2}{\partial x_2} & \dots &\frac{\partial f_2}{\partial x_n} \

\vdots & \vdots & \ddots & \vdots \

\frac{\partial f_n}{\partial x_1} & \frac{\partial f_n}{\partial x_2} & \dots &\frac{\partial f_n}{\partial x_n} \

\end{bmatrix}
$

Metodo delle secanti

Il metodo delle Secanti

3.3 Metodo delle Secanti


Il metodo delle Secanti consiste nell'approssimare localmente la funzione con la retta secante passante per i due estremi dell'intervallo I.

Schermata 2024-10-23 alle 13.46.49.png

☑️ Ipotesi

ipotesi
  1. f(x)C(I=[a,b])
  2. f(xk)0k
  3. f(x)0xI allora il metodo converge per x0,x1JI
  4. f(x)0xI allora il metodo converge

Algoritmo

Scelgo 2 approssimazioni iniziali: x0,x1
Poi, per k=2,3,... calcolo la soluzione approssimata come radice della retta secante passante per x0 e x1:
xk=xk1f(xk1)xk1xk2f(xk1)f(xk2)

algoritmo

{x0,x1Approssimazioni inizialixk=xk1f(xk1)xk1xk2f(xk1)f(xk2)

Convergenza

prop - cs di convergenza per secanti

Se:

  • I=[a,b] intervallo di separazione, simmetrico intorno la radice ξ
  • f,f,fC2[a,b]
  • f(x)0 per x[a,b]

Allora esiste un intorno JI di ξ tale che, se x0,x1J, la successione delle approssimazioni {xk} converge a ξ con convergenza superlineare, cioè 1<p<2.

In particolare, se f(x)0 in I, l'[[#Ordine di convergenza]] è
p=1+52

Ordine di convergenza

L'ordine di convergenza del metodo delle secanti è
p=1+521.62
Essendo maggiore di 1 ma minore di 2 si dice che ha ordine di convergenza sopralineare.

Implementazione in Matlab

function [xk,errk, iter] = secanti_tol(x0,x1, f, N_max, tol)
% Input: (x0, x1, f, N_max, tol)
% x0, x1: Approx iniziali
%   f: Funzione di cui trovare gli zeri
%   N_max: Numero di iterazioni
%   tol: Tolleranza richiesta
%
% Output:
%   xk: approx dello zero
%   errk: Errore alla k-esima iterata
%   iter: Numero di iterazioni effettuate

errk  = tol + 1;
iter = 0;

while (iter < N_max) && (errk > tol)
    xk = x1 - f(x1)* (x1-x0) / (f(x1) - f(x0));
    errk = abs(xk-x1);
    x0 = x1;
    x1 = xk;
    iter = iter + 1;
end

fprintf('xk = %f', xk)
end


Sistemi di equazioni NON lineari

I #Metodi iterativi a un punto permettono di risolvere anche sistemi di equazioni non lineari n×n del tipo:

{f1(x1,x2,...,xn)=0f2(x1,x2,...,xn)=0fn(x1,x2,...,xn)=0

anche se le cose si complicano non poco.

È necessario per prima cosa riscrivere il sistema in forma matriciale.
Si ha infatti che il sistema è equivalente a:

F(X)=0

dove

F:RnRn

Esplicitando si ha che:

F(X)=[f1(x1,x2,...,xn)f2(x1,x2,...,xn)f3(x1,x2,...,xn)]=[f1(X)f2(X)f3(X)]

con XRn:

X=[x1x2xn]

Sia X la soluzione esatta:

X=[ξ1ξ2ξn]

tale che F(X)=0.

Possiamo applicare il metodo del punto unito trasformando il sistema F(X)=0:

F(X)=0X=Φ(x)

con

Φ:RnRn dove Φ(X)=[φ1(X)φ2(X)φn(X)]

Si può in questo modo applicare un metodo iterativo per cui:

{X(0)RnX(k+1)=Φ(X(k))k=0,1

Dove X(0) è l'approssimazione iniziale data.

Errore di troncamento in Rn

errore di troncamento in $\mathbb{r}^{n}$

E(k)=XX(k)Rn

Convergenza in Rn

convergenza in $\mathbb{r}^{n}$

Si dice che il metodo converge se

limkdist(X,X(k))=0

Distanza Euclidea

distanza euclidea ($\text{dist}(v,w)$)

Dati due vettori: V=[v1vn] e W=[w1wn] la distanza euclidea tra V e W è:
dist(V,W)=i=1n(viwi)2=||VW||Eu

Metodi per sistemi non lineari

Metodo di Newton in n dimensioni

Metodo di Newton in n dimensioni

Metodo di Newton in Rn

Se in R possiamo riscrivere una funzione sviluppandola in un Polinomio di Taylor, lo stesso possiamo fare con Rn.

Sia F(X):RnRn, posso scrivere
F(X)=F(X(k))+JF(X(k))(XX(k))+...

dove al posto della derivata, uso la matrice Jacobiana:
JF(X)=[f1x1f1x2f1xnf2x1f2x2f2xnfnx1fnx2fnxn]

Come metodo iterativo diventa l'equazione. La nuova approssimazione si trova risolvendo questo sistema

F(X(k))+JF(X(k))(X(k+1)X(k))=Y(k+1)=0
Ho ottenuto un problema lineare della forma:

JF(X(k))Y(k+1)=F(X(k))

Posso quindi scrivere la soluzione approssimata X(k+1) come:
X(k+1)=X(k)+Y(k+1)
Se JF(X(k)) è invertibile, allora
X(k+1)=X(k)(JF(X(k)))1F(X(k))=ΦN(X(k))
Mi fermo quando
dist(X(k+1),X(k))ε

Risoluzione esercizi