Funzioni matematiche e grafici

17 03 2011

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)
a_n*x^n+a_{n-1}*x^{n-1}+...+a_1*x+a_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.


Azioni

Informazione

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s