Buonasera,
ho un problema con alcuni grafici che mi servono per la mia tesi triennale in Ingegneria Meccanica. Non essendo, nella mia facoltà, l'esame di Calcolo Numerico un esame serio, e non avendoci dato peso io, non ho mai realmente imparato ad usare Matlab. Tutto ciò che segue è quindi opera mia e potrebbe presentare qualche errore.
Ho una funzione che risolve un sistema di due equazioni differenziali:
function [t,y]=valori(type)
a=340;
S=0.25;
x10=0.85;
U=144;
if (type == 1)
Ac=0.0034;
Vp=0.32;
Lc=0.3;
H=3.2613e4;
W=0.3689;
else
if (type == 2)
Ac=0.0033;
Vp=0.025;
Lc=1.22;
H=0.09e5;
W=0.1;
else
Ac=0.0090;
Vp=0.001;
Lc=2.8;
H=1.55e4;
W=0.1587;
end
end
[t,y]=greitzer2(a,Ac,Vp,Lc,U,H,W,x10,S);
end
function [t,y]=greitzer2(a,Ac,Vp,Lc,U,H,W,x10,S)
wh=a*sqrt(Ac/(Vp*Lc)); %trovo la frequenza di Helmoltz con cui adimensionalizzo il tempo
B=U/(2*wh*Lc); %trovo il parametro di Greitzer relativo alle dimensioni del mio compressore
k=x10-S*(x10-(1/3)*(x10.^3)); %trovo il parametro k che mi descrive la caratteristica della valvola
[t,y]=ode45(@(t,y)greitzer10(H,W,B,U,Ac,y,S,k),[0 100],[0,0]);
subplot(2,2,1)
plot(t,y(:,1))
xlabel('t')
ylabel('\phi_c')
subplot(2,2,2)
plot(y(:,1),y(:,2))
xlabel('\phi_c')
ylabel('\psi')
subplot(2,2,3)
plot(t,y(:,2))
xlabel('t')
ylabel('\psi')
end
function dydt = greitzer10(H,W,B,U,Ac,y,S,k)
dydt = [ ((3*H*Ac*B)/(W*U))*((y(1)-(1/3)*((y(1).^3)))-y(2)); ((W*U)/(3*H*Ac*B))*(y(1)-(S*y(2)+k)) ];
end
Fin qui torna tutto, il problema è che con la figura che si trova in subplot(2,2,2) devo plottare anche una nuova funzione
function y=carcomp(C0,H,x,W)
y=C0+H*(1+(3/2)*((x/W)-1)-(1/2)*(((x/W)-1).^3));
Ho provato ad utilizzare il comando hold on ma ciò che ottengo è che la funzione precedente viene riportata come una retta orizzontale.
Non so dove sbaglio, mi hanno detto che si tratta della scalature (?) che utilizzo nelle due funzioni, non compatibili tra di loro.
Qualcuno sa come aiutarmi?
Mi scuso in anticipo se ci fosse poca chiarezza o se ho infranto qualche regola, ma è il primo post che creo in un forum.
Quello che dovrebbe uscire fuori è una cosa di questo genere: