clear all ;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Bestämmer nätet med värdena av oberoende variabler.

x = -1:0.1:1 ;
y = x ;
[X,Y] = meshgrid(x,y) ;

%%%%%%%%%%%%%%%%%  Anges av elever %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
% Beräkningen av funktions värden:

F =  0.5*(X.^2 - Y.^2) ;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Rita funktionsytan med normaler 
 
   surfnorm(X,Y,F) ;

   hold on ;
%%%%%%%%%%%%%%%%%%  Anges av elever %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Ange i vilken punkt (x0,y0,z0) du vill bestämma tangentplanet.

  x0 = 0.5 ; 
  y0 = 0.6 ; 
  z0 = (1/2)*(x0^2 -y0^2);

%%%%%%%%%%%%%%%%%%  Anges av elever %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% storlek av kvadraten på tangentplanet för att rita 

  dd = 0.4 ;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%  Hörnpunkter av kvadraten på tangentplanet

  dX = [ dd ; -dd ; - dd ;  dd ] ;
  XX = x0*ones(4,1) +dX ;
  dY = [ dd;  dd;   -dd ;  - dd  ];
  YY = y0 * ones(4,1) + dY ;

%%%%%%%%%%%%%%%%%%%  Anges av elever  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% dzdx - partiella derivata av z med avseende på x i punkten (x0,y0)
% dzdy - partiella derivata av z med avseende på y i punkten (x0,y0)
% z0 - värdet av funktionen i punkten (x0,y0)

  dzdx =   x0 ;
  dzdy =  -y0 ; 
  
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% ekvationen till tangentplanet till funktionsytan i punkten (x0,y0,z0)

  ZZ = dzdx * dX  + dzdy * dY  + z0 * ones(4,1); 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% rita tangentplanet och punkten ( x0, y0, z0)
 
   fill3(XX, YY, ZZ, 'b');

   plot3(x0,y0,z0 + eps, '*y')

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 

% Gör skalor på axlarna likadana

  axis equal ;
