Getting only one root for a quadratic function with mutiple variables

조회 수: 26 (최근 30일)
Zee
Zee 2019년 7월 10일
댓글: John D'Errico 2019년 7월 10일
I am facing an issue finding the parameter ‘a’ that gives the least square difference (LSD) between two function:
f(x,y,n,g,a)= ((1-exp(-g*(x*y^n))) / (1-exp(-g)))
q(x,y,n,g,a)= ((a+1-sqrt((1+a)^2-(4*a*(((1-exp(-g*(x))) / (1-exp(-g))))*( ((1-exp(-g*(y^v))) / (1-exp(-g)))))))/(2*a))
LSD(x,y,n,g,a) = (f(x,y,n,g,a)-q(x,y,n,g,a))^2
However, when I do the differentiation and set it to 0, I do not get two values of the parameter ‘a’ even that the function is quadratic. Anyone knows how to solve this issue?
The code I used:
>> syms x y n g a
f(x,y,n,g,a)= ((1-exp(-g*(x*y^n))) / (1-exp(-g)))
q(x,y,n,g,a)= ((a+1-sqrt((1+a)^2-(4*a*(((1-exp(-g*(x))) / (1-exp(-g))))*( ((1-exp(-g*(y^v))) / (1-exp(-g)))))))/(2*a))
LSD(x,y,n,g,a) = (f(x,y,n,g,a)-q(x,y,n,g,a))^2
D=diff(LSD,a)
Parameter=solve(D,a)
f(x, y, n, g, a) =
(exp(-g*x*y^n) - 1)/(exp(-g) - 1)
q(x, y, n, g, a) =
(a - ((a + 1)^2 - (4*a*(exp(-g*x) - 1)*(exp(-g*y^v) - 1))/(exp(-g) - 1)^2)^(1/2) + 1)/(2*a)
LSD(x, y, n, g, a) =
((exp(-g*x*y^n) - 1)/(exp(-g) - 1) - (a - ((a + 1)^2 - (4*a*(exp(-g*x) - 1)*(exp(-g*y^v) - 1))/(exp(-g) - 1)^2)^(1/2) + 1)/(2*a))^2
D(x, y, n, g, a) =
2*(((2*a - (4*(exp(-g*x) - 1)*(exp(-g*y^v) - 1))/(exp(-g) - 1)^2 + 2)/(2*((a + 1)^2 - (4*a*(exp(-g*x) - 1)*(exp(-g*y^v) - 1))/(exp(-g) - 1)^2)^(1/2)) - 1)/(2*a) + (a - ((a + 1)^2 - (4*a*(exp(-g*x) - 1)*(exp(-g*y^v) - 1))/(exp(-g) - 1)^2)^(1/2) + 1)/(2*a^2))*((exp(-g*x*y^n) - 1)/(exp(-g) - 1) - (a - ((a + 1)^2 - (4*a*(exp(-g*x) - 1)*(exp(-g*y^v) - 1))/(exp(-g) - 1)^2)^(1/2) + 1)/(2*a))
Warning: The solutions are valid under the following conditions: exp(g) ~= 1 & ((0 < real(n) | n == 0) & (0 < real(v) | v == 0)
| y ~= 0) & exp(g)*exp(2*g*x*y^n) + exp(g*y^v)*exp(g*x)*exp(2*g*x*y^n) + exp(g*y^v)*exp(g*x)*exp(g)*exp(g*x*y^n) ~=
exp(g*y^v)*exp(g*x)*exp(g*x*y^n) + exp(g*y^v)*exp(g)*exp(2*g*x*y^n) + exp(g*x)*exp(g)*exp(2*g*x*y^n) & (4*(exp(-g*x) -
1)*(exp(-g*y^v) - 1)*(exp(g)*exp(2*g*x*y^n) - exp(g*y^v)*exp(g*x)*exp(g*x*y^n) + exp(g*y^v)*exp(g*x)*exp(2*g*x*y^n) -
exp(g*y^v)*exp(g)*exp(2*g*x*y^n) - exp(g*x)*exp(g)*exp(2*g*x*y^n) + exp(g*y^v)*exp(g*x)*exp(g)*exp(g*x*y^n)) + (exp(-g) -
1)^2*((exp(g)*exp(2*g*x*y^n) - exp(g*y^v)*exp(g*x)*exp(g*x*y^n) + exp(g*y^v)*exp(g*x)*exp(2*g*x*y^n) -
exp(g*y^v)*exp(g)*exp(2*g*x*y^n) - exp(g*x)*exp(g)*exp(2*g*x*y^n) +
exp(g*y^v)*exp(g*x)*exp(g)*exp(g*x*y^n))/(exp(g*y^v)*exp(g*x)*exp(g) - exp(g*y^v)*exp(g*x)*exp(g*x*y^n) +
exp(g*y^v)*exp(g*x)*exp(2*g*x*y^n) - exp(g*y^v)*exp(g*x)*exp(g)*exp(g*x*y^n)) - 1)^2*(exp(g*y^v)*exp(g*x)*exp(g) -
exp(g*y^v)*exp(g*x)*exp(g*x*y^n) + exp(g*y^v)*exp(g*x)*exp(2*g*x*y^n) - exp(g*y^v)*exp(g*x)*exp(g)*exp(g*x*y^n)) ~= 0 | exp(g) +
exp(2*g*x*y^n) == exp(g*x*y^n) + exp(g)*exp(g*x*y^n)).
To include parameters and conditions in the solution, specify the 'ReturnConditions' option.
> In solve>warnIfParams (line 508)
In solve (line 357)
Parameter =
-(exp(g)*exp(2*g*x*y^n) - exp(g*y^v)*exp(g*x)*exp(g*x*y^n) + exp(g*y^v)*exp(g*x)*exp(2*g*x*y^n) - exp(g*y^v)*exp(g)*exp(2*g*x*y^n) - exp(g*x)*exp(g)*exp(2*g*x*y^n) + exp(g*y^v)*exp(g*x)*exp(g)*exp(g*x*y^n))/(exp(g*y^v)*exp(g*x)*exp(g) - exp(g*y^v)*exp(g*x)*exp(g*x*y^n) + exp(g*y^v)*exp(g*x)*exp(2*g*x*y^n) - exp(g*y^v)*exp(g*x)*exp(g)*exp(g*x*y^n))
  댓글 수: 1
John D'Errico
John D'Errico 2019년 7월 10일
A quadratic is of the form:
a1*x^2 + a2*x + a3
What you have written has square roots of functions of a in it, you divde by a.
In what mathematics is what you have written quadratic? Just because you call something a quadratic does not make it so.

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Physics에 대해 자세히 알아보기

태그

제품


릴리스

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by