Unable to find explicit solution, but I know a solution exists
4 ビュー (過去 30 日間)
古いコメントを表示
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:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/279258/image.png)
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?
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/279259/image.png)
5 件のコメント
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);
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/279481/image.jpeg)
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
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.
On the other hand, https://machinelearningmastery.com/analytical-vs-numerical-solutions-in-machine-learning/ describes
- 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 Center および File Exchange で Number Theory についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!