Discussione:
[Matlab] Problema teoricamente semplice: un piano nel 3D
(troppo vecchio per rispondere)
Andrea Giannuzzi
2008-05-13 21:09:27 UTC
Permalink
Ciao a tutti... Vorrei esporre un mio piccolo problema che, per quanto
semplice potrebbe sembrare, sono ore che cerci di risolvere...

Vorrei ottenere il grafico 3D di una semplice funzione lineare f(x).

Ho provato a dare:


[x]=meshgrid(0:0.5:20);

y=50-x;

surf(x,y);


ma ottengo sempre un piano inclinato rispetto all'asse z (mentre
naturalmente dovrebbe essere ad esso parallelo!
Loading Image...)... Come mai??
Come posso fare?

Vi ringrazio molto...
Andrea.
GiulioL
2008-05-14 20:49:21 UTC
Permalink
Post by Andrea Giannuzzi
Ciao a tutti... Vorrei esporre un mio piccolo problema che, per quanto
semplice potrebbe sembrare, sono ore che cerci di risolvere...
Vorrei ottenere il grafico 3D di una semplice funzione lineare f(x).
[x]=meshgrid(0:0.5:20);
y=50-x;
surf(x,y);
ma ottengo sempre un piano inclinato rispetto all'asse z (mentre
naturalmente dovrebbe essere ad esso parallelo!
http://img146.imageshack.us/img146/9710/79627491fp5.png)... Come mai??
Come posso fare?
Vi ringrazio molto...
Andrea.
Scusa, non capisco:
matlab mette sulla z i valori di f.
Se il piano fosse parallelo a z non avresti una funzione.
Se intendevi dire "perpendicolare", sarebbe una funzione costante.
Il piano inclinato è esattamente quello che *io* mi sarei aspettato...
--
===================================
(x^2+y^2-25)*
*(|(|x|-2)^2+(y-2)^2-1|+2-y+|2-y|)*
*(|x^2+(y+2)^2-1|+y+2+|y+2|) = 0
GiulioL
2008-05-14 21:08:25 UTC
Permalink
Post by GiulioL
matlab mette sulla z i valori di f.
Se il piano fosse parallelo a z non avresti una funzione. Se intendevi
dire "perpendicolare", sarebbe una funzione costante. Il piano inclinato
è esattamente quello che *io* mi sarei aspettato...
Acc... Pensare prima di parlare!
No, hai ragione.
Il fatto è che surf vuole 3 valori, il terzo è la matrice dei valori.
d'altra parte meshgrid produce una matrice a colonne costanti.

prova
[x]=meshgrid(0:0.5:20);
y=(50-x)';
#'è la trasposizione, in modo che y abbia *righe* costanti
surf(x,y,x+y);
#nota che se vuoi il grafico di f(x,y)=x*y devi scrivere
surf(x,y,x.*y);
#perché x e y sono *matrici* e devi usare la moltiplicazione puntuale .*
#non quella matriciale *
#prova il "portauovo"
surf(x,y,sin(x)+sin(y));

#Ciao!
--
===================================
(x^2+y^2-25)*
*(|(|x|-2)^2+(y-2)^2-1|+2-y+|2-y|)*
*(|x^2+(y+2)^2-1|+y+2+|y+2|) = 0
Loading...