Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Metodi numerici - Esercizi
Y=A;end23/02/23 11.02 C:\Users\hp\Desktop\Metodi n...\sum_int.m 1 of 1BAS_09function y = sum_int(x)% Si scriva una funzione capace di calcolare la somma dei numeri% interi da 1 a 2^x, dove x è un numero intero argomento della funzione.% Ad esempio se x=2 y è pari a 1+2+3+4=10.a=2^x;v=1:1:a;Nv=length(v);y=0;for i=1:1:Nvy=y+v(i);endend23/02/23 11.02 C:\Users\hp\Desktop\Meto...\nel_vettore.m 1 of 1BAS_10function y=nel_vettore(x,a)% Si scriva una funzione che accetta come argomenti il vettore x e una variabilescalare a.% La funzione restituisce il valore y=1 se il numero a è presente nel vettore x, y=0se a non è presente in x.% Ad esempio y=nel_vettore([3 5 8 1],8) restituisce y=1, mentre y=nel_vettore([3 5 81],4) restituisce y=0.Nx=length(x);y=0;for i=1:Nxif x(i)==ay=1;endendend23/02/23 11.03 C:\Users\hp\Desktop\Metod...\estrairiga.m 1 of 1BAS_11function [y]=estrairiga(A,n)% Si scriva una funzione capace di estrarre la riga n dalla matrice A.% Restituisce inuscita il vettore riga y.
<code>y=A(n,:);end</code>
23/02/23 11.03 C:\Users\hp\Desktop\Me...\estraicolonna.m 1 of 1BAS_12
<code>function [y]=estraicolonna(A,n)% Si scrive una funzione capace di estrarre la colonna n dalla atrice A.% Restituisce in uscita il vettore colonna y.</code>
<code>y=A(:,n);end</code>
23/02/23 11.03 C:\Users\hp\D...\matrice_funzioni_tempo.m 1 of 1BAS_13
<code>function [FF]=matrice_funzioni_tempo(dt,tf,m1,m2,m3,omega)% Il vettore tt contiene gli istanti di tempo da 0 a tf con passo dt.% Si scriva una funzione capace di restituire in uscita una matrice FF di% sei righe e numero di colonne pari alla lunghezza del vettore tt.% Le righe da 1 a 3 della matrice FF devono contenere solo elementi nulli,% mentre le righe da 4 a 6 contengono rispettivamente le seguenti funzioni% nel tempo:% riga 4: m1*sin(omega*tt)% riga 5: m2*sin(omega*tt)% riga 6: m3*sin(omega*tt)% I parametri dt, tf, m1, m2, m3 e omega sono forniti come argomento della% funzione.</code>
<code>tt=0:dt:tf;Ntt=length(tt);FF=zeros(6, Ntt);for i=4:6switch icase</code>
4FF(i,:)=m1*sin(omega*tt);
case 5FF(i,:)=m2*sin(omega*tt);
case 6FF(i,:)=m3*sin(omega*tt);
end
end
end
23/02/23 11.04 C:\Users\hp\D...\matrice_funzioni_tempo.m 1 of 2BAS_14
function [FF]=matrice_funzioni_tempo(dt,tf,m1,m2,m3,omega,tinizio_segnale,tfine_segnale)
% Il vettore tt contiene gli istanti di tempo da 0 a tf con passo dt.
% Si scriva una funzione capace di restituire in uscita una matrice FF di
% sei righe e numero di colonne pari alla lunghezza del vettore tt.
% Le righe da 1 a 3 della matrice FF devono contenere solo elementi nulli,
% mentre le righe da 4 a 6 contengono rispettivamente le seguenti funzioni
% nel tempo:
% riga 4: 0 per t<tinizio_segnale; m1*sin(omega*tt) per
% tinizio_segnale<=t<=tfine_segnale; 0 per t>tfine_segnale
% riga 5: 0 per t<inizio_segnale; m2*sin(omega*tt) per
% inizio_segnale<=t<=tfine_segnale; 0 per t>tfine_segnale
% riga 6: 0 per t<inizio_segnale; m3*sin(omega*tt) per
% inizio_segnale<=t<=tfine_segnale; 0 per t>tfine_segnale
% I
parametri dt, tf, m1, m2, m3, omega, tinizio_segnale, tfine_segnale sono forniti come argomento della funzione. Ad esempio per il seguente valore dei parametri: dt=0.5; omega=1; m1=15000; m2=125000; m3=10000; tt=0:dt:tf; tinizio_segnale=2*pi; tfine_segnale=6*pi; le serie temporali contenute nelle sei righe della matrice sono rappresentate in figura. tt=0:dt:tf; Ntt=length(tt); FF=zeros(6,Ntt); for i=4:6 switch icase 4 for j=1:Ntt if tt(j)<tinizio_segnale FF(i,j)=0; elseif tt(j)>=tinizio_segnale && tt(j)<=tfine_segnale FF(i,j)=m1*sin(omega*tt(j)); elseif tt(j)>tfine_segnale FF(i,j)=0; end end end case 5 for j=1:Ntt if tt(j)<tinizio_segnale FF(i,j)=0; elseif tt(j)>=tinizio_segnale && tt(j)<=tfine_segnale FF(i,j)=m2*sin(omega*tt(j)); elseif tt(j)>tfine_segnale FF(i,j)=0; end end end case 6 for j=1:Ntt if tt(j)<tinizio_segnale FF(i,j)=0; elseif tt(j)>=tinizio_segnale && tt(j)<=tfine_segnale FF(i,j)=m3*sin(omega*tt(j)); elseif
tt(j)>tfine_segnaleFF(i,j)=0;end 23/02/23 11.04 C:\Users\hp\D...\matrice_funzioni_tempo.m 2 of 2 end end end end ESERCIZI ODE_BV 23/02/23 11.10 C:\Users\hp\Desktop\Metodi n...\Diretto.m 1 of 1 ODE_BV_01 function [x T] = Diretto(L,dx,hp,Tinf,Ta,Tb) %non modificare questa riga %% Preparazione delle variabili x=0:dx:L; x=x'; Nx=length(x); K=zeros(Nx); B=zeros(Nx,1); %% Preparazione matrici K e B K(1,1)=1; B(1)=Ta; K(Nx,Nx)=1; B(Nx)=Tb; alfa=-2-hp*dx^2; for ix=2:Nx-1 K(ix,ix)=alfa; K(ix,ix-1)=1; K(ix,ix+1)=1; B(ix)=-dx^2*hp*Tinf; end %% Risoluzione per T T=K\B; end 23/02/23 11.11 C:\Users\hp\Desktop\Metodi n...\Diretto.m 1 of 1 ODE_BV_02 function [x T] = Diretto(L,dx,hp,Ta,Tb) %non modificare questa riga %% Preparazione delle variabili x=0:dx:L; x=x'; Nx=length(x); K=zeros(Nx); B=zeros(Nx,1); Tinf=interp1([0, L/2 ,L], [200, 300, 250], x); %% Preparazione matrici K e B K(1,1)=1; B(1)=Ta; K(Nx,Nx)=1; B(Nx)=Tb; alfa=-2-hp*dx^2; for ix=2:Nx-1 K(ix,ix)=alfa; K(ix,ix-1)=1; K(ix,ix+1)=1; B(ix)=-dx^2*hp*Tinf(ix); end
Risoluzione per TT=K\B;end23/02/23 11.11 C:\Users\hp\Desktop\Metodi n...\Diretto.m 1 of 1ODE_BV_03function [x T] = Diretto(L,dx,hp,Tinf,Ta)%non modificare questa rigax=0:dx:L; x=x'; Nx=length(x);K=zeros(Nx,Nx); B=zeros(Nx,1);alfa=-2-hp*dx^2;K(1,1)=1; B(1)=Ta;K(Nx,Nx)=alfa; K(Nx,Nx-1)=2; B(Nx)=-dx^2*hp*Tinf;for ix=2:Nx-1K(ix,ix)=alfa;K(ix,ix-1)=1;K(ix,ix+1)=1;B(ix)=-dx^2*hp*Tinf;endT=K\B;end23/02/23 11.11 C:\Users\hp\Desktop\Metodi...\Iterativo.m 1 of 1ODE_BV_04function [x T] = Iterativo(L,dx,hp,Tinf,Ta,Tb,nite)%non modificare questa rigax=0:dx:L; x=x'; Nx=length(x);Told=zeros(Nx,1); T=zeros(Nx,1);Told(1)=Ta; Told(end)=Tb;T(1)=Ta; T(end)=Tb;alfa=-2-(dx^2*hp);for it=1:nitefor ix=2:Nx-1T(ix)=(1/alfa)*(-Told(ix-1)-Told(ix+1)-(hp*dx^2*Tinf));endTold=T;endend23/02/23 11.11 C:\Users\hp\Desktop\Metodi num...\trave.m 1 of 1ODE_BV_05function [x y] = trave(dx,L,w)% non modificare questa rigaE=200;I=30000;x=0:dx:L; x=x'; Nx=length(x);K=zeros(Nx); B=zeros(Nx,1);alfa=-2;K(1,1)=1;
B(1)=0; K(Nx,Nx)=1; B(Nx)=0; for ix=2:Nx-1 K(ix,ix)=alfa; K(ix,ix-1)=1; K(ix,ix+1)=1; B(ix)=((w*L*x(ix)/2)-(w*(x(ix)^2)/2))*(dx^2/(E*I)); end y=K\B; end 23/02/23 11.12 C:\Users\hp\Desktop\Metodi...\Iterativo.m 1 of 1 ODE_BV_06 function [x T] = Iterativo(L,dx,hp,Tinf,Ta,Tb,nite) %non modificare questa riga x=0:dx:L; x=x'; Nx=length(x); Told=zeros(Nx,1); T=zeros(Nx,1); Told(1)=Ta; Told(end)=Tb; T(1)=Ta; T(end)=Tb; alfa=-2-(dx^2*hp); for it=1:nite for ix=2:Nx-1 T(ix)=(1/alfa)*(-T(ix-1)-Told(ix+1)-(hp*dx^2*Tinf)); end Told=T; end end 23/02/23 11.13 C:\Users\hp\Desktop\Metodi...\Iterativo.m 1 of 1 ODE_BV_07 function [x T] = Iterativo(L,dx,hp,Tinf,Ta,Tb,nite) %non modificare questa riga lambda=1.2; x=0:dx:L; x=x'; Nx=length(x); Told=zeros(Nx,1); T=zeros(Nx,1); Told(1)=Ta; Told(end)=Tb; T(1)=Ta; T(end)=Tb; alfa=-2-(dx^2*hp); for it=1:nite for ix=2:Nx-1 T(ix)=(1-lambda)*Told(ix)+lambda*(1/alfa)*(-T(ix-1)-Told(ix+1)-(hp*dx^2*Tinf)); end Told=T; end end ESERCIZI ODE_IV 23/02/23 11.15 C:\Users\hp\Desktop\Metodi num...\ode01.m 1
function y = ode01(a,y0,dt) %non modificare il nome della function%
y è il risultato della funzione e deve essere
un vettore colonna che contiene il valore
di y agli istanti temporali 0, dt, 2*dt, ..., 10.
qui di seguito va sviluppato il programma
t=0:dt:10; t=t'; Nt=length(t);
y=zeros(Nt,1); y(1)=y0;
for it=2:Nt
y(it)=y(it-1)+dt*(-a*y(it-1));
end
end
function [tt, xm, vm] = funzione_massa_molla_smorzatore(m,mu,k,xm0,vm0,dt)%non modificare il nome della function
tt=0:dt:1000; tt=tt'; Ntt=length(tt);
xm=zeros(Ntt,1); vm=xm; f=xm;
xm(1)=xm0; vm(1)=vm0;
for itt=2:Ntt
xm(itt)=xm(itt-1)+dt*(vm(itt-1));
vm(itt)=vm(itt-1)+dt*(-k/m*xm(itt-1)-mu/m*vm(itt-1)+f(itt-1));
end
end
function [tt, xm, vm] = funzione_massa_molla_smorzatore(m,mu,k,xm0,vm0,dt,omega,tf)%non modificare il nome della function
tt=0:dt:tf; tt=tt';
Ntt=length(tt);
xm=zeros(Ntt,1);
vm=xm;
xm(1)=xm0;
vm(1)=vm0;
f=sin(omega*tt);
for itt=2:Ntt
xm(itt)=xm(itt-1)+dt*(vm(itt-1));
vm(itt)=vm(itt-1)+dt*(-k/m*xm(itt-1)-mu/m*vm(itt-1)+f(itt-1)/m);
end
end
23/02/23 11.16 C:\Users\hp\De...\svuotamento_serbatoio.m 1 of 1
ODE_IV_03
function [t, h] = svuotamento_serbatoio(dt, tf, Aserbatoio, h0, Aforo)
% non modificare il nome della function
t=0:dt:tf;
t=t';
Nt=length(t);
C=0.55;
g=9.81;
h=zeros(Nt,1);
h(1)=h0;
for it=2:Nt
h(it)=h(it-1)+dt*((-C*Aforo*(2*g*h(it-1))^0.5)/Aserbatoio);
end
end
23/02/23 11.17 C:\Users\hp\Desktop\Met...\doppia_massa.m 1 of 1
ODE_IV_04a
function [x1 v1 x2 v2] = doppia_massa(dt,tf)
% NON MODIFICARE NOME E ARGOMENTI DELLA FUNCTION!
k1=5;
k2=5;
m1=2;
m2=2;
w1=5;
w2=5;
L1=2;
L2=2;
x10=L1;
x20=L1+w1+L2+6;
v10=0;
v20=0;
t=0:dt:tf;
t=t';
Nt=length(t);
N=2;
m=[m1, m2];
%% costruzione matrici M, D e K
M=diag(m);
D=zeros(N);
K=zeros(N);
K(1,1)=k1+k2;
K(1,2)=-k2; % prima riga di K
K(2,1)=-k2;
K(2,2)=k2; % seconda riga di K
%% costruzione MM e KK
MM=[eye(N),zeros(N); zeros(N), M];KK=[zeros(N), -eye(N); K, D];%% preparazione variabiliY=zeros(2*N,Nt); F=zeros(2*N,Nt);F(3,:)=(k1*L1)-(k2*w1)-(k2*L2);F(4,:)=(w1*k2)+(L2*k2);%% integrazione con metodo di EuleroY(1,1)=x10; Y(2,1)=x20;Y(3,1)=v10; Y(4,1)=v20;for it=1:Nt-1Y(:,it+1)=Y(:,it)+dt*inv(MM)*(-KK*Y(:,it)+F(:,it));endx1=Y(1,:)';x2=Y(2,:)';v1=Y(3,:)';v2=Y(4,:)';end23/02/23 11.17 C:\Users\hp\Desktop\Met...\doppia_massa.m 1 of 1ODE_IV_04bfunction [x1 v1 x2 v2] = doppia_massa(dt,tf) % NON MODIFICARE NOME E ARGOMENTI DELLAFUNCTION!k1=5; k2=5;m1=2; m2=2;w1=5; w2=5;L1=2; L2=2;x10=L1; x20=L1+w