Saltar al contenido

¿Cómo puedo trazar una función con dos variables en Octave o Matlab?

Posterior a de nuestra prolongada búsqueda de datos dimos con la solución este atolladero que presentan muchos usuarios. Te brindamos la respuesta y deseamos que sea de gran apoyo.

Solución:

Graficar una función de dos variables normalmente significaría una gráfica tridimensional; en MATLAB, usaría la función plot3 para eso. Para graficar su función f(x,y) en el intervalo [-10,10] tanto para X como para Y, puede usar los siguientes comandos:

x = [-10:.1:10];
y = [-10:.1:10];
plot3(x, y, x.^2 + 3*y)
grid on

En caso de que pueda ayudar a alguien… Corrí en Octave el código en la respuesta aceptada y obtuve este gráfico:

ingrese la descripción de la imagen aquí

Pero realmente quería la función para cada punto en el producto cartesiano de x e y, no solo a lo largo de la diagonal, así que usé la función de malla para obtener este gráfico 3D con las líneas de contorno proyectadas en el plano x, y:

x = [-10:.1:10];
y = [-10:.1:10];
[xx, yy] = meshgrid (x, y);
z = xx.^2 + 3*yy;
mesh(x, y, z)
meshc(xx,yy,z) 
xlabel ("x");
ylabel ("y");
zlabel ("f(x,y)");
title ("f(x,y) = x^2 + 3y");
grid on

ingrese la descripción de la imagen aquí

Para deshacerse de la textura de alambre de malla de la trama, la función navegar hizo el truco:

x = [-10:.1:10];    
y = [-10:.1:10];
[xx, yy] = meshgrid (x, y);
z = xx.^2 + 3*yy;
h = surf(xx,yy,z);
colormap hsv;
set(h,'linestyle','none');
xlabel ("x");
ylabel ("y");
zlabel ("f(x,y)");
title ("f(x,y) = x^2 + 3y");

ingrese la descripción de la imagen aquí

Otra forma de trazar es como un mapa de calor con líneas de contorno:

x = [-10:.1:10];
y = [-10:.1:10];
[xx, yy] = meshgrid (x, y);
z = xx.^2 + yy.*3;
contourf(xx,yy,z);
colormap hsv;
xlabel ("x");
ylabel ("y");
zlabel ("f(x,y)");
title ("f(x,y) = x^2 + 3y");
grid on

ingrese la descripción de la imagen aquí

Y para completar, los niveles se pueden etiquetar:

x = [-10:.1:10];
y = [-10:.1:10];
[xx, yy] = meshgrid (x, y);
z = xx.^2 + 3*yy;
[C,h] = contour(xx,yy,z);
clabel(C,h)
xlabel ("x");
ylabel ("y");
zlabel ("f(x,y)");
title ("f(x,y) = x^2 + 3y");
grid on

ingrese la descripción de la imagen aquí

Además de las excelentes respuestas de @Toni y @esskov, para futuros trazadores de funciones con dos variables, el contour y contourf funciones son útiles para algunas aplicaciones.

Gráficos de curvas de nivel y curvas de nivel rellenas

Código MATLAB (2018b):

x = [-10:.1:10];    
y = [-20:.1:20];
[xx, yy] = meshgrid (x, y);
z = xx.^2 + 3*yy;           % Borrowed 4 lines from @Toni

figure
s(1) = subplot(1,2,1), hold on  % Left Plot
    [M,c] = contour(xx,yy,z);   % Contour Plot
    c.ShowText = 'on';          % Label Contours
    c.LineWidth = 1.2;          % Contour Line Width
    xlabel('X')
    ylabel('Y')
    box on
s(2) = subplot(1,2,2), hold on  % Right Plot
    [M2,c2] = contourf(xx,yy,z);
    colorbar                    % Add Colorbar
    xlabel('X')
    ylabel('Y')
    box on
title(s(1),'Contour Plot')
title(s(2),'Filled Contour Plot')

Actualización: ejemplo agregado de surfc

Superficie 3D con contornos debajo

h = surfc(xx,yy,z)

Tienes la opción de asistir nuestro trabajo fijando un comentario y valorándolo te estamos agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *