Unable to find explicit solution, but I know a solution exists

조회 수: 2 (최근 30일)
Ayman Al-Sukhon
Ayman Al-Sukhon 2020년 3월 25일
댓글: Walter Roberson 2020년 3월 26일
Hi,
I am solving a complex equation using the following code:
syms x h k l m n b c CTL eps_y g
eq = 2*((h.*x.^2)./eps_y).^(1/4) + m.*(((g.^(4*n)).*x.^(2*k*(1-n)+2*n*(l+2)))./((h.*eps_y^3).^2)).^(1/(4*k))...
== 2*x./(eps_y*CTL) + m.*(x.*g.*CTL^(k/(n-1))).^(n/k)
eq = rewrite(eq,'log');
solx = solve(eq, x, 'IgnoreAnalyticConstraints',1)
pretty(solx)
I know that an analytical solution exists, because when I plot the two functions I am equating w.r.t the variable x, they are intersecting. The paper I am following says the solution to this is the following:
I used Π = x and =CTL to make things simpler. My full code has all the values except for x, but I want a solution that is in terms of all the symbols. I also did try subbing in numbers that I know result in an intersection and it still cannot find a solution. Any suggestions what I can try?
  댓글 수: 5
John D'Errico
John D'Errico 2020년 3월 25일
편집: John D'Errico 2020년 3월 25일
Lambertw really is the perfect example.
syms x,
solve(x + exp(x) == 2,x)
ans =
2 - lambertw(0, exp(2))
So a solution exists, but only because a special function was created to yield one. There is no other algebraic solution, thus only in terms of radicals and elementary operations.
This means that even though you can see a solution, there may be no way to compute it analytically.
Another great example would be in the form of some 5th (or higher) degree polynomial.
syms x
P = randi(5,[1 6])
P =
1 1 2 5 1 5
P = dot(P,x.^(5:-1:0))
P =
x^5 + x^4 + 2*x^3 + 5*x^2 + x + 5
vpa(solve(P))
ans =
- 0.026642852245247853801004512805907 - 1.164802485283373680594682049458i
- 0.026642852245247853801004512805907 + 1.164802485283373680594682049458i
0.41584127815813601809947113687271 - 1.3777578385788797695485053192232i
0.41584127815813601809947113687271 + 1.3777578385788797695485053192232i
-1.7783968518257763285969332481336
P(x) has roots, exactly one of which is real. However we will not be able to write them in an algebraic form. We can clearly see them in a plot.
fplot(P,[-3,2])
yline(0);
But does that mean you can find an analytical solution for the roots? Sadly, Abel-Ruffini suggests we are most likely out of luck. You can see that real root right there though, clear as day, yet frustratingly unobtainable.
Finally, it is also sometimes the case where a solution DOES exist, yet it requires some intelligent mathematics to extract. I recall Cleve Moler writing a blog recently, where he manages to extract a solution for a problem, despite the failure of a brute force call to solve. Solvers are not perfect and omniscient. Sometimes they need some creative guidance.
Walter Roberson
Walter Roberson 2020년 3월 26일
For that matter, logarithm is not strictly considered analytic, in the sense of not being just "algebraic numbers". e is not an algebraic number.
  • An analytical solution involves framing the problem in a well-understood form and calculating the exact solution.
  • A numerical solution means making guesses at the solution and testing whether the problem is solved well enough to stop.
Something like logorithm involves an exact solution with well-understood calculation methods. But my example of sin(x)==exp(x) requires just guessing and narrowing in on correct values even though the graph is simple enough.

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

답변 (0개)

카테고리

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

태그

제품


릴리스

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by