Plot in MATlab

Marvin1
Ciao a tutti
stavo provando a fare grafici con Matlab tramite il "plot" ma non riesco a fare grafici di polinomi.
faccio un esempio riportando il codice:

per esempio io vorrei plottare la parabola $x^2$
x = (0 : 0.01 : 5)
y = x^2
plot(x,y)


facendo questo dichiaro un vettore che va 0 a 5 con passo 0.01,successivamente
la y viene calcolata semplicemente facendo il quadrato.

PROBLEMA:
Matlab considera x come un vettore di cui calcola "alla seconda"
quindi non mi restituisce un vettore con i valori al quadrato bensi il quadrato del vettore (procedura che poi si blocca in quanto la matrice non è quadrata).

cosa strana però se invece faccio

x = (0 : 0.01 : 5)
y = sin(x)
plot(x,y)


in questo caso mi disegna la mia bella sinusoide.

cmq io vorrei capire come far disegnare la mia semplicissima parabola,oppure grafici di altre funzioni polinomiali.

qualcuno sa dove sbaglio e come posso fare?

Marvin

Risposte
_nicola de rosa
"Marvin":
Ciao a tutti
stavo provando a fare grafici con Matlab tramite il "plot" ma non riesco a fare grafici di polinomi.
faccio un esempio riportando il codice:

per esempio io vorrei plottare la parabola $x^2$
x = (0 : 0.01 : 5)
y = x^2
plot(x,y)


facendo questo dichiaro un vettore che va 0 a 5 con passo 0.01,successivamente
la y viene calcolata semplicemente facendo il quadrato.

PROBLEMA:
Matlab considera x come un vettore di cui calcola "alla seconda"
quindi non mi restituisce un vettore con i valori al quadrato bensi il quadrato del vettore (procedura che poi si blocca in quanto la matrice non è quadrata).

cosa strana però se invece faccio

x = (0 : 0.01 : 5)
y = sin(x)
plot(x,y)


in questo caso mi disegna la mia bella sinusoide.

cmq io vorrei capire come far disegnare la mia semplicissima parabola,oppure grafici di altre funzioni polinomiali.

qualcuno sa dove sbaglio e come posso fare?

Marvin


se non erro il quadrato di un vettore si fa in tal modo:
se x è il vettore il suo quadrato è
x.^2 cioè vicino alla x vettore ci vuole un punto. Se non erro è così, ma basta digitare l'help per togliersi i dubbi.
Infatti anteponendo il punto all'elevazione si ottiene un'operazione puntuale, cioè elemento per elemento; se non si mette il punto allora l'operazione è la moltiplicazione del vettore per se stesso e matlab dà l'errore per incompatibilità dimensionale. In realtà se non si vuole usare la notazione col punto si puo definire il trasposto del vettore x ( con l'apice:x')e si fa il prodotto con x:
cioè x*x' è equivalente a x.^2.
Comunque ti conviene sempre usare il punto.

Marvin1
si in effetti così funziona!

...ma come mai la funzione seno non ha bisogno di essere scritta come sin(x.)?

Marvin

_nicola de rosa
"Marvin":
si in effetti così funziona!

...ma come mai la funzione seno non ha bisogno di essere scritta come sin(x.)?

Marvin

La risposta è legata al fatto che l'elevazione può indurre nell'errore: infatti bisogna sapere se si vuole un'operazione puntuale e quindi inserire il punto oppure si vuole la classica moltiplicazione matriciale.
In realtà credo che facendo sen(x.) non dovresti avere problemi. Prova un poco. Comunque la spiegazione è quella che ti ho fornito: infatti una delle operazioni fondamentali attraverso cui si può migliorare un'immagine ad esempio è la classe delle operazioni puntuali (quelle col punto).

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.