Help with syms function. Unable to find explicit solution
1 view (last 30 days)
Show older comments
Tyler Bodnarik
on 18 Oct 2020
Edited: John D'Errico
on 18 Oct 2020
I'm trying to solve for a variable that is on both sides of an equation.
T = 10;
h = 20;
g = -9.81;
syms L
eq = L == ((g)*(T)^2/(2*pi)) * tanh((2*pi*h)/L); % to solve for L
WL = solve(eq,L);
Wave_Length = vpa(WL);
Matlab is unable to find the explicit solution any ideas for how to fix this?
0 Comments
Accepted Answer
John D'Errico
on 18 Oct 2020
Edited: John D'Errico
on 18 Oct 2020
Would you assume that every equation you write down hs an analytical solution? Why would you?
T = 10;
h = 20;
g = -9.81;
syms L
First, let me write the equation as an expression, instead of an equality. This way we can plot it, and then look for a zero crossing.
eq = -L + ((g)*(T)^2/(2*pi)) * tanh((2*pi*h)/L); % to solve for L
fplot(eq)
And what we see is a "function that crosses y==0 around L == 0, but as you approach L == 0, you divide by L. Therefore you have a singularity at L==0, exactly where the curve crosses zero.
No solution exists, because your expression is undefined at L == 0. So no, you cannot fix this. Nor can you solve for it. This is not a question of you not understanding how to use solve properly. It is a question of applying solve to something where no solution exists.
When something strange happens, PLOT IT!!!!!!!! Plot everything! Then when you have plotted everything you can think of, try plotting something else. And think about what you see there.
0 Comments
More Answers (1)
David Hill
on 18 Oct 2020
Graphing helps.
T = 10;
h = 20;
g = -9.81;
L=-.001:.000001:.001;
y=((g)*(T)^2/(2*pi)) * tanh((2*pi*h)./L) -L;
plot(L,y);
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!