Disegnare superficie in matlab

mascalzone87
buongiorno a tutti,
vorrei disegnare in matlab la superficie descritta dalla seguente equazione:

$( frac{M}{0.726})^{2}+( frac{V}{0.48} )^{2}-N^{2}( 1-frac{N}{3824})^{1.9}=0$

ho provato con il comando "surface" ma non ottengo il risultato sperato. :(

Grazie mille in anticipo.

Risposte
mascalzone87
"TeM":
[quote="mascalzone87"]Vorrei disegnare in MatLab la superficie descritta dalla seguente equazione:
$ ( frac{M}{0.726})^{2}+( frac{V}{0.48} )^{2}-N^{2}( 1-frac{N}{3824})^{1.9}=0 $

Nella Command Window copia-incolla il seguente codice:

[V,M,N] = ndgrid(linspace(-3,3,100),linspace(-3,3,100),linspace(-3,3,100));
f = (M/0.726).^2+(V/0.48).^2-N.^2.*(1-N/3824).^1.9;
isosurface(M,V,N,f,.01);
axis equal
xlabel('M')
ylabel('V')
zlabel('N')

e clicca Invio; così facendo otterrai il plot desiderato. ;)[/quote]

intanto ti ringrazio davvero per la risposta!
mi proponi una strada sicuramente molto interessante. ho provato ed ottengo il seguente risultato (ho ridotto l'asse N a solo valori positivi perché non mi serve definire la superficie per valori negativi di N).

Purtroppo il risultato non è ancora quello sperato. Dovrei ottenere une superficie dove l'asse verticale è M, e quindi il piano "di base" è N-V.

Inoltre la superficie sembra cava nel plot invece dall'equazione io dovrei ottenere, per soli valori di N positivi, una sorta di ovoide centrato rispetto all'asse M. (ovvero metà per M positivi e metà per M negativi)

riesci a darmi qualche altra dritta?

mascalzone87
Grazie ancora per l'aiuto che mi stai dando!

solo che ancora non riesco a capire :cry: ...ad esempio l'immagine che posto è presa da un articolo dove appunto, tra le altre cose, si plotta l'equazione che ho riportato sopra (solo con alcuni assi nominati diversamente H stampato= V della mia equazione, V stampato= N della mia equazione). Come è possibile che si ottengono risultati così diversi???

grazie,

cordiali saluti.


mascalzone87
"TeM":
Per plottare in MatLab quanto riportato nella seguente figura:


supponendo \(H_x' = H_y'\), \(M_y' = M_x'\) è sufficiente copia-incollare nella Command Window il seguente codice:

[H,V,M] = ndgrid(linspace(-0.2,0.2,100),linspace(0,1,100),linspace(-0.2,0.3,100));
f = (7.40.*H.^2 + 16.33.*M.^2)./(V.*(1 - V)).^2 - 1;
isosurface(V,H,M,f,.01);
axis equal
xlabel('V')
ylabel('H')
zlabel('M')

In Wolfram Mathematica 10 si ottiene questo. E' ciò che desideravi? :-)


finalmente le cose iniziano ad essermi decisamente più chiare, ti ringrazio! :D

L'unica cosa mi piacerebbe vedere il plot in maniera un po' diversa, tipo quella che postavi tu o anche quella dell'articolo, ovvero con un effetto tipo mesh e soprattutto eleminando il piano verticale. mi puoi suggerire qualche opzione in matlab? il mio plot viene così:

mascalzone87
"TeM":
[quote="mascalzone87"]L'unica cosa mi piacerebbe vedere il plot in maniera un po' diversa, tipo quella che postavi tu o anche
quella dell'articolo, ovvero con un effetto tipo mesh e soprattutto eliminando il piano verticale.

A parte il fatto che il codice di cui sopra mi porta a questo plot, ove non vi è alcun piano, per ottenere delle mesh come quelle di cui sopra, ti consiglio di parametrizzare tale superficie e lanciare nella Command Window il seguente codice:

[phi theta] = meshgrid(0:.1:2*pi,0:.1:2*pi);
H = eval(vectorize('sin(2*phi)^2*cos(theta)/(4*sqrt(7.40))'));
V = eval(vectorize('cos(phi)^2'));
M = eval(vectorize('sin(2*phi)^2*sin(theta)/(4*sqrt(16.33))'));
surf(V,H,M)
xlabel('V')
ylabel('H')
zlabel('M')

Così facendo si ottiene un plot di questo tipo, come richiesto. :-)[/quote]

Scusami se intervengo solo ora! ...si è esattamente quanto mi serviva, grazie mille per il tuo aiuto! :D

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