Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function frank(c)
- % Frank Hausaufgaben 24.4. und 8.5.13 Sei z = f(x, y) = (x2+y2)^2−c(x2−y2) mit einer Konstanten c ∈ R gegeben.
- %Schreiben Sie eine MATLAB function Frank(c), die mit disp den Definitionsbereich
- %von f ausgibt, die alle kritischen Punkte, Minima und Extrema
- %von f bestimmt und mit disp sprechend ausgibt und die den Graphen von
- %f so visualisiert, daß alle kritischen Punkte rot, alle Minima weiß und alle
- %Maxima schwarz markiert und sichtbar sind. Per default sei c = 2.
- if nargin == 0
- c = 2;
- end
- clc; format compact;
- disp('Der Definitionsbereich ist ganz R.^2')
- syms x y real
- f = (x.^2+y.^2)^2-c*(x.^2-y.^2);
- fx = diff(f,x); fy = diff(f,y);
- sln = solve(fx,fy);
- ezsurfc(@(x,y) ((x.^2+y.^2)^2-c*(x.^2-y.^2))); hold on;
- for i=1:numel(sln.x)
- hesse = hessian(f, [x,y]);
- dslnx = double(sln.x(i,1)); dslny = double(sln.y(i,1));
- hesse = subs(hesse, x, sln.x(i,1)); hesse = subs(hesse, y, sln.y(i,1));
- eigen = double(eig(hesse));
- if((any(eigen<0))==1)
- disp([' Alle Eigenwerte sind positiv --> Minimum im kritischen Punkt: ','(',num2str(double(sln.x(i,1))),'|',num2str(double(sln.y(i,1))),')'])
- hdl = plot3(dslnx,dslny, (dslnx.^2+dslny.^2)^2-c*(dslnx.^2-dslny.^2), 'wx');
- elseif((any(eigen<0))==0)
- disp([' Alle Eigenwerte sind negativ --> Maximum im kritischen Punkt: ','(',num2str(double(sln.x(i,1))),'|',num2str(double(sln.y(i,1))),')'])
- hdl = plot3(dslnx,dslny, (dslnx.^2+dslny.^2)^2-c*(dslnx.^2-dslny.^2), 'bx');
- elseif((any(eigen<0))==0 && (any(eigen<0))==1)
- disp([' Kritischer Punkt: ','(',num2str(double(sln.x(i,1))),'|',num2str(double(sln.y(i,1))),')'])
- hdl = plot3(dslnx,dslny, (dslnx.^2+dslny.^2)^2-c*(dslnx.^2-dslny.^2), 'rx');
- end
- end
- set(hdl); hold off;
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement