Estratto del documento

Cap.11 Es.1

% Dato il problema u'(t)=1/(1+t^2)-2u^2 con u(0)=0 scrivere un codice matlab
% che implementa il metodo di Adams-Bashforth a 3 passi.
% Calcolare i primi passi in un caso con il metodo di Eulero e nell'altro
% con il metodo R-K esplicito del quarto ordine.
% Soluzione esatta u(t)=t/(1+t^2)

clear; clc; format long;

% Dati
t0=0; tf=3; u0=0; h=0.25;
t=t0;
fprintf(' t0 = %d, u0 = %d, h = %d \n ',t0,u0,h);

% Calcolo u1 con il metodi di Eulero
% Calcolo u2 con il metodo di R-K del quarto ordine (HH4)
% uab soluzione con Adams-Bashforth
% usol soluzione esatta

%calcolo del primo passo
f0=fval(t,u0);
n=1;
u1=u0+h*f0;
t=t+h;
usol=t/(1+t^2);
fprintf('\n n='); disp(n);
fprintf(' t='); disp(t);
fprintf(' u1 con Eulero='); disp(u1);
fprintf(' u(t1) sol. esatta='); disp(usol);

%calcolo del secondo passo
f1=fval(t,u1);
n=2;
u2=u1;
k1=fval(t,u2);
k2=fval(t+1/2*h,u2+1/2*h*k1);
k3=fval(t+1/2*h,u2+1/2*h*k2);
k4=fval(t+h,u2+h*k3);
u2=u2+(h/6)*(k1+2*k2+2*k3+k4);
t=t+h;
usol=t/(1+t^2);
fprintf('\n n='); disp(n);
fprintf(' t='); disp(t);
fprintf(' u1 con R-K del quarto ordine='); disp(u2);
fprintf(' u(t2) sol. esatta='); disp(usol);

%calcolo passi successivi
f2=fval(t, u2);
uab=u2;
while t<=tf-h
n=n+1
uab=uab+(h/12)*(23*f2-16*f1+5*f0);
%f2=f(tn,un);
%f1=f(tn-1,un-1);
%f0=f(tn-2,un-2);
f0=f1;
f1=f2;
f2=fval(t,uab);
usol=t/(1+t^2);
fprintf('\n n='); disp(n);
fprintf(' t='); disp(t);
fprintf(' u_Adams-Bashforth='); disp(uab);
fprintf(' sol. esatta='); disp(usol);
end

Cap.11 Es.2.2

% Scrivere i codici che implementano i metodi di Adams-Bashforth del secondo
% e del terzo ordine per il problema dell'esercizio 1.

clear; clc; format long;

% Dati
t0=0; tf=3; u0=0; h=0.25;
t(1)=t0;
fprintf(' t0 = %d, u0 = %d, h = %d \n ',t0,u0,h);

% Calcolo u(1) e u(2) con il metodo di Eulero
% uab2 soluzione con il metodo di Adams-Bashforth del secondo ordine
% uab3 soluzione con il metodo di Adams-Bashforth del terzo ordine
% usol soluzione esatta

%calcolo del primo passo
f0=fval(t(1),u0);
n=1;
u(1)=u0+h*f0;
t(2)=t(1)+h;
usol(1)=t(1)/(1+t(1)^2);
fprintf('\n n='); disp(n);
fprintf(' t='); disp(t(n));
fprintf(' u(1) con Eulero='); disp(u(1));
fprintf(' u(t1) sol. esatta='); disp(usol(1));

%calcolo del secondo passo
f1=fval(t(2),u(1));
X=f1; % Ci servirà poi per richiamare f1 in A-B secondo ordine
n=2;
u(2)=u(1)+h*f1;
t(3)=t(2)+h;
usol(2)=t(2)/(1+t(2)^2);
fprintf('\n n='); disp(n);
fprintf(' t='); disp(t(n));
fprintf(' u(2) con Eulero='); disp(u(2));
fprintf(' u(t2) sol. esatta='); disp(usol(2));

%calcolo passi successivi
f2=fval(t(3), u(2));
K=f2; % Ci servirà poi per richiamare f2 in A-B secondo ordine
n=3;
uab3(3)=u(2);
uab2(3)=u(2);
while t<=tf-h
n=n+1
uab3(n+1)=uab3(n)+(h/12)*(23*f2-16*f1+5*f0);
uab2(n+1)=uab3(n)+(h/2)*(3*K-X);
%f2=f(tn,un);
%f1=f(tn-1,un-1);
%f0=f(tn-2,un-2);
f0=f1;
f1=f2;
X=K;
t(n+1)=t(n)+h;
f2=fval(t(n+1),uab3(n));
K=fval(t(n+1),uab2(n));
usol(n+1)=t(n+1)/(1+t(n+1)^2);
fprintf('\n n='); disp(n);
fprintf(' t='); disp(t(n+1));
fprintf(' u_Adams-Bashforth3='); disp(uab3(n+1));
fprintf(' u_Adams-Bashforth2='); disp(uab2(n+1));
fprintf(' sol. esatta='); disp(usol(n+1));
end

