Creazione Grafico

di il
5 risposte

Creazione Grafico

Buongiorno.
Vorrei implementare un codice che mi permetta di creare un grafico come quello in basso.
Grafico di esempio
Grafico di esempio

Per realizzare questo grafico io ho una funzione del tipo:
eta=f(varepsilon,nu)
Come dovrei impostare il tutto?

Vi ringrazio in anticipo

5 Risposte

  • Re: Creazione Grafico

    Quale è il problema?
    Cosa ritorna la funzione?

    Hai verificato la documentazione on-line?

    plot

    legend

    hold on
  • Re: Creazione Grafico

    Allora, il codice che ho in questo momento è il seguente:
    
    nu=0.25;
    phi=0.10;
    varepsilon=linspace(0,1.5,45);
    if varepsilon<0.6
        x=((1+nu)/2)+((sqrt(((1+nu^2)/2)-((1-nu)/2)))*(varepsilon/0.6))
    else x=(sqrt((1+nu^2)/2))+(0.5*((sqrt(((1+nu^2)/2)-((1-nu)/2))))*((varepsilon-0.6)/0.6));
    end
    cl=1;
    cd=0.012;
    cds=(0.018*(cl^2));
    sigh=1.2;
    ar=1.7;
    cda=((0.02)/(sigh*nu*ar));
    cdtip=(0.029*0.015*(cl^(1.5)));
    tanbeta1=1/(phi/(1-nu^2));
    tanbeta2=(1-(varepsilon.*(phi/(1-nu^2))))/(phi/(1-nu^2));
    tanbetam=0.5*(tanbeta1+tanbeta2);
    
    
    a=(((8/pi)*(phi./((1-nu^2).*x))).^-1);
    b=((8/pi)*((phi./((1-nu^2).*x))).*(1+((varepsilon.^2)/4)));
    c=varepsilon;
    d=(cl/(cd+cds+cds+cdtip));
    e=tanbetam;
    f=((2/pi)*(phi/((1-nu^2))));
    g=(2./x);
    h=((nu^2)./varepsilon)*(2-nu^2)*(0.4+(nu/2));
    etaaer=1-((a+b-c)/(d-e))-(f*g.*(varepsilon+h));
    
    figure
    plot(varepsilon,etaaer,'b')
    hold on
    grid on
    plot(varepsilon,etaaer, 'black', 'LineWidth', 2)
    axis([0 1.5 0 1]);
    set(gca, 'XTick',0 : 0.25 : 1.5);
    xlabel('\epsilon_s')
    ylabel('\eta_{aer}')
    title('Grafico')
    
    Non saprei come fare per il calcolo delle curve ad altri valori di nu nello stesso grafico.
  • Re: Creazione Grafico

    Non è chiaro perchè chiami die volte la funzione plot quando i valori di ascisse e ordinate non cambiano.
    Non saprei come fare per il calcolo delle curve ad altri valori di nu nello stesso grafico.
    Non è chiaro se il problema sia calcolare i valori o plottarli.

    Se devi calcolare e plottare gli output per diversi valori di "nu", bisognerebbe innanzi tutto definirli, dopo di che dovrebbe essere sufficiente racchiudere il codice all'interno di un ciclo "for".

    La chiamata alla funzione "figure" deve essere fatta prima del loop, in caso contrario verrebbe aperta una finestra per ogni caso.

    Per creare la legenda dovresti definire le stringhe per ogni grafico, direttamente "a mano" nella chiamata alla funzione "legend" o creando un cellarray di stringhe nel codice e passandolo in input alla funzione.
  • Re: Creazione Grafico

    Grazie, sono riuscito a farlo con facilità.
    AA.png
    AA.png

    Ultima domanda. Se adesso io volessi determinare, per una data curva (es. nu=0.25), il valore di epsilon nel punto più alto della curva eta come dovrei ragionare? Grazie in anticipo.
  • Re: Creazione Grafico

    Potresti provare con la funzione findpeaks oppure con la funzione fminsearch.

    La funzione fminsearch in realtà cerca i minimi, ma se moltiplichi per -1 i tuoi valori pupi trovare l'indice del punto di minimo che corrisponderà all'indice del punto di massimo; not l'indice, puoi risalire al valore
Devi accedere o registrarti per scrivere nel forum
5 risposte