Ecco un nuovo capitolo a questa guida su Octave
Grafici (2D)
In Octave è possibile creare grafici in modo molto semplice utilizzando il comando plot. Un esempio è sicuramente più che esplicativo:
x=linspace(0,10); %genera valori su cui valutare la funzione, vettore delle ascisse y=x.*cos(x)/2; %valutiamo la funzione nei punti definiti prima, vettore delle ordinate plot(x,y);
Ovviamente è possibile passare diversi paramatri con il comando plot, se volevamo una linea rossa è tratteggiata avremmo dovuto dare il comando
plot(x,y,'r--') %per altre opzioni date il comando doc plot
(così imparate un poco a usare il doc, che può davvero salvare in molte situazioni).
Vale la pena menzionare però un altro paio di comandi, che si possono dare subito dopo aver disegnato la funzione.
Il comando “grid”, dato dopo il comando plot(…) aggiunge le linee di griglia, mentre il comando “hold on” permette di disegnare più grafici sullo stesso foglio. Per smettere di disegnare grafici sullo stesso foglio basta dare “hold off”. Oppure, sempre per disegnare più grafici sullo stesso foglio, li si può passare entrambi sotto lo stesso plot(…), ecco un paio di esempi:
x=linspace(0,10); y1=x.*cos(x); y2=sin(x); plot(x,y1,'r' , x,y2,'b');
oppure:
x=linspace(0,10); y1=x.*cos(x); plot(x,y1,'r'); hold on y2=sin(x) plot(x,y2,'b') hold off
Funzioni
Abbiamo già visto per il disegnare i grafici, come possiamo creare delle funzioni da disegnare. In sostanza abbiamo creato dei vettori con i valori valutati nei punti sul quale era definita la funzione.
Se però, oltre a disegnarla con una funzione dobbiamo anche lavorarci, sapere per quali punti passa potrebbe non bastare.
Attraverso il comando inline è possibile definire una generica funzione, ad esempio:
f=inline('sin(x).*x', 'x')
Se diamo il comando “whos” potremo infatti vedere che a f non è associato un numero, bensì una funzione.
Se adesso, come prima vogliamo disegnare la nostra funzione, possiamo operare nel seguente modo:
x=linspace(-5,5); y=f(x); plot(x,y)
Grafici (3D)
Quando ci ritroviamo a disegnare un grafico in 3 dimensioni dobbiamo distinguere se stiamo per andare a disegnare una curva, oppure una superficie, due oggetti che vengono trattati in modo distinto.
Se vogliamo disegnare una curva, possiamo adottare la seguente sintassi
t=linspace(0,20*pi,1000); plot3(cos(t).*t, sin(t).*t,t);
Se invece vogliamo disegnare una superficie abbiamo bisogno di due variabili una x e una y. I grafici possiamo disegnarli come nel se
guente esempio con la funzione mesh
x=y=linspace(-2*pi,2*pi,40); [X,Y]=meshgrid(x,y); Z=sin(X).*sin(Y); mesh(X,Y,Z)
oppure, al posto di mesh(X,Y,Z) possiamo dare il comando surf(X,Y,Z)
Polinomi
Abbiamo visto come definire una funzione generica attraverso il comando inline, nel caso di polinomi è però possibile considerare un’altra sintassi.
Supponiamo di avere un polinomio di grado n (cioè con il primo coefficente diverso da 0)
allora possiamo rappresentarlo attraverso il vettore dei coefficienti di dimensione n+1.
Se vogliamo valutare il polinomio in un punto, possiamo fare così:
p=[2 3 4 0] x=2; w=polyval(p,x)
Se vogliamo invece disegnare un grafico, allora possiamo valutarlo in un vettore di punti, ad esempio:
p=[-3 0 -1 2]; x=linspace(-5,5); plot(x, polyval(p,x));
Mentre per la somma di due polinomi basta sommare due vettori (osservando che devono avere la stessa lunghezza, si può usare ad esempio la function polyadd), per il prodotto esiste una function apposita:
p=[-3 0 -1 2]; q=[1 -3]; conv(p,q)
Per calcolare la funzione derivata e la funzione integrale esistono i comandi appositi polyint e polyder.
Come al solito, ecco alcuni esercizi e le relative soluzioni.





Il Bloggatore
LinuxFeed
Pupugnao
Smilla Magazine
Tuxfeed