2017-10-08 2 views

Répondre

0

Matlab a besoin d'un meshgrid pour tracer des données 3D en tant que surface. Cependant, votre fonction permet des racines négatives, résultant en des résultats complexes pour z. Cela ne peut pas être représenté avec précision par un tracé 3D. Pour mieux voir la surface, je recommande d'utiliser surf(X,Y,z(X,Y)) mais surf ne peut pas gérer les entrées complexes.

x = -3:0.1:3; 
y = x; 
[X,Y] = meshgrid(x,y); 
z = @(x,y) sqrt(9-x.^2-y.^2); 
plot3(X,Y,z(X,Y)); 
0

Un moyen rapide est d'utiliser fsurf (ou ezsurf dans les versions Matlab avant R2016a) avec un anonymous function. Cependant, cette option permet moins de contrôle que la création manuelle de la grille et l'appel surf comme dans Dennis Klopfer's answer.

fsurf(@(x,y) sqrt(9-x.^2-y.^2), [-3 3 -3 3]) 

enter image description here