La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

6 a lezione - laboratorio a.a 2004-2005 Corso di Laurea ING. MECCANICA.

Presentazioni simili


Presentazione sul tema: "6 a lezione - laboratorio a.a 2004-2005 Corso di Laurea ING. MECCANICA."— Transcript della presentazione:

1 6 a lezione - laboratorio a.a Corso di Laurea ING. MECCANICA

2 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 lorfano, Non avevo il bianco per il viso dei morti, Non avevo il giallo per le sabbie infuocate, Avevo larancione 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

3 Esercizio 1 Si verifica facilmente che x = 0 è soluzione. b) Senza preoccuparsi delle ipotesi di convergenza, si approssimi tale soluzione, applicando il metodo di Newton e quello di bisezione per 15 iterazioni. c) Fare le dovute considerazioni. Data lequazione:

4 Punto b: metodo di Newton x0=-1; nmax=15; toll=1e-12; fun='sin(x)-0.5*sin(2*x)'; dfun='cos(x)-cos(2*x)'; [xvect,xdiff,fx,it,p,c]=newton(x0,nmax,toll,fun,dfun); Superato il numero massimo di iterazioni Numero di Iterazioni : 15 Radice calcolata : e-003 Ordine stimato : Fattore di riduzione :

5 Tabella riassuntiva - Newton iter=0:it; fprintf('%2d %23.15e %15.3e %15.3e\n',[iter' xvect xdiff fx]') e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e-009 >> xvect ci mostra la lenta convergenza.

6 Punto b: metodo di bisezione a=-1;b=1; nmax=15; toll=1e-12; fun='sin(x)-0.5*sin(2*x)'; [xvect,xdiff,fx,it,p,c]=bisezione(a,b,nmax,toll,fun); Superato il numero massimo di iterazioni Numero di Iterazioni : 15 Radice calcolata : e-005 Ordine stimato : Fattore di riduzione :

7 Tabella riassuntiva - bisezione iter=1:it; fprintf('%2d %23.15e %15.3e %15.3e\n',[iter' xvect xdiff fx]') e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e-013 >>

8 Confronto tra i due metodi Il valore ottenuto con la bisezione è più vicino alla soluzione vera x = 0!!! Newton Bisezione Iter xvect xdiff fx e e e-009 Iter xvect xdiff fx e e e-013

9 Motivo di tale comportamento? Bisezione Numero di Iterazioni : 15 Radice calcolata : e-005 Ordine stimato : Fattore di riduzione : Newton Numero di Iterazioni : 15 Radice calcolata : e-003 Ordine stimato : Fattore di riduzione :

10 La radice è multipla? x = 0 è radice multipla con molteplicità m = 3.

11 Grafico di f ( x ) fplot('sin(x)-0.5*sin(2*x),[-1,1]) grid title('Andamento di f(x)= sin(x)- 0.5*sin(2*x)') Anche il grafico mostra che la radice x=0 è multipla

12 Modifica metodo di Newton: m noto x0=-1; nmax=15; toll=1e-12; fun='sin(x)-0.5*sin(2*x)'; dfun='cos(x)-cos(2*x)'; mol=3; [xvect,xdiff,fx,it,p,c]=newton_m(x0,nmax,toll, fun,dfun,mol); Arresto per azzeramento di dfun Iter xvect xdiff fx e e e+000

13 Modifica del problema: fun='(sin(x)-0.5*sin(2*x))./(cos(x)-cos(2*x))'; dfun='1-((sin(x)-0.5*sin(2*x)).*(-sin(x)+2* … sin(2*x)))./(cos(x)-cos(2*x)).^2'; Lapplicazione del metodo di Newton al problema implica:

14 Metodo di Newton (*): risultati [xvect,xdiff,fx,it,p,c]=newton(x0,nmax,toll,fun,dfun); Warning: Divide by zero. > In C:\analisi_numerica\prog_matlab_new\eq_non_lin\NEWTON.M at line 70 Warning: Divide by zero. > In C:\analisi_numerica\prog_matlab_new\eq_non_lin\NEWTON.M at line 62 Numero di Iterazioni : 5 Radice calcolata : NaN Iter xvect xdiff fx e e e e e e e e e e e e e e-007 NaN 5 NaN NaN NaN

15 Semplificazione della F ( x ) Poiché:

16 fplot('sin(x)/(1+2*cos(x)),[-1,1]) grid title(F(x)=sin(x)/(1+2*cos(x))) Grafico di F(x)

17 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)

18 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)') La derivata seconda non ha segno costante per la convergenza del metodo di Newton occorre prendere vicino alla soluzione!! Grafico di F(x)

19 Risultati del problema modificato metodo Newton (*) x0=0.7; 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 : e+000 Ordine stimato : Fattore di riduzione : x0=-0.8; [xvect,xdiff,fx,it,p,c]=newton(x0,nmax,toll,fun,dfun); Numero di Iterazioni : 5 Radice calcolata : e+000 Ordine stimato : Fattore di riduzione :

20 Utilizzo della function fzero di Matlab >> alfa=fzero('(x^2-4)*cos(x)+4*x*sin(x)',0.8) alfa = e-001 >> options=optimset('Tolx',1e-15); >> x=fzero('sin(x)-0.5*sin(2*x)',-0.1,options) x = e-008 Il risultato è meno preciso!!

21 Esercizio 2: Sistema non lineare Dato il sistema non lineare : a) separare graficamente le soluzioni; b) utilizzare il metodo di punto fisso per approssimare la soluzione situata nel primo quadrante; c) applicare quindi il metodo di Newton per risolvere lo stesso problema. d) Confrontare i risultati ottenuti nei due casi.

