Symbolic solution of Transcendental equation
6 次查看(过去 30 天)
显示 更早的评论
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
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 个评论
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
Hi,
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')
assumptions
[sol, param, cnd] = solve(eq, 'ReturnConditions', true)
gives:
ass =
[ in(t, 'real'), 0 < g, 0 < k, 0 < l, 0 < t, in(g, 'real'), in(k, 'real'), in(l, 'real')]
sol =
-(k*sin(g*l))/(g*cos(g*l))
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
Stephan
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!