Matlab - Grafica en 3D

 
Vista:

Grafica en 3D

Publicado por Jose (3 intervenciones) el 23/02/2012 08:59:55
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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Grafica en 3D

Publicado por Dave (1094 intervenciones) el 23/02/2012 16:05:03
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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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
[email protected]
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Grafica en 3D

Publicado por Jose (3 intervenciones) el 23/02/2012 20:20:57
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.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Grafica en 3D

Publicado por Dave (1094 intervenciones) el 23/02/2012 20:58:20
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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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.2500



Espero que sea de alguna ayuda.

Saludos
Dave Correa
[email protected]
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Grafica en 3D

Publicado por Jose (3 intervenciones) el 24/02/2012 11:04:30
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.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar