Estratto del documento

Punti fissi e zeri di funzione

Metodo della tangente fissa ★​

Function ➔​

function [xnew,it,vettscarti]=es1scheda6(f,df,x0,toll,itmax)% metodo della tangente fissa per gli zeri di funzione it=0;xold=x0;vettscarti=zeros(itmax,1);scarto=2*toll;C0=df(xold);while scarto>toll && it<itmax it=it+1;xnew=xold-(f(xold)/C0);scarto=abs(xnew-xold);vettscarti(it)=scarto;xold=xnew;end vettscarti=vettscarti(1:it);end

Esempio di script per applicare la function ➔​

clear close all f=@(x) exp(2*x)-x-8;df=@(x) 2*exp(2*x)-1;ddf=@(x) 4*exp(2*x);a=0.5; b=1.5;x0=1.5;itmax=50;toll=1.e-6;fplot(f,[a,b]) hold on plot([a,b],[0 0]) [xnew,it,vettscarti]=es1scheda6(f,df,x0,toll,itmax);fprintf(1,'valore approssimato %g \n',xnew);fprintf(1,'numero di iterazioni %i \n',it);plot(xnew,f(xnew),'ro') % zero della funzione figure semilogy(1:it,vettscarti,'o',1:it,vettscarti,'LineWidth',2) % profilo di convergenza M=vettscarti(2:it)./vettscarti(1:it-1); % M= fattore di convergenza o costante asintotica dell’errore fprintf(1,'approssimazione del fattore di convergenza se p=1 %gM)\n',

Metodo della secante fissa ★​

Function ➔​

function [xnew,it,vettscarti]=es2scheda6(f,x0,x1,toll,itmax)% metodo della secante fissa it=0;xold=x0;vettscarti=zeros(itmax,1);scarto=2*toll;C0=(f(x1)-f(xold))/(x1-xold);while scarto>toll && it<itmax it=it+1;xnew=xold-(f(xold)/C0);scarto=abs(xnew-xold);vettscarti(it)=scarto;xold=xnew;end vettscarti=vettscarti(1:it);end

Esempio di script per applicare la function ➔​

clear close all f=@(x) exp(2*x)-x-8;df=@(x) 2*exp(2*x)-1;ddf=@(x) 4*exp(2*x);a=0.5; b=1.5;x0=1.5;x1=1.2;itmax=50;toll=1.e-6;fplot(f,[a,b]) hold on plot([a,b],[0 0]) [xnew,it,vettscarti]=es2scheda6(f,x0,x1,toll,itmax);fprintf(1,'valore approssimato %g \n',xnew);fprintf(1,'numero di iterazioni %i \n',it);plot(xnew,f(xnew),'ro') % zero della funzione figure semilogy(1:it,vettscarti,'o',1:it,vettscarti,'LineWidth',2) % profilo di convergenza M=vettscarti(2:it)./vettscarti(1:it-1); % M= fattore di convergenza o costante asintotica dell’errore fprintf(1,'approssimazione del fattore di convergenza se p=1 %g\n', M)

Metodo della secante variabile ★​

Function ➔​

function [xnew,it,vettscarti]=funRF(f,x0,x1,toll,itmax)% metodo della secante variabile it=1;xoldold=x0;xold=x1;vettscarti=zeros(itmax,1);scarto=abs(xold-xoldold);vettscarti(1)=scarto;while scarto>toll && it<itmax it=it+1;Cn=(f(xold)-f(xoldold))/(xold-xoldold);xnew=xold-f(xold)/Cn;scarto=abs(xnew-xold);vettscarti(it)=scarto;xoldold=xold;xold=xnew;end vettscarti=vettscarti(1:it);end

Esempio di script per applicare la function ➔​

clear close all f=@ (x) 3*exp(-x)-atan(x);df=@ (x) -3*exp(-x)- (1/1+x.^2);a=0; b=2;x0=1.5;x1=1.2;toll=1.e-8;itmax=50;% metodo della secante fissa [xnew,it,vettscarti]=es2scheda6(f,x0,x1,toll,itmax);fprintf(1,'valore approssimato %g \n',xnew); %xnew=csi fprintf(1,'numero di iterazioni %i \n',it);M=vettscarti(2:it)./vettscarti(1:it-1); % M= fattore di convergenza o costante asintotica dell’errore fprintf(1,'approssimazione del fattore di convergenza se p=1 %eM)\n',fplot(f,[a,b]) hold on plot([a,b],[0 0]) plot(xnew,f(xnew),'ro') % zero della funzione figure semilogy(1:it,vettscarti,'o',1:it,vettscarti,'LineWidth',2) % profilo di convergenza hold on % metodo della secante variabile [xnew,it,vettscarti]=funRF1(f,x0,x1,toll,itmax);fprintf(1,'iterazioni effettuate = %i \n',it);fprintf(1,'approssimazione raggiunta = %15.9g \n',xnew);M1=vettscarti(2:it)./(vettscarti(1:it-1)).^1.618;fprintf(1,'approssimazione del fattore di convergenza se p=1.618%e \n',M1) semilogy(1:it,vettscarti,'o',1:it,vettscarti,'LineWidth',2)

Metodo di Newton-Raphson ★​

Function ➔​

function [xnew,it,vettscarti]=funNR(f,df,x0,toll,itmax) % quando andrò a chiamare questa function mi devo ricordare di mettere prima tolle poi itmax % function [xnew,it,vettscarti]=funpfisso(g,x0,toll,itmax) % input: f funzione data come function handle % df derivata prima della f data come function handle % x0 approssimazione iniziale % toll tolleranza prefissata % it max numero massimo di iterazioni % output: xnew valore approssimato per il punto fisso oppure valore distante da esso % it numero di iterazioni effettuate % vettscarti vettore degli scarti ad ogni iterazione it=0;xold=x0;vettscarti=zeros(itmax,1); % preallocazione di memoria per il vettore degli scarti scarto=2*toll; % scarto=toll+1;% scarto lo pongo uguale ad un valore fittizio maggiore di toll in modo da % poter entrare nel ciclo while e applicare il metodo while scarto>toll && it<itmax it=it+1; % vado avanti di una iterazione nel metodo xnew=xold - f(xold)/df(xold); % applico il metodo di Newton-Raphson scarto=abs(xnew-xold); % aggiorno lo scarto vettscarti(it)=scarto; % aggiorno la componente it del vettore scarti xold=xnew;end vettscarti=vettscarti(1:it); % tagliamo il vettore alle prime it componenti in modo da togliere tutti gli zeri in più che non servono % chiudo la function end

Metodo del punto fisso ★​

Function ➔​

function [xnew,it,vettscarti]=funpfisso(g,x0,toll,itmax) % quando andrò a chiamare questa function mi devo ricordare di mettere prima tolle poi itmax % function [xnew,it,vettscarti]=funpfisso(g,x0,toll,itmax) % input: g funzione di punto fisso data come function handle % x0 approssimazione iniziale % toll tolleranza prefissata % it max numero massimo di iterazioni % output: xnew valore approssimato per il punto fisso oppure valore distante da esso % it numero di iterazioni effettuate % vettscarti vettore degli scarti ad ogni iterazione it=0;xold=x0;vettscarti=zeros(itmax,1); % preallocazione di memoria per il vettore degli scarti scarto=2*toll; % scarto=toll+1;% scarto lo pongo uguale ad un valore fittizio maggiore di toll in modo da % poter entrare nel ciclo while e applicare il metodo while scarto>toll && it<itmax it=it+1; % vado avanti di una iterazione nel metodo xnew=g(xold); % applico il metodo di punto fisso scarto=abs(xnew-xold); % aggiorno lo scarto vettscarti(it)=scarto; % aggiorno la componente it del vettore scarti xold=xnew;end vettscarti=vettscarti(1:it); % tagliamo il vettore alle prime it componenti in modo da togliere tutti gli zeri in più che non servono %chiudo la function end

Script che applica il metodo di Newton-Raphson e il metodo del punto fisso

clear close all f=@ (x) 3*(x.^3)+x;df=@ (x) 9*(x.^2)+1;ddf=@(x) 18*x;a=-1; b=1;fplot(f,[a,b]) % grafico della funzione associata all'equazione hold on plot([a,b],[0 0]) % asse x % applicazione metodo di N-R - stampa dei valori di it e approssimazione x0=0.1;toll=1.e-10;itmax=30;[xnew,it,vettscarti]=funNR(f,df,x0,toll,itmax); % richiamo alla fun di N-R fprintf(1,'iterazioni effettutate = %i \n', it);fprintf(1,'approssimazione raggiunta = %15.9g \n',xnew);% grafico di convergenza figure semilogy(1:it,vettscarti,'o',1:it,vettscarti,'LineWidth',2) % profilo di convergenza % stima del fattore di convergenza del metodo di N-R con p=1 M1=vettscarti(2:it)./vettscarti(1:it-1);M2=vettscarti(2:it)./(vettscarti(1:it-1)).^2;M3=vettscarti(2:it)./(vettscarti(1:it-1)).^3;tabella=[M1,M2,M3]; % per fare tabella dei dati fprintf(1,'appross. del fattore di convergenza se p=1 \t appross. del fattore di convergenza se p=2 \t appross. del fattore di convergenza se p=3 \n');fprintf(1,'%30e \t %30e \t %50e \n', tabella'); % poi faccio la trasposta % schema di punto fis

Anteprima
Vedrai una selezione di 8 pagine su 33
Esercizi di Informatica su Matlab Pag. 1 Esercizi di Informatica su Matlab Pag. 2
Anteprima di 8 pagg. su 33.
Scarica il documento per vederlo tutto.
Esercizi di Informatica su Matlab Pag. 6
Anteprima di 8 pagg. su 33.
Scarica il documento per vederlo tutto.
Esercizi di Informatica su Matlab Pag. 11
Anteprima di 8 pagg. su 33.
Scarica il documento per vederlo tutto.
Esercizi di Informatica su Matlab Pag. 16
Anteprima di 8 pagg. su 33.
Scarica il documento per vederlo tutto.
Esercizi di Informatica su Matlab Pag. 21
Anteprima di 8 pagg. su 33.
Scarica il documento per vederlo tutto.
Esercizi di Informatica su Matlab Pag. 26
Anteprima di 8 pagg. su 33.
Scarica il documento per vederlo tutto.
Esercizi di Informatica su Matlab Pag. 31
1 su 33
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher pinaa_10_25 di informazioni apprese con la frequenza delle lezioni di Informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Padova o del prof Mazzia Annamaria.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community