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