Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Calcolo Numerico
a.a. 2014-2015
La scatola dei colori
Avevo una scatola di colori
Ogni colore splendeva di gioia
Avevo una scatola di colori
Caldi e delicati e vivi.
Non avevo il rosso per le ferite e per il sangue,
Non avevo il nero per l’orfano,
Non avevo il bianco per il viso dei morti,
Non avevo il giallo per le sabbie infuocate,
Avevo l’arancione per la gioia e per la vita,
Avevo il verde per germogli e fioriture,
Avevo il blu per limpidi cieli azzurri,
Avevo il rosa per i sogni e per il riposo.
Mi sedetti e dipinsi
La PACE Tali Shurek
Esercizio 1: prima prova parziale 19-05-2006
1) Sia data l’equazione f ( x ) 1 x e 2 x 1 0.
Con considerazioni teoriche ed utilizzando Matlab, si esegua la
separazione grafica delle soluzioni.
2) Si considerino le radici 1 , 2 e, dopo avere enunciato
il teorema di convergenza (anche solo locale) del metodo di
Newton, si verifichi se, per entrambe, le ipotesi sono
soddisfatte;
3) si inneschi il metodo suddetto con x0 = - 0.9 per la prima
radice e con x0 = 1 per la seconda; si eseguano 6 iterazioni
del metodo, specificando se l’andamento delle approssimazioni è
quello previsto dal metodo di Newton. Si motivi la risposta e si
dica quante cifre si possono considerare corrette nell’ultima
approssimazione nei due casi. 2 x k 1
4) Si dica se il metodo di punto fisso k 1x 1 e , k 0,1,...
è convergente alla radice maggiore nell’intervallo [0, 1.5].
Quesito1-Considerazioni teoriche
La funzione esiste su tutto l’asse reale, e risulta:
lim f x ;
x
ln 2 1
Inoltre: f x 1 2e 2 x 1 0 x 0.1534
2
Dal segno di f’ si deduce che il punto trovato è di massimo
ed in esso la funzione vale: ln 2 1
f 0.6534
2
0.5 4
0 2
-0.5 0
-1 -2
-1 -0.5 0 0.5 1 1.5 -1 -0.5 0 0.5 1 1.5
derivata seconda
0
-5
-10
-15
-1 -0.5 0 0.5 1 1.5
Grafico alternativo per la separazione grafica
intersezioni tra f1 e f2
3
2.5
1.5
0.5
-0.5
-1 -0.5 0 0.5 1 1.5
Teorema di convergenza locale
metodo di Newton
Hp: f C [a , b] , f (a ) f (b ) 0,
2
f ( x ) 0 , x a , b
Th: I a, b : x 0 I
risulta : lim x k 0.
k
1 [1, 0.7] I1
f(-1)= -0.7182818 < 0
f(-0.7)= 0.2081753 > 0
f(0.5)=0.3646647 > 0
f(1.5)= -0.5183156 < 0
2 [0.5, 1.5] I 2
2 x 1
f ' 1 2e
Dai grafici si vede che
2 x 1
f ' ' 4e 0 x
f '( x) 0 x I 1 ,
Sono verificate le ipotesi di
convergenza locale nei due
f '( x) 0 x I 2
intervalli e si può scegliere come f '' 0 x
innesco un estremo di Fourier
Risoluzione col metodo di Newton:
istruzioni
% f(-0.9)*f”(-0.9)>0; f(1)*f”(1)>0;
x0=[-0.9 1];nmax=6;toll=1e-14;
fun=f;dfun=df; % f e df sono stringhe definite
% in percedenza, rappresentative di f e f’
% N.B. Nel ciclo che segue si costruiscono 2
% tabelle distinte una per ogni valore di i.
% Non si deve quindi assegnare tab =[] prima
% del ciclo per aggiornarla poi all’interno.
for i=1:2
[xvect,xdiff,fx,it,p,c]=Newton(x0(i),nmax,toll,
fun,dfun);
tab=[[0:it]' xvect xdiff fx];
fprintf('iter \t\t\t x_app \t\t x_diff
abs(f(x)) \n')
fprintf(' %3d %24.15e %12.2e %12.2e\n',tab')
end
Metodo di Newton: prima radice
superato numero massimo di iterazioni
Numero di Iterazioni : 6
Radice calcolata : -7.9153693801834546e-001
Ordine stimato : 2.0006388325961839
Fattore di riduzione : 1.3949362770259011
Numero di Iterazioni : 4
Radice calcolata : 9.4435167809671094e-001
Ordine stimato : 1.9853951938794778
Fattore di riduzione : 0.1114667005894942
g ( x ) 1 e 2 x 1 ; [ a , b ] [ 0, 1.5 ]
2 x 1
g ' ( x ) 2e
Punto fisso: grafici di g e di g’ in [0,1.5]
subplot(1,2,1),fplot('1-exp(-2*x-1)',[0 1.5]);
grid on; title('g')
subplot(1,2,2),fplot('2*exp(-2*x-1)',[0 1.5]);
grid on; title('derivata di g')
g' 0
g crescente.
I valori sono
compresi in
[0.6,1] che è
contenuto in
[0,0.5]
Verifica delle ipotesi di convergenza
Per la sua definizione g verifica l’ipotesi 1), dal grafico si
verifica facilmente l’ ipotesi 2), quindi:
1) g C [0,1.5];
2) 0 g '( x ) 0.8 1 x [0,1.5]
Numero di Iterazioni : 16
Radice calcolata : 9.4435167809671050e-001
Ordine stimato : 0.9967456179973452
Fattore di riduzione : 0.1012188117871999
Tabella completa del metodo del punto fisso
iter x_app x_diff abs(f(x))
0 5.500000000000000e-001 0.00e+000 3.28e-001
1 8.775435717470181e-001 3.28e-001 5.89e-002
2 9.363965232019383e-001 5.89e-002 7.06e-003
3 9.434592152016668e-001 7.06e-003 7.93e-004
4 9.442522612723385e-001 7.93e-004 8.84e-005
5 9.443406122377243e-001 8.84e-005 9.83e-006
6 9.443504464901161e-001 9.83e-006 1.09e-006
7 9.443515410228616e-001 1.09e-006 1.22e-007
8 9.443516628408494e-001 1.22e-007 1.36e-008
9 9.443516763987847e-001 1.36e-008 1.51e-009
10 9.443516779077374e-001 1.51e-009 1.68e-010
11 9.443516780756788e-001 1.68e-010 1.87e-011
12 9.443516780943702e-001 1.87e-011 2.08e-012
13 9.443516780964504e-001 2.08e-012 2.32e-013
14 9.443516780966819e-001 2.31e-013 2.58e-014
15 9.443516780967076e-001 2.58e-014 2.91e-015
16 9.443516780967105e-001 2.89e-015 3.47e-016
% 0.55 è un’approssimazione per difetto e la successione
% delle approssimazioni è monotona crescente!
Esercizio 2 (Esame 21/02/2005)
2
Data la funzione: f x ln x x ,
3
f xi
2 f xi
2 2
f1 x ln x x 2
3 3 f x C ,
f2 x x x 3
! : f 0.
deduciamo che la funzione è
monotona quindi:
Separazione grafica
Si può allora valutare f in alcuni punti per determinare l’intervallo
in cui essa cambia segno, intervallo in cui cade l’unico zero della
funzione. In (-2/3,0] la funzione è <0, quindi la radice è situata
nel semiasse positivo.
Risulta: f(0)=-0.4055; f(1)= 1.5108.
Quindi la soluzione cade in [0,1]
clear all;clc
I=[-0.5 3];
fplot(@(x)[log(x+2/3) , -x],I);
grid
title('intersezione tra f1,f2')
legend('log(x+2/3)', '-x')
-2
-2.5
-3
-0.5 0 0.5 1 1.5 2 2.5 3
Grafico di f(x) in [0,0.5]
fplot(@(x)[log(x+2/3)+x, 0*x],[0,0.5]),grid
title('grafico della funzione in [0,0.5]')
Metodo di Newton: Teorema di
convergenza globale
Hp: f C 2 [a , b] , f ( a ) f ( b ) 0,
f ( x ) 0 ,
f ( x ) 0 oppure f ( x ) 0 x [ a , b],
f (a ) f (b )
ba e ba
f ( a ) f ( b )
df=1./(x+2/3)+1;
ddf=-1./(x+2/3).^2;
f 0 f concava
Verifica delle ultime ipotesi per la
convergenza globale
b a 0.5
f a f b
0.1622 0.5; 0.3522 0.5
f a f b
Sono verificate tutte le ipotesi del
Teorema di convergenza globale!
x0 a , b , lim xk 0 .
k
Punti c e d: istruzioni metodo di Newton
x0=input('x0= '); %x0=0.1
nmax=input('nmax= '); %nmax=15
toll=1e-12;
fun= 'log(x+2/3)+x';
dfun='1./(x+2/3)+1';
[xvect,xdiff,fx,it,p,c]=Newton(x0,nmax,toll,fun,d
fun)
%x0=0.1; %nmax=15
Numero di Iterazioni : 4
Radice calcolata : 1.7379908022086071e-001
Ordine stimato : 2.0003943955077368
Fattore di riduzione : 0.3250125848306869
Risultati con punto di innesco x0=0.5
(non estremo di Fourier)
%x0=0.5; %nmax=15
Numero di Iterazioni : 5
Radice calcolata : 1.7379908022086071e-001
Ordine stimato : 2.0087 ...
Fattore di riduzione : 0.34805...
Punto e: tabella riassuntiva metodo di Newton
iter=0:it;
ddfun='-1./ (x+2/3).^2'; x=xvect;
rapp=abs(eval(ddfun)./(2*eval(dfun)));
tab=[iter' xvect fx rapp];
fprintf('it \t\t\t soluzione \t\t fx\t\t rapp\n')
fprintf('%1d %15.12f %18.8e %18.8e\n',tab')
it soluzione fx rapp
0 0.100000000000 1.65703166e-001 3.69155045e-001
1 0.171908920978 4.14163454e-003 3.24299515e-001
2 0.173797923333 2.53337208e-006 3.23238526e-001
3 0.173799080220 9.47436574e-013 3.23237878e-001
4 0.173799080221 1.38777878e-016 3.23237878e-001
2
e k 1 C e k
xvect ci mostra la convergenza monotona del metodo ed
il raddoppio delle cifre che si assestano da un certo k in poi.
Cosa rappresenta rapp?
f
La costante asintotica del metodo C
di Newton è: 2 f
La k-esima componente di rapp contiene:
f x k
2 f xk
f xk
per k , xk e quindi C
2 f xk
Esercizio 3
Data l’equazione:
Numero di Iterazioni : 15
Radice calcolata : -6.1035156250000000e-005
Ordine stimato : 1.0000000000000000
Fattore di riduzione : 0.5000000000000000
% costruzione tabella
iter=1:it;
fprintf(' it \t\t\t x_app \t\t x_diff fx\n')
fprintf('%2d %23.15e %15.3e %15.3e\n',
[iter' xvect xdiff fx]')
Tabella riassuntiva - bisezione
it xapp xdiff fx
1 0.000000000000000e+000 5.000e-001 0.000e+000
2 -5.000000000000000e-001 2.500e-001 5.869e-002
3 -2.500000000000000e-001 1.250e-001 7.691e-003
4 -1.250000000000000e-001 6.250e-002 9.728e-004
5 -6.250000000000000e-002 3.125e-002 1.220e-004
6 -3.125000000000000e-002 1.563e-002 1.526e-005
7 -1.562500000000000e-002 7.813e-003 1.907e-006
8 -7.812500000000000e-003 3.906e-003 2.384e-007
9 -3.906250000000000e-003 1.953e-003 2.980e-008
10 -1.953125000000000e-003 9.766e-004 3.725e-009
11 -9.765625000000000e-004 4.883e-004 4.657e-010
12 -4.882812500000000e-004 2.441e-004 5.821e-011
13 -2.441406250000000e-004 1.221e-004 7.276e-012
14 -1.220703125000000e-004 6.104e-005 9.095e-013
15 -6.103515625000000e-005 3.052e-005 1.137e-013
Confronto tra i due metodi
Newton
Iter xvect xdiff fx
....
15 -1.930920527663641e-003 9.655e-004 3.600e-009
Bisezione
Iter xvect xdiff fx
....
15 -6.103515625000000e-005 3.052e-005 1.137e-013
Bisezione
Numero di Iterazioni : 15
Radice calcolata : -6.1035156250000000e-005
Ordine stimato : 1.0000000000000000
Fattore di riduzione : 0.5000000000000000
La radice è multipla?
Verifica della molteplicità della radice.
Anche il grafico
mostra che la radice
x=0 è multipla
fplot('sin(x)-0.5*sin(2*x)’,[-1,1])
grid
title('Andamento di f(x)= sin(x)- 0.5*sin(2*x)')
F xk
f ( xk ) f ( xk )
* xk 1 =xk - xk 1 xk
F xk
f ( xk ) f ( xk ) f ( xk )
2
% istruzioni relative al nuovo problema
fun='(sin(x)-0.5*sin(2*x))./(cos(x)-cos(2*x))';
F1='1-((sin(x)-0.5*sin(2*x)).*(-sin(x)+';
F2='2*sin(2*x)))./(cos(x)-cos(2*x)).^2';
dfun=[F1 F2];
Metodo di Newton (*) per F: risultati
[xvect,xdiff,fx,it,p,c]=Newton(x0,nmax,toll,fun,dfun);
Warning: Divide by zero.
In ……..
Warning: Divide by zero.
In ……..
Numero di Iterazioni : 5
Radice calcolata : NaN
Ordine stimato : NaN
Fattore di riduzione : NaN
Iter xvect xdiff fx
0 -1.000000000000000e+000 0.000e+000 4.044e-001
1 -3.108031246559614e-001 6.892e-001 1.053e-001
2 -9.943189700371891e-003 3.009e-001 3.314e-003
3 -3.276824228314046e-007 9.943e-003 1.092e-007
4 -1.029850733179902e-010 3.276e-007 NaN
5 NaN NaN NaN
cos x 2
F x , F 0 0
1 2cos x
2
Grafico di F(x)
fplot('sin(x)/(1+2*cos(x)) ',[-1,1])
grid
title('F(x)=sin(x)/(1+2*cos(x)) ')
Grafico di F’(x)
fplot('(cos(x)+2)/(1+2*cos(x))^2',[-1,1])
grid
title('DF(x)=(cos(x)+2)/(1+2*cos(x))^2')
Grafico di F’’(x)
fplot('(7+2*cos(x)) *sin(x)/(1+2*cos(x))^3',
[-1,1])
grid
title('F''''(x)= (7+2*cos(x)) *sin(x)/(1+2*cos(x))
^3)')
Risultati del metodo di Newton applicato al problema
modificato
x0=0.7; nmax=15; toll=1e-12;
fun='sin(x)./(1+2*cos(x))';
dfun='(cos(x)+2)./(1+2*cos(x)).^2';
[xvect,xdiff,fx,it,p,c]=Newton(x0,nmax,toll,fun,
dfun);
Numero di Iterazioni : 5
Radice calcolata : 0.0000000000000000e+000
Ordine stimato : 3.0020776453233839
Fattore di riduzione : 0.3387128554185560
x0=-0.8;
[xvect,xdiff,fx,it,p,c]=Newton(x0,nmax,toll,fun,
dfun);
Numero di Iterazioni : 5
Radice calcolata : 0.0000000000000000e+000
Ordine stimato : 3.0052937675224145
Fattore di riduzione : 0.3450700538122051
Utilizzo della function ‘fzero’ di Matlab
1. f x x 2 4 cos x 4 x sin x 0
alfa=fzero('(x^2-4)*cos(x)+4*x*sin(x)',0.8)% per
MATLAB6. Oppure se si dispone di MATLAB7:
% alfa=fzero(@(x)(x^2-4)*cos(x)+4*x*sin(x),0.8)
alfa = 8.052563483762232e-001
2. f x si n x 0.5 si n 2 x 0
options=optimset('TolX',1e-12); % si è imposta la
% stessa tolleranza assegnata nel caso esaminato
x=fzero('sin(x)-0.5*sin(2*x)',0.7,options)
x = -2.577177828170694e-009
Il risultato è meno preciso di quello ottenuto con la
function Newton !!
ESERCIZIO 4: EQUAZIONE NON LINEARE
DERIVANTE DA UN PROBLEMA MECCANICO
SISTEMA MECCANICO DI
RIFERIMENTO:
Si supponga:
Moto del corpo rigido ADBC: il ω = cost. rad/sec
punto A descrive una |OA| = R = cost. m
circonferenza di raggio OA=R e |AB| = μR con 3 ≤ μ ≤ 5
centro O fisso, il punto B si muove |AD| = l1 = hμR con 0 ≤ h ≤ 1
|DC| = l3 =cost. = kμR
sull’asse x ed il corpo rigido si
muove oscillando.
y C
A
ωt D φ x
O B B2
B1
Sviluppando i calcoli con il metodo delle equazioni indipendenti di
posizione (v. “Meccanica Applicata”) si perviene alle seguenti
relazioni mediante sviluppo di Taylor arrestato al primo ordine,
accettabile essendo l’angolo piccolo e tanto più piccolo
quanto più grande è (l’angolo nelle semplificazioni si
elimina )
1
xC R cos t k sin t h sin t
2
2
1
yC R 1 h sin t k 2 sin t
2
Velocità del punto C:
d xC h
R sin t k cos t sin 2 t
dt 2
d yC R 1 h cos t k sin 2 t
dt
2
Accelerazione del punto C:
d 2 xC h
2 R cos t k sin t cos 2 t
2
dt
2
d yC 2 R 1 h sin t k cos 2 t
dt2
Consideriamo la velocità del punto C:
Vc
αc
y C
A
ωt D φ x
O B B2
B2
Dalle formule precedenti si ricava:
d xC d yC
V C d t i d t j
2 2
h k
V C R sin t k cos t sin 2 t 1 h cos t sin 2 t
2 2
k
1 h cos t
2
sin 2 t
C arctan
sin t k cos t h
sin 2 t
2
Vc
y αc= π/4
O B
x
φ
φ
D
ωt
ω A B2
B1