22 Punto a: separazione grafica Circonferenza:C=(0,2),R = 2 Parabola simm.rispetto lasse x La soluzione D = [1,2] x [1,2] fplot('2-sqrt(4-x^2)', [0,2]),grid hold on fplot('2+sqrt(4-x^2)', [0,2]) fplot('sqrt(x)',[0,4]), hold off %y=0:.01:4; %x2=0:.01:4; %x1=sqrt(-%y.^2+4*y); %y2=sqrt(x2); %plot(x1,y,x2,y2),grid

23 Grafico di F ( x ) in [1,2] x [1,2] fplot('2-sqrt(4- x^2)', [1,2]),grid hold on fplot('2+sqrt(4- x^2)', [1,2]) fplot('sqrt(x)',[ 1,2]) axis([ ]) hold off

24 Punto b: metodo di punto fisso Convergenza del metodo di punto fisso

25 Verifica delle ipotesi: Hp.1, Hp.2 Hp.1 Le funzioni g 1 crescente g 2 è anche crescente

26 Verifica delle ipotesi: Hp. 3 Il metodo di punto fisso converge!!

27 Istruzioni metodo punto fisso x0=[1 1]; nmax=30; toll=1.e-6; fun=strvcat('x(1)^2+x(2)^2-4*x(2)', '-x(1)+x(2)^2'); % x,y sono in x(1),x(2) g=strvcat('sqrt(4*x(2)-x(2)^2)','sqrt(x(1))'); [xvect,xdiff,fx,it]=Punto_fissoxs(x0,nmax,toll, fun,g);.... while (it =toll) xap=x; for k=1:n x_new(k)=eval(g(k,:)); % x(k)=x_new(k); % da aggiungere per avere la % soluzione con metodo in serie end x=xap;....

28 Risultati e tabella: metodo in parallelo Numero di iterazioni : 15 Radice calcolata: e e+000 iter=0:it; tab=[iter' xvect xdiff fx]; fprintf('%2d %19.15f %19.15f %13.3e %13.3e\n', tab') it soluzione xdiff fx e e e e e e e e e e-007

29 Risultati e tabella: metodo in serie it soluzione xdiff fx e e e e e e e e e e e e e e e e e e-007 Numero di iterazioni : 8 % sono di meno! Radice calcolata: e e+000

30 Punto c: metodo di Newton Indichiamo: Hp. La soluzione del sistema:

31 Istruzioni metodo di Newton x0=[1 1]; nmax=30; toll=1.e-6; fun=strvcat('x(1)^2+x(2)^2-4*x(2)', '-x(1)+x(2)^2'); Jac=strvcat('2*x(1)','2*x(2)-4','-1','2*x(2)'); % Jacobiana in forma di vettore di stringhe [xvect,xdiff,fx,it]=newtonxs(x0,nmax,toll,fun, Jac); Numero di iterazioni : 6 % Sono in numero < 8!! Radice calcolata: e e+000

32 Tabella riassuntiva del metodo di Newton it soluzione xdiff fx e e e e e e e e e e e e e e-015 iter=0:it; tab=[iter' xvect xdiff fx]; fprintf('%2d %19.15f %19.15f %13.3e %13.3e\n, tab')


Scaricare ppt "6 a lezione - laboratorio a.a 2004-2005 Corso di Laurea ING. MECCANICA."

Presentazioni simili


Annunci Google