hold on
plot(t,uab3,'ob');
plot(t,uab2,'og');
plot(t,usol,'or');

Cap.11 Es.2.3

% Scrivere i codici che implementano i metodi di Eulero implicito
% e dei Trapezi per il problema dell'esercizio 1.

clear; clc; format long;

% Dati
t0=0; tf=4; u0=0; h=0.1;
fprintf(' t0 = %d, u0 = %d, h = %d \n ',t0,u0,h);

% uimp soluzione con il metodo di Eulero implicito
% utrap soluzione con il metodo dei Trapezi
t(1)=t0; uimp(1)=u0; utrap(1)=u0
tol=1e-5; kmax=100; ymax=100; %tolleranza e numero massimo di iterazioni
fprintf( 'parametri del punto fisso \n');
fprintf( 'toll= %d, kmax=%d, ymax= %d, \n', tol, kmax, ymax);

n=1;
while t(n)<=tf-h
t(n+1)=t(n)+h;
fprintf('\n n='); disp(n);
fprintf(' t='); disp(t(n));

% Metodo Eulero implicito
v0=uimp(n); %inizializzazione dell'iterazione: u^(0)=u_n

% Ciclo k - Metodo del Punto Fisso
for k=1:kmax
v1=uimp(n)+h*(1/t(n+1)^2)-2*v0^2;
%criterio di arresto
if (abs(v1-v0)<tol*abs(v1));
break
end
v0=v1; % variabile v0 assume valore u^(k)
% criterio di arresto non soddisfatto
end % fine ciclo Metodo del Punto Fisso

% Scrivere per controllo il numero iterazioni del Metodo del Punto Fisso
fprintf('iterazioni punto fisso per convergenza Eulero implicito='); disp (k);
uimp(n+1)=v1; % Calcolo di u_(n+1) valore di u^(k) che ha soddisfatto
% il criterio di arresto

% Metodo dei Trapezi
L0=utrap(n)
for y=1:ymax
L1=utrap(n)+(h/2)*((1/t(n)^2)-2*L0^2)+(1/(1+t(n+1)^2)-2*L0^2);
%criterio di arresto
if (abs(L1-L0)<tol*abs(L1));
break
end
L0=L1;
end
fprintf('iterazioni punto fisso per convergenza Trapezi='); disp (y);
utrap(n+1)=L1;
usol(n+1)=t(n+1)/(1+t(n+1)^2);
fprintf(' u_Eulero implicito='); disp(uimp(n+1));
fprintf(' u_Trapezi='); disp(utrap(n+1));
fprintf(' sol. esatta='); disp(usol(n+1));
end

hold on
plot(t,uimp,'ob');
plot(t,utrap,'og');
plot(t,usol,'or');

Cap.11 Es.2.1

% Scrivere i codici che implementano i metodi di Eulero, Eulero modificato,
% di R-K del quarto ordine per il problema dell'esercizio 1.

clear; clc; format long;

% Dati
t0=0; tf=3; u0=0; h=0.25;
t(1)=t0;
fprintf(' t0 = %d, u0 = %d, h = %d \n ',t0,u0,h);

% ueu soluzione con il metodo di Eulero
% urk soluzione con il metodo di R-K del quarto ordine (HH4)
% uem soluzione con il metodo di Eulero modificato
% usol soluzione esatta
ueu(1)=u0;
urk(1)=u0;
uem(1)=u0;
n=1;
while t(n)<=tf-h
ueu(n+1)=ueu(n)+h*fval(t(n),ueu(n));
k1=fval(t(n),urk(n));
k2=fval(t(n)+1/2*h,urk(n)+1/2*h*k1);
Anteprima
Vedrai una selezione di 6 pagine su 25
Metodi Numerici - Codici MATLAB svolti Pag. 1 Metodi Numerici - Codici MATLAB svolti Pag. 2
Anteprima di 6 pagg. su 25.
Scarica il documento per vederlo tutto.
Metodi Numerici - Codici MATLAB svolti Pag. 6
Anteprima di 6 pagg. su 25.
Scarica il documento per vederlo tutto.
Metodi Numerici - Codici MATLAB svolti Pag. 11
Anteprima di 6 pagg. su 25.
Scarica il documento per vederlo tutto.
Metodi Numerici - Codici MATLAB svolti Pag. 16
Anteprima di 6 pagg. su 25.
Scarica il documento per vederlo tutto.
Metodi Numerici - Codici MATLAB svolti Pag. 21
1 su 25
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche MAT/08 Analisi numerica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Pelle_97 di informazioni apprese con la frequenza delle lezioni di Metodi numerici per l'ingegneria 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 Modena e Reggio Emilia o del prof Galligani Emanuele.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community