Matlab - Grafica en 3D
Hola a todos, quiero realizar un grafico en 3D sobre el dominio de la superficie [ -2, 2]x[-2,2], les dejo lo realizado: function grafico x=-2:0.5:2; y=-2:0.5:2; [X,Y]=meshgrid(x,y); Z= log(1-(X.^2)/4-(Y.^2)/4)/(X.*Y) surf(X,Y,Z) end Por indicarme donde esta mi error, gracias por su ayuda. También te puede interesar...
Hola José; El mensaje de error hace referencia de que la matriz Z, tiene elementos complejos y nulos, lo cual hace imposible que se puedan graficar. x=-2:0.5:2;
y=-2:0.5:2;
[X,Y]=meshgrid(x,y);
Z= log(1-(X.^2)/4-(Y.^2)/4)/(X.*Y)
surf(X,Y,Z)
Warning: Matrix is singular to working precision.
Z =
NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi
NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi
NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi
NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi
NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi
NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi
NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi
NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi
NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi NaN + NaNi
??? Error using ==> surf at 78
X, Y, Z, and C cannot be complex.Espero que sea de alguna ayuda. Saludos Dave Correa correa.dave30@gmail.com Servicios de Programación Matlab http://fismatlab.blogspot.com/
Hola Dave, gracias por el comentario, no habrá una manera que no realice la división en los puntos que están sobre el eje X e Y, y sobre los puntos que forman la circunferencia de radio 2. Con algún condicional tal vez, como cuando se gráfica con una variable en los puntos de discontinuidad. Y vuelvo a repetir gracias por tus comentarios.
Hola José; He notado dos cosa en tu programa; 1) Es necesario que coloques un punto en el termino la ultima división. 2) El rango contiene valores negativos, por lo tanto es de esperar que el log de esos valores sean complejos, quizas una opción es que evalues trabajar con otra función.
clc
x = -2:0.5:2;
y = -2:0.5:2;
[X,Y] = meshgrid(x,y);
A = (X.^2)/4;
B = (Y.^2)/4;
C = X.*Y;
Z = ( 1 - A - B )./C
surf(X,Y,Z)
Z =
-0.2500 -0.1875 -0.1250 -0.0625 NaN 0.0625 0.1250 0.1875 0.2500
-0.1875 -0.0556 0.1250 0.5000 -Inf -0.5000 -0.1250 0.0556 0.1875
-0.1250 0.1250 0.5000 1.3750 -Inf -1.3750 -0.5000 -0.1250 0.1250
-0.0625 0.5000 1.3750 3.5000 -Inf -3.5000 -1.3750 -0.5000 0.0625
NaN -Inf -Inf -Inf Inf Inf Inf Inf NaN
0.0625 -0.5000 -1.3750 -3.5000 Inf 3.5000 1.3750 0.5000 -0.0625
0.1250 -0.1250 -0.5000 -1.3750 Inf 1.3750 0.5000 0.1250 -0.1250
0.1875 0.0556 -0.1250 -0.5000 Inf 0.5000 0.1250 -0.0556 -0.1875
0.2500 0.1875 0.1250 0.0625 NaN -0.0625 -0.1250 -0.1875 -0.2500Espero que sea de alguna ayuda. Saludos Dave Correa correa.dave30@gmail.com Servicios de Programación Matlab http://fismatlab.blogspot.com/
Gracias Dave, el programa quedo así: function grafico x=-1.4:0.3:1.4; y=-1.4:0.3:1.4; [X,Y]=meshgrid(x,y); Z= log(1-(X.^2)/4-(Y.^2)/4)./(X.*Y) surf(X,Y,Z) end me falto el punto luego de la división, , además de acotar un poco más el dominio de la función,gracias por tu ayuda, Dave.
Hola José; Me da gusto que hayas logrado solucionar tu problema. Cualquier cosa adicional te recomiendo mis servicios de programación. Saludos Dave Correa correa.dave30@gmail.com Servicios de Programación Matlab http://fismatlab.blogspot.com/ como elevar una matriz al cuadrado graficar desde dos menus |