Borrar filtros
Borrar filtros

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

1 visualización (últimos 30 días)
Ayman Al-Sukhon
Ayman Al-Sukhon el 25 de Mzo. de 2020
Comentada: Walter Roberson el 26 de Mzo. de 2020
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 comentarios
John D'Errico
John D'Errico el 25 de Mzo. de 2020
Editada: John D'Errico el 25 de Mzo. de 2020
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 el 26 de Mzo. de 2020
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.

Iniciar sesión para comentar.

Respuestas (0)

Etiquetas

Productos


Versión

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by