Grafico di due funzioni

di il
2 risposte

Grafico di due funzioni

Buongiorno, non riesco a capire quali siano i comandi Matlab da inserire nel Command Window affinchè il programma stampi in una sola figura il grafico di due funzioni.(mi serve come controllo di un esercizio matematico e dunque deve essere un processo veloce)
ho provato cosi, ma mi stampa i grafici su 2 figure diverse.
f=@(x)2*x.^2+1;
        figure;
       fplot(f,[0,9])
       grid on
       
g=@(x) log(3*x);
figure;
fplot(g,[0,9])
grid on
Grazie

2 Risposte

  • Re: Grafico di due funzioni

    Sarebbe più efficiente, rapido e ri-usabile se scrivessi gli script in un file ".m" in modo che poss essere riutilizzato ogni volta che occorre (fatte salve eventuali modifiche, ovviamente).

    Ottieni due figure perchè chiami due volte la funzione "figure" (che appunto apre una finestra per il grafico).
    Puoi inserire più grafici nella stessa figura (nello stesso sistema di assi) chiamando al funzione "figure" una sola volta ed inserendo l'istruzione "hold on" tra le due chiamate alla funzione "fplot".

    Di default, se tra due chiamate a funzioni che creano dei grafici, MatLab cancella dal sistema di assi il grafico eventualmente già presente a favore del successivo.

    Un'alternativa che potrebbe essere è utilizzare la funzione subplot che consente di creare, in una singola figura più sistemi di assi cartesiani nei quali plottare i grafici.
    Nel tuo caso, questa soluzione sembra preferibile perchè il range di valori assunti dalle due funzioni è molo diverso; rappresentandole nello stesso sistema cartesiano, l'andamento della funzione "g" (con valori tra -6 e 3) risulta "schiacciato e poco visibile rispetto alla funzione "f" (valori tra 0 e 160).

    Una terza possibilità potrebbe essere usare la funzione plotyy o, se hai una versione di MatLab >= 2016a la funzione yyaxis che permette di avere un sistema di assi cartesiani con due scale di ordinate.

    Di seguito una possibile implementazione delle tre soluzioni:
    
    figure
    f=@(x)2*x.^2+1;
    g=@(x) log(3*x);
    figure;
    fplot(f,[0,9],'r')
    hold on
    fplot(g,[0,9],'b')
    legend('f=@(x)2*x.^2+1','g=@(x) log(3*x);')
    grid on
    
    figure
    f=@(x)2*x.^2+1;
    g=@(x) log(3*x);
    figure;
    subplot(2,1,1)
    fplot(f,[0,9],'r')
    legend('f=@(x)2*x.^2+1')
    subplot(2,1,2)
    fplot(g,[0,9],'b')
    legend('g=@(x) log(3*x);')
    grid on
    
    figure
    f=@(x)2*x.^2+1;
    g=@(x) log(3*x);
    x=0:.01:9;
    [hAx,hLine1,hLine2]=plotyy(x,f(x),x,g(x))
    ylabel(hAx(1),'f(x)') % left y-axis 
    ylabel(hAx(2),'g(x)') % right y-axis
    
    
  • Re: Grafico di due funzioni

    Grazie mille: per il mio utilizzo la prima soluzione è più che valida.
Devi accedere o registrarti per scrivere nel forum
2 risposte