% Grafer for funktioner af to variable
% Grafen for en funktion af to variable f(x,y), defineret på omr�det D, er 
% mængden af punkter (x,y,f(x,y)), hvor (x,y) ligger i D.

%% Eksempel: Grafen for funktionen 
% f(x, y) = x^2  + y^2 
% Funktionen er veldefineret for ethvert x og y. Vi afsætter derfor 
% punktmængden (x, y, x^2  + y^2) i rummet.

ezsurfc( 'x^2 + y^2', [-8, 8, -8, 8] );

%% Kontur- og niveaukurver

% Konturkurven for en given graf (x,y,f(x,y)) i højden z=k er givet ved 
% skæringen mellem grafen og planen z=k.
%
% Konturkurven består derfor af de punkter på grafen der ligger præcis i 
% højden k på z-aksen. Konturkurven er givet ved punkterne (x,y,k) hvor 
% (x,y) er i D og opfylder: f(x,y)=k.
%
% Vi ønsker at finde kontur kurven i højden z=36 for
% f(x, y) = x^2  + y^2 
% Vi får kurven givet ved (x,y,36), hvor (x,y) opfylder
% x^2  + y^2 = 36
% dvs. en cirkel med radius 6 og centrum (0,0,36) i planen z=36.

hold on
ezsurfc( 'x^2 + y^2', [-8, 8, -8, 8] );

ezsurfc( @(x,y) 36, [-8, 8, -8, 8] );
hold off

axis( [-8, 8, -8, 8, 0, 120] )

%% 
% Bemærk: kontur kurverne "lever" i rummet. Ønsker man et 2D-plot af 
% kontur-kurverne kan man forskyde dem til xy-planen.
% Foretager man en sådan projektion af kontur-kurverne til xy-planen får 
% man de såkaldte niveau-kurver.
% 
% I ovenstående tilfælde får man

ezcontour( 'x^2 + y^2', [-8, 8, -8, 8] );

%% Eksempel: z = x^2 - y^2

f = @(x, y) x.^2 - y.^2;
ezsurfc( f, [-4, 4, -4, 4] );

figure
ezcontour( f, [-4, 4, -4, 4] );

%% Eksempel: z = 3/4*y^2 + 1/24*y^3 - 1/32*y^4 - x^2

ezsurfc( '3/4*y^2 + 1/24*y^3 - 1/32*y^4 - x^2', [-5, 5, -5, 5] );

%% Eksempel: z = 2 + sin(sqrt(x^2 + y^2))

g = @(x,y) 2 + sin(sqrt(x.^2 + y.^2));

ezsurfc( g, [-8, 8, -8, 8] );

figure
ezcontour( g, [-8, 8, -8, 8] );

%% Eksempel: 10 - sqrt(x^2 + y^2)

h = @(x,y) 10 - sqrt(x^2 + y^2);

ezsurfc( h, [-7, 7, -7, 7] );

figure
ezcontour( h, [-7, 7, -7, 7] );
