Graficare insieme due funzioni di dimensioni diverse da scalare

di il
2 risposte

Graficare insieme due funzioni di dimensioni diverse da scalare

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:

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte