Matlab permette di disegnare facilmente dei grafici
La prima cosa da fare è costruire una nuova “figura”:
figure
apre una nuova finestra…In molti casi, questo passaggio può essere saltato
figure
automaticamenteSupponiamo di volere costruire un grafico cartesiano
Per prima cosa dobbiamo costruire il vettore delle x
Possiamo usare linspace
:
x = linspace(-2*pi, 2*pi, 200)
Quindi scrivendo:
…Si ottiene lo stesso risultato, ma senza stampe
Ora otteniamo il vettore con i valori per l’asse delle y
Calcoliamo per esempio la funzione “seno”
x
…sin
opera elemento per elementoIn questo modo otteniamo:
sin
…x
A questo punto possiamo disegnare il grafico
Si utilizza la funzione plot
plot
riceve come argomento due vettori (coordinate x e y)Avremmo anche potuto scrivere direttamente:
Si può anche specificare un colore:
plot
per altri dettagli!Si può aggiungere una griglia con:
Per disegnare più curve sovrapposte:
figure() % Nuova figura
plot(x, sin(x), 'b') % Prima curva, in blu
hold on % Attiva la modalità "hold"
plot(x, cos(x), 'g') % Seconda curva, in verde
hold off % Disattiva la modalità "hold"
hold
ogni plot rimpiazza il precedenteDisegnate, per x∈[−4,4] le seguenti funzioni:
(1)x2−x(2)11+|x|(3)11+e−x(4)1x|x|
Prima di disegnarle, cercate di intuire se sono:
E quindi verificatelo visivamente
Soluzione:
x = linspace(-4, 4, 200); % Notate il ;
plot(x, x.^2 - x) % Cont., derivabile, conv.
plot(x, 1./(1 + abs(x))) % Cont., non derivabile
plot(x, 1./(1 + exp(-x))) % Cont., derivabile
plot(x, 1./(x.*abs(x))) % Non cont., non derivabile
0
la funzione non è definita…plot
li congiunge con una lineaConsideriamo la serie armonica (troncata):
SN=N∑n=11n
Vogliamo verificare empiricamente che SN diverge per N→∞
Consideriamo la serie armonica (troncata):
SN=N∑n=11n
Vogliamo verificare empiricamente che Sn diverge per N→∞
Osservazione fondamentale:
SN=SN−1+1N
Una possibile implementazione (nello start-kit):
Dato un vettore di valori x:
Come procedere:
Vediamo tre metodi (nel file my_sin_cos.m
)…
Primo metodo: concatenazione di colonne
sin(x)
e cos(x)
restituiscono un vettore rigaAvremmo potuto anche usare:
Secondo metodo: concatenazione di righe (una per una)
y2
aggiungendo una rigaTerzo metodo: assegnamento di righe (una per una)
i
e :
)Consideriamo la serie geometrica (troncata):
SN=N∑n=0arn
Vogliamo verificare empiricamente che Sn converge se r<1, per N→∞
Osservazione fondamentale:
SN=SN−1+arN
Svolgete l’esercizio nel file di script my_geometic.m
Nel file di script my_msum
:
A
e B
di esempio, con la stessa dimensioneConfrontate il vostro risultato con quello dell’operatore +
di Matlab
Abbiamo visto che Matlab permette di accedere ad un vettore con:
V
è un vettoreI
è un vettore di indiciNel file di script my_index.m
:
X
di dati ed un vettore I
di indiciY
con gli elementi di X
…I
Confrontate il vostro risultato con quello di Matlab
Il valore di ex si può calcolare sfruttando la serie di Taylor:
SN=N∑k=0xkk!
Vogliamo verificarlo empiricamente che SN→ex quando N→∞:
factorial(k)
Come nel caso della serie armonica, vale:
SN=SN−1+xNN!
Svolgete l’esercizio nel file di script my_exponential.m
Il valore di sin(x) si può calcolare sfruttando la serie di Taylor:
SN=N∑k=0−1kx2k+1(2k+1)!
Vogliamo verificarlo empiricamente:
Come nel caso della serie armonica, vale:
SN=SN−1+−1Nx2N+1(2N+1)!
Svolgete l’esercizio nel file di script my_sin.m
Dati due vettori x ed y di n elementi, il loro prodotto cartesiano è:
(x1y1x1y2⋮⋮xny1⋮⋮xnyn)
Nel file di script my_cartesian.m
: