MATLAB Answers

Symbolic solution of Transcendental equation

24 ビュー (過去 30 日間)
Andrea Monfredini
Andrea Monfredini 2019 年 3 月 24 日
コメント済み: John D'Errico 2019 年 3 月 24 日
Matlab symbolic toolbox can't seem to solve a "simple" equation in the form of
Here is my code:
syms g l k t;
eq = cos(g*l) + k/t/g*sin(g*l);
[sol, param, cnd] = solve(eq, g, 'ReturnConditions', true);
Even if i substitute numbers to those constants, it can't solve. Is there really impossible to avoid numerical solution?

  0 件のコメント


回答 (2 件)

John D'Errico
John D'Errico 2019 年 3 月 24 日
編集済み: John D'Errico 2019 年 3 月 24 日
Sorry. Not every equation you might choose to write down on paper has an analytical solution. Some forms arise sufficiently often that someone decides to create a special function that embodies the solution. I can think of a few special functions that fall into that category.
But I don't know of anyone who has done that for your equation, which can be simply rewritten using tan(g*l), nor do I know of an analytical solution. And neither MATLAB or Wolfram Alpha sees a solution, so they agree.
There will be infinitely many solutions in general, depending on the value of those parameters, and if they are real or not. (I assume so.) And you can reduce the problem to something of the general form
tan(x)/x + c = 0
for some fixed value of c. So even though there will be infinitely many solutions, they will not be obtained by adding some simple multiple of pi to gain the next solution. In general, the best you can do in that respect is to show that the consecutive solutions will differ by an amount that approaches pi as a limit.
In fact, I might even wonder if a proof might exist that the problem cannot have an analytical solution involving purely radicals - this due to the trancendental nature of pi. Just a wild guess there.
Lets see, what else? We could probably do something along the lines of a series expansion.
Does this mean you should not publish a paper on the subject? Go for it. ;-)

  2 件のコメント

Andrea Monfredini
Andrea Monfredini 2019 年 3 月 24 日
Thank you John, you guessed right and probably there is no easy way to get the solution, even simplifying the equation like you suggested. while i wait some pious mathematical soul that drops the analytical solution, i will go for the taylor and numerical way :D
John D'Errico
John D'Errico 2019 年 3 月 24 日
Personally, I think the name Monfredini/D'Errico for this special function has a nice ring to it. I'll even take second billing on the name. Its been a while since I published, but perhaps The Mathematics of Computation might be a good journal choice for this?
The funny thing is I have seen other people asking for a solution to the same equivalent problem on this site. I'm not sure if it has been homework at times or not.


Stephan 2019 年 3 月 24 日
try with assumptions:
syms g l k t;
eq = cos(g*l) + k/t/g*sin(g*l) == 0;
assume([g l k t],'real')
assumeAlso([g l k t],'positive')
[sol, param, cnd] = solve(eq, 'ReturnConditions', true)
ass =
[ in(t, 'real'), 0 < g, 0 < k, 0 < l, 0 < t, in(g, 'real'), in(k, 'real'), in(l, 'real')]
sol =
param =
Empty sym: 1-by-0
cnd =
~in((g*l)/pi, 'integer') & ~in((g*l)/pi - 1/2, 'integer') & cos(g*l)*sin(g*l) < 0
Best regards

  1 件のコメント

Andrea Monfredini
Andrea Monfredini 2019 年 3 月 24 日
Dear Stephan,
I am not sure how to interpret this result, but unfortunatelly is not exactly what i was looking for. As D'Errico said it seems that the problem is ill-stated to be solved in this manner.
Still i have to thank you for showing me how to restrict the solution space by imposing some assumptions, and you guessed well that all these quantities are real and positive.


Translated by