Calculating max, min, and saddle points

As of right now, I'm dealing with an assignment which wants to calculate the max, min, and saddle point of a given function. On the bottom is my current code. The problem that I am facing is I am unable to create a loop where my eqA_double are able to read X and Y solutions from M.
if true
% code
end
function Local_ex(x,y,z)
syms x
syms y
a = ((y.*x^3)+(x.*y^3)-(1.69.*x.*y));
eqA_partial_diff_x = diff(a,x)
eqA_partial_diff_y = diff(a,y)
M = solve(eqA_partial_diff_x,eqA_partial_diff_y)
N = [M.x,M.y]
eqA_double_partial_diff_x = diff(eqA_partial_diff_x,x)
eqA_double_partial_diff_y = diff(eqA_partial_diff_y,y)
eqA_double_partial_diff_y_then_x = diff(eqA_partial_diff_y,x)

 Accepted Answer

madhan ravi
madhan ravi on 5 Oct 2018
Edited: madhan ravi on 5 Oct 2018
syms x y
a = ((y.*x^3)+(x.*y^3)-(1.69.*x.*y));
eqA_partial_diff_x = diff(a,x)
eqA_partial_diff_y = diff(a,y)
M = solve(eqA_partial_diff_x,eqA_partial_diff_y)
N = [M.x,M.y]
[m,n]=size(N)
eqA_double_partial_diff_x = diff(eqA_partial_diff_x,x)
eqA_double_partial_diff_y = diff(eqA_partial_diff_y,y)
eqA_double_partial_diff_y_then_x = diff(eqA_partial_diff_y,x)
x=N(:,1)
y=N(:,2)
eqA_double_partial_diff_x=subs(eqA_double_partial_diff_x)
eqA_double_partial_diff_y =subs(eqA_double_partial_diff_y)
eqA_double_partial_diff_y_then_x=subs(eqA_double_partial_diff_y_then_x)
%Determinant part
syms x y
a = ((y.*x^3)+(x.*y^3)-(1.69.*x.*y));
eqA_fx = diff(a,x)
eqA_fy = diff(a,y)
M = solve(eqA_fx,eqA_fy)
N = [M.x,M.y]
eqA_fxx = diff(eqA_fx,x)
eqA_fyy = diff(eqA_fy,y)
eqA_fyx = diff(eqA_fy,x)
D = eqA_fxx.* eqA_fyy - eqA_fyx^2
subs(D,{x,y},{N(:,1),N(:,2)})
Remark: You don’t need loop to read the values one by one instead you can substitute all the values at once

4 Comments

I realized and just used sub, but I'm confused on how to sub in the values for the discriminant
if true
% code
end
function Local_ex(x,y,z)
syms x
syms y
a = ((y.*x^3)+(x.*y^3)-(1.69.*x.*y));
eqA_fx = diff(a,x)
eqA_fy = diff(a,y)
M = solve(eqA_fx,eqA_fy)
N = [M.x,M.y]
eqA_fxx = diff(eqA_fx,x)
eqA_fyy = diff(eqA_fy,y)
eqA_fyx = diff(eqA_fy,x)
subs(eqA_fxx,{x,y},{M.x(1),M.y(1)})
subs(eqA_fxx,{x,y},{M.x(2),M.y(2)})
subs(eqA_fxx,{x,y},{M.x(3),M.y(3)})
subs(eqA_fxx,{x,y},{M.x(4),M.y(4)})
subs(eqA_fxx,{x,y},{M.x(5),M.y(5)})
subs(eqA_fxx,{x,y},{M.x(6),M.y(6)})
subs(eqA_fyy,{x,y},{M.x(1),M.y(1)})
subs(eqA_fyx,{x,y},{M.x(1),M.y(1)})
subs(eqA_fyx,{x,y},{M.x(2),M.y(2)})
subs(eqA_fyx,{x,y},{M.x(3),M.y(3)})
subs(eqA_fyx,{x,y},{M.x(4),M.y(4)})
subs(eqA_fyx,{x,y},{M.x(4),M.y(4)})
D = eqA_fxx.* eqA_fyy - eqA_fyx^2
sub(D,{x,y},{M.x(1),M.y(1)})
i think i got it lol
if true
% code
end
function Local_ex(x,y,z)
syms x
syms y
a = ((y.*x^3)+(x.*y^3)-(1.69.*x.*y));
eqA_fx = diff(a,x)
eqA_fy = diff(a,y)
M = solve(eqA_fx,eqA_fy)
N = [M.x,M.y]
[m,n]=size(N)
eqA_fxx = diff(eqA_fx,x)
eqA_fyy = diff(eqA_fy,y)
eqA_fyx = diff(eqA_fy,x)
d = eqA_fxx.*eqA_fyy - eqA_fyx^2
x=N(:,1)
y=N(:,2)
eqA_fxx = subs(eqA_fxx)
eqA_fyy = subs(eqA_fyy)
eqA_fyx = subs(eqA_fyx)
Answer_D= subs(d)
madhan ravi
madhan ravi on 5 Oct 2018
Edited: madhan ravi on 5 Oct 2018
Yes you got the point.See my edited answer above.
Thank you so much. Honestly thank you.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!