% Gráfica de una función f de R^2 en R. El dominio de graficación
% es un rectángulo [a,b]x[c,d].
% ENTRADA: f,a,b,c,d, NumPuntosX,NumPuntosY
%  f = función que se  grafica
%  a= límite inferior para las abscisas del rectángulo
%  b= límite superior para las abscisas del rectángulo
%  c= límite inferior para las ordenadas del rectángulo
%  d= límite superior para las ordenadas del rectángulo
%  NumPuntosX= Número de puntos usados para discretizar el intervalo [a,b]
%  NumPuntosY= Número de puntos usados para discretizar el intervalo
%  [c,d]
%      
% 
% NOTA: La función f se especifica en la forma @(x,y)Definición
% Por ejemplo si la funcón está dada por x^2-xy*exp(-x^2+y)
% f se especifica como @(x,y) x.^2-x.*y.*exp(-x.^2+y)

% Multiplicaciones, divisiones y potencias se especifican como:
%   Multiplicación:  .*  
%   División:   ./   
%   Potencias: .^  
%  
%  Si es multipicación o división por una contante el punto puede omitirse.  
% Uso:  GraficaSobreRectangulo(f,a,b,c,d, NumPuntosX,NumPuntosY)
%
% Ejemplo: Graficar f(x,y)=(1-x^2-y^2)exp(-x^2-y^2) en un rectángulo de 
% [-2,2]x[-2,2] usando 50 puntos para las abscisas y 60 puntos para
% las ordenadas.
% En la línea de comando escribir:
%
%  grafica_sobre_rectangulo(@(x,y) (1-x.^2-y.^2).*exp(-x.^2-y.^2),-2,2,-2,2,50,60)
%
% Si se desea ver la gráfica sin mallado, escribir:
% shading interp
% Si se desea cambiar la paleta de colores, usar alguna de:
% colormap gray, colormap copper, colormap jet, colormap pink, etc (ver
% help colormap)

function []=grafica_sobre_rectangulo(f,a,b,c,d, NumPuntosX,NumPuntosY)

x=linspace(a,b,NumPuntosX);
y=linspace(c,d,NumPuntosY);
[x,y]=meshgrid(x,y);
z=f(x,y).*ones(NumPuntosY,NumPuntosX);
surf(x,y,z)
xlabel('eje x'); ylabel('eje y'); zlabel('eje z');