a
5
lezione - laboratorio
Corso di Laurea ING. MECCANICA
a.a 2004-2005
Esercizio 1
Data l’equazione:
f x x 4 cos x 4 x sin x 0,
2
a) si analizzino in [-10 10], le proprietà di f ( x )
atte a determinare le soluzioni dell’equazione
data;
b) si enunci, per ogni metodo, almeno un
teorema di convergenza e si calcoli la prima
radice positiva, utilizzando i metodi di: punto
fisso, bisezione e Newton;
c) si riporti, per ciascun metodo, una tabella
riassuntiva dei risultati.
Punto a: proprietà di f ( x )
•
•
f x C
è funzione pari (simmetrica rispetto
all’asse y), infatti f ( x ) = f ( - x )
Si cercano le radici solo in [0, 10],
le altre si ottengono per simmetria.
Grafico di f (x) in [-10,10]
x=linspace(-10,10);
%100 punti
y=(x.^2-4).*cos(x)+4*...
x.*sin(x);
plot(x,y,[-10 10],...
[0 0],'r')
grid
%fplot(‘(x^2-4)*cos(x)+4*...
x*sin(x)’,[-10,10]), grid
hold on
fplot('0*x',[-10,10],’r’)
In 0,10 si ottengono 4 soluzioni :
1 0,2 2 2,4 3 4,6 4 8,10
Punto b: valutazione di f (x) in [0,2]
fplot(‘(x^2-4)*cos(x)+4*x*sin(x)’,[0,2])
hold on
fplot(‘0*x’,[0,2],’r’), grid
hold off
Si può restringere l’intervallo di
lavoro intorno al valore 0.8 ad
[0.76, 0.85];
esempio
Si consideri ora il problema,
posto nella forma consistente:
4 x2
x g x atan
4x
Come è stata ottenuta la forma
consistente?
Dall’equazione:
x
2
4 cos x 4 x sin x 0,
Dividendo entrambi i membri per cos x , e
Portando le altre quantità a secondo membro,
si ottiene:
2
sin x
cos x
tan x
x
4
4x
,
Da cui, applicando la funzione inversa di tan ad
Entrambi i membri, si ottiene la x = g(x) data.
Metodo del punto fisso: convergenza
Hp: g C
1
I , I = I [a,b], ed inoltre:
1. g:I I g ( I ) I
2.
L 0,1 : g( x ) L 1 x I
Th:
a. ! I : g ( )
b. La successione xk 1 g xk
converge a per x0 I .
Punto b: verifica delle ipotesi:Hp.1
4 x2
1
1 [0.76,0.85]; x g( x ) atan
g
C
[0.76, 0.85],
4x
4
g ( x ) 2
0 x 0.76, 0.85 ,
x 4
g( x ) è funzione decrescente in [0.76,0.85],
g(0.76)=0.844502307, g(0.85)=0.767055032
Hp.1:
g 0.76, 0.85 0.76, 0.85
Per potere dire
ciò è fondamentale
la proprietà di
monotonia!!!
Punto b: verifica Hp.2
d g'
4
g ( x ) 2
0 x ,
<0
dx
x 4
g ' è funzione decrescente in [0.76,0.85],
quindi ha il max in x = 0.76.
Hp. 2: g x g (0.76) 0.873820343 1
Sono quindi soddisfatte le Hp. del Teorema
di convergenza. La convergenza è alternata.
Stima della costante asintotica
g(0.85) 0.847009000 g ( 1 ) 0.873820343
C g( 1 )
Il metodo è lento! Si prevedono molte iterate!
Per la convergenza alternata, il criterio di
arresto sull’incremento delle iterate
xk xk 1 toll
dà informazioni sull’errore e quindi è
valido.
Stima di:
Risulta:
xk 1
g 1
1 g 1
g 1
1 g 1
x k 1 x k
x=[0.76 0.85]; % vettore di valutazione
dg=4./(4+x.^2); % vettore derivata prima
%% il massimo del modulo è nella prima
%%componente
fattore=abs(dg(1))/(1-abs(dg(1)))
fattore=6.9252 % il criterio sull’increme.
% dell’iterata sarebbe buono anche in caso
% di convergenza monotona
Punto b: istruzioni punto fisso
x0=0.85;
nmax=30;
toll=1e-12;
g='atan((4-x.^2)./(4*x))';
fun='(x.^2-4).*cos(x)+4*x.*sin(x)';
[xvect,xdiff,fx,it,p,c]=Punto_fisso(x0,nmax,toll,
fun,g);
Superato il numero massimo di iterazioni
Numero di Iterazioni
Radice calcolata
Ordine stimato
Fattore di riduzione
:
:
:
:
30
8.0574762944530720e-001
1.0002306954253075
0.8618208303146728
Punto c: tabella riassuntiva
punto
fisso
iter=0:it;
fprintf('%2d
%22.15f
%15.3e %15.3e\n',[iter;xvect';xdiff';fx'])
0
0.850000000000000
1
0.767055031913984
2
0.838344708482176
3
0.776947841631129
4
0.829734759889720
5
0.784282285048637
6
0.823369936788959
7
0.789718599049830
8
0.818662530354475
... ... ......
29
0.804685482453066
30
0.805747629445307
0.000e+000
8.294e-002
7.129e-002
6.140e-002
5.279e-002
4.545e-002
3.909e-002
3.365e-002
2.894e-002
3.913e-001
3.268e-001
2.886e-001
2.429e-001
2.130e-001
1.803e-001
1.574e-001
1.338e-001
1.163e-001
1.234e-003
1.062e-003
4.936e-003
4.249e-003
xvect ci mostra la conv. alternata del metodo
Stima del numero
di
iterazioni
k
xk 1
g 1
1 g 1
x0 x1 toll
1 g 1 toll
1
k ln
ln g 1
x0 x1
x=0.76;toll=1.e-12;
dg=-4./(x.^2+4);
err1=abs(xvect(1)-xvect(2));
k=log(toll*(1-abs(dg))/abs(err1))/log(abs(dg))
k =
201.7452
Risultati con nmax = k stimato
x0=0.85;
nmax=201;
toll=1e-12;
g='atan((4-x.^2)./(4*x))';
fun='(x.^2-4).*cos(x)+4*x.*sin(x)';
[xvect,xdiff,fx,it,p,c]=Punto_fisso(x0,nmax,toll,
fun,g);
Numero di Iterazioni
Radice calcolata
Ordine stimato
Fattore di riduzione
:
:
:
:
169
8.0525634837580429e-001
1.0001387160064317
0.8638470881065841
Punto b: istruzioni bisezione
a=0.76;b=0.85;
nmax=50;
toll=1e-12;
fun='(x.^2-4).*cos(x)+4*x.*sin(x)';
[xvect,xdiff,fx,it,p,c]=bisezione(a,b,nmax,toll
,fun);
Numero di Iterazioni
Radice calcolata
Ordine stimato
Fattore di riduzione
:
36
: 8.0525634837700633e-001
: 0.9999388520125837
: 0.4992064724546705
Punto c: tabella riassuntiva
metodo bisezione
iter=1:it;
fprintf('%2d
%22.15f
%15.3e %15.3e\n',[iter;xvect';xdiff';fx'])
1
0.805000000000000
2
0.827500000000000
3
0.816250000000000
4
0.810625000000000
5
0.807812500000000
6
0.806406250000000
7
0.805703125000000
8
0.805351562500000
... ... ......
30
0.805256348354742
... ... ......
35
0.805256348378316
36
0.805256348377006
2.250e-002
1.125e-002
5.625e-003
2.812e-003
1.406e-003
7.031e-004
3.516e-004
1.758e-004
2.217e-003
1.935e-001
9.535e-002
4.650e-002
2.212e-002
9.948e-003
3.864e-003
8.235e-004
4.191e-011
1.858e-010
1.310e-012
6.548e-013
1.810e-011
6.773e-012
Metodo di Newton
a
x2 x1
x0=b
f x k
x k 1 x k
f x k
Grafico di f ( x ) in 0.76,0.85
fplot(‘(x^2-4)* cos(x)+4*x*sin(x)’,
[0.76,0.85]),grid
title(‘Andamento di f’)
Teorema 1: convergenza locale
del metodo di Newton
Hp: f C [a , b] , f (a ) f (b) 0,
f ( x ) 0 ,
2
f ( x ) 0 oppure f ( x ) 0 x a , b
Th: I a,b : x0 I
risulta: lim xk 0 .
k
Teorema 2: convergenza globale
del metodo di Newton
Hp: f C [a , b] , f (a ) f (b) 0,
f ( x ) 0 ,
f ( x ) 0 oppure f ( x ) 0 x [a, b],
2
f (a )
ba e
f (a )
f (b)
ba
f (b)
Th: x0 a, b risulta: lim xk 0 .
k
Verifica delle ipotesi di convergenza
f(0.76)=-0.3864 < 0
f(0.85)= 0.3913 > 0
df=6*x.*cos(x)...
-(x.^2-8).*sin(x);
f 0 f crescente
1 0.76,0.85
Proprietà di f ” in 0.76,0.85
ddf=-8*x.*sin(x)-(x.^2-14).*cos(x);
f 0 f convessa
sono verificate le ipotesi per la convergenza locale!
Verifica ulteriori ipotesi per avere
la convergenza globale
b a 0.09
f a
0.0459 0.09
f a
f b
0.0443 0.09
f b
Sono verificate tutte le ipotesi del Teorema 2
x0 a , b , lim xk 0 .
k
Punto b: istruzioni Newton
x0
estremo di Fourier:
f x 0 f x 0 0
x0=0.85;
nmax=30;
toll=1e-12;
fun='(x.^2-4).*cos(x)+4*x.*sin(x)';
dfun='6*x.*cos(x)-(x.^2-8).*sin(x)';
[xvect,xdiff,fx,it,p,c]=newton(x0,nmax,toll,fun,
dfun);
Numero di Iterazioni
Radice calcolata
Ordine stimato
Fattore di riduzione
:
4
: 0.8052563483762233
: 1.99949...
: 0.2649...
Punto c: tabella riassuntiva
metodo di Newton
iter=0:it;
tab=[iter;xvect';xdiff';fx'];
fprintf('%2d %22.15f %15.3e %15.3e\n',tab)
it
0
1
2
3
4
soluzione
0.850000000000000
0.805706691316114
0.805256402305875
0.805256348376224
0.805256348376223
xdiff
0.000e+000
4.429e-002
4.503e-004
5.393e-008
7.772e-016
e k 1 C e k
fx
3.913e-001
3.895e-003
4.664e-007
7.105e-015
4.441e-016
2
xvect ci mostra la convergenza monotona del metodo