
%
%	% Matlab-Programm zu Aufgabe 1.2 a)
%
%  Dieses Programm zeichnet eine Funktion z=f(x,y) in 
%  Grafikfenster 1 und ihre Hoehenlinien in Fenster 2.
%
figure(1)		%	erstes Grafikfenster

%  Dazu wird ein Gitter erzeugt, 
%  auf dem die Funktionswerte berechnet werden.
x=-2:0.2:2;		%	Gitter auf der x-Achse
y=-2:0.2:2.5;     	%	Gitter auf der y-Achse
[X,Y]=meshgrid(x,y);	%	erzeugt ein Gitter in der xy-Ebene
 %	Ein Problem beim Zeichnen sind die zum Teil sehr grossen 
 %	Funktionwerte. Da sie stoeren, werden alle Funktionswerte,
 %	die groesser als 5 sind, auf 5 gesetzt.
Z=min(X.^2.*Y.^2+(X.^2-1).^2,5);

mesh(X,Y,Z);		%	Zeichnen der Funktionswerte

hold on
 title('Aufgabe 1.2 a)');
 xlabel('(Hoehenlinien in Figure 2)');
 view(-10,50)		%	waehlt einen anderen Blickwinkel auf das Bild.
			%	Standard ist view(-37.5,30)
 plot3([-1,1],[0,0],[0,0],'r*');	%	strikte globale Minima
 plot3([0,0],[-sqrt(2),sqrt(2)],[1,1],'ko');	%	Sattelpunkte

%
%	%	Legende
%
 h=3;links=-1.8; rechts=-2+0.3; zeilenabs=1;
 zeile=6;
 plot3(links,h,zeile,'ko');text(rechts,h,zeile,'           Sattelpunkt');
 zeile=zeile-zeilenabs;
 plot3(links,h,zeile,'r*');text(rechts,h,zeile,' striktes globales Minimum');
hold off

% - - - - - - - - - - - Zeichnen der Hoehenlinien - - - - - - - - - - - - -	
figure(2)		%	zweite Grafikfenster;

x=-2:0.03:2;		%	Gitter auf der x-Achse
y=-2:0.03:2;     	%	Gitter auf der y-Achse
[X,Y]=meshgrid(x,y);	%	erzeugt ein Gitter in der xy-Ebene
Z=X.^2.*Y.^2+(X.^2-1).^2;

contour(X,Y,Z,[0.01,0.3,0.7,1,1.001,2]); % Hoehenlinien zeichnen

hold on
 title('Aufgabe 1.2 a), Hoehenlinien');
 xlabel('(In Figure No.1 ist die Funktion gezeichnet.)');
 plot([-1,1],[0,0],'r*');		%	strikte globale Minimum
 plot([0,0],[-sqrt(2),sqrt(2)],'ko');	%	Sattelpunkt
 plot([0,0],[-sqrt(2),sqrt(2)],'m--');	%	lokale Maxima, nicht strikt	
 plot([0,0],[-2,-sqrt(2)],'r--');	%	lokale Minima, nicht strikt
 plot([0,0],[sqrt(2),2],'r--');		%	lokale Minima, nicht strikt

%
%	Legende
%
%	Kasten:
 links=0.25; rechts=2.15; oben=2; unten=1.2;
 fill([links,rechts,rechts,links,links],[unten,unten,oben,oben,unten],'w');
 plot([links,rechts,rechts,links,links],[unten,unten,oben,oben,unten],'k');
%       Text:
 links=0.33; rechts=0.4; zeile=1.9; zeilenabs=0.2; l=-0.05;
 plot([links-l,links+l],[zeile,zeile],'m--');
	text(rechts,zeile,'  lokale Maxima, nicht strikt');
 zeile=zeile-zeilenabs;
	plot(links,zeile,'ko');text(rechts,zeile,'           Sattelpunkt');
 zeile=zeile-zeilenabs;
	plot([links-l,links+l],[zeile,zeile],'r--');
	text(rechts,zeile,'  lokale Minima, nicht strikt');
 zeile=zeile-zeilenabs;
	plot(links,zeile,'r*');text(rechts,zeile,' globales striktes Minimum');

hold off













