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