From: Jason on 17 Jul 2010 09:39 Hello. Consider the following example: >> syms a b c d e f >> syms x y now define two functions which are partial derivatives of another function f(x,y) fun1 = (4*d + 4*a*x + 4*b*y)*(a*x^2 + 2*b*x*y + 2*d*x + c*y^2 + 2*e*y + f) fun2 = (4*e + 4*b*x + 4*c*y)*(a*x^2 + 2*b*x*y + 2*d*x + c*y^2 + 2*e*y + f) If we now compute 'solve(fun1,fun2,x,y)' we should get the minimum, maximum and saddle points of the partial derivatives of f(x,y) in x and y. However if you look at the roots you will see that only the first 5 of 7 seem to be computed correctly. ans.x = (b*e - c*d)/(a*c - b^2) -(d + (b*(b*d - a*e + (a^2*e^2 - c*f*a^2 + f*a*b^2 - 2*a*b*d*e + c*a*d^2)^(1/2)))/(a*c - b^2))/a -(e + (c*(b*d - a*e + b*((f*b^2 - 2*b*d*e + c*d^2 + a*e^2 - a*c*f)/c)^(1/2)))/(a*c - b^2))/b -(e - (c*(a*e - b*d + b*((f*b^2 - 2*b*d*e + c*d^2 + a*e^2 - a*c*f)/c)^(1/2)))/(a*c - b^2))/b -(d - (b*(a*e - b*d + (a^2*e^2 - c*f*a^2 + f*a*b^2 - 2*a*b*d*e + c*a*d^2)^(1/2)))/(a*c - b^2))/a -(d + b*z - (b^2*z^2 + 2*b*d*z + d^2 - a*c*z^2 - 2*a*e*z - a*f)^(1/2))/a -(d + b*z + (b^2*z^2 + 2*b*d*z + d^2 - a*c*z^2 - 2*a*e*z - a*f)^(1/2))/a As you can see the 6th and 7th roots are: -(d + b*z - (b^2*z^2 + 2*b*d*z + d^2 - a*c*z^2 - 2*a*e*z - a*f)^(1/2))/a and -(d + b*z + (b^2*z^2 + 2*b*d*z + d^2 - a*c*z^2 - 2*a*e*z - a*f)^(1/2))/a MATLAB introduced a new symbol called 'z' Why does it do it? Is it maybe because the root is not defined / imaginary? What did MATLAB suddenly put a variable/symbol i haven't even defined in there? Many thanks, Jason
From: Walter Roberson on 17 Jul 2010 23:27 Jason wrote: > Consider the following example: >>> syms a b c d e f >>> syms x y > > now define two functions which are partial derivatives of another > function f(x,y) > > fun1 = (4*d + 4*a*x + 4*b*y)*(a*x^2 + 2*b*x*y + 2*d*x + c*y^2 + 2*e*y + f) > fun2 = (4*e + 4*b*x + 4*c*y)*(a*x^2 + 2*b*x*y + 2*d*x + c*y^2 + 2*e*y + f) > > If we now compute 'solve(fun1,fun2,x,y)' we should get the minimum, > maximum and saddle points of the partial derivatives of f(x,y) in x and y. > > However if you look at the roots you will see that only the first 5 of 7 > seem to be computed correctly. > As you can see the 6th and 7th roots are: > > -(d + b*z - (b^2*z^2 + 2*b*d*z + d^2 - a*c*z^2 - 2*a*e*z - a*f)^(1/2))/a > > and > > -(d + b*z + (b^2*z^2 + 2*b*d*z + d^2 - a*c*z^2 - 2*a*e*z - a*f)^(1/2))/a > > MATLAB introduced a new symbol called 'z' > > Why does it do it? z indicates a variable with an arbitrary value. Matlab has found a parametric solution. I'm not too surprised: when you have N multiplicative expressions in N variables, each expression equal to zero, then only the ratios need to be preserved.
|
Pages: 1 Prev: Question on 'solve' function and symlinks Next: DAE solution with ode15s |