Matlab Error: “The solutions are parametrized by the symbols” when solving an Equation

4 views (last 30 days)
Here you can better see the equation i'm trying to solve. It's one hyperbolic equation of an ellipse with one unknown variable. I know the result to be +-0.508, but i want to calculate it with Matlab. It's my first time solving an intricate equation in Matlab.
So i input the following code in Matlab R2014a:
>> syms epsilon
>> eqn = (-0.089455)^2 / ( sinh(0.2*asinh(1/epsilon)) )^2 + (0.9900671)^2 / (cosh(0.2*asinh(1/epsilon)) )^2 == 1;
>> solve(eqn, epsilon)
and i get the following output:
Warning: The solutions are parametrized by the symbols:
z2 = Dom::ImageSet((5*log(z1))/2 + 10*PI*k*I, [k, z1], [Z_, RootOf(z^4 - (284839362933894611*z^3)/72057594037927936 + (208168816378854957*z^2)/36028797018963968 -
(284839362933894611*z)/72057594037927936 + 1, z)]) minus Dom::ImageSet(PI*k*I, k, Z_) union Dom::ImageSet(5*log(-z1^(1/2)) + 10*PI*k*I, [k, z1], [Z_, RootOf(z^4 -
(284839362933894611*z^3)/72057594037927936 + (208168816378854957*z^2)/36028797018963968 - (284839362933894611*z)/72057594037927936 + 1, z)]) minus Dom::ImageSet(PI*k*I, k, Z_)
> In solve at 190
ans =
1/sinh(z2)
No matter what i do i can't make this to work. It's very strange. Any help will be greatly appreciated. Thanks in advance.

Accepted Answer

Walter Roberson
Walter Roberson on 17 Sep 2015
There is no error there: it is a warning.
You should have a look at 'ReturnConditions' and 'MaxDegree'
It does not really make sense to be asking for a closed form solution for equations that involve floating point values. You should be considering using vpasolve() instead of solve()
  3 Comments
Walter Roberson
Walter Roberson on 17 Sep 2015
In your code, -0.089455 means "approximately -0.089455" in floating point, not "exactly 89455/1000000". The actual representation is going to be close to -0.089455000000000006732392421326949261128902435302734375 . And those 0.2 ? They are approximately 0.200000000000000011102230246251565404236316680908203125 .
Meanwhile, asinh and cosh are nonlinear functions. Small differences in the input may get magnified quite a bit.
solve() is for finding closed-form solutions when possible, solutions that are infinitely precise. What is the point of asking for infinitely precise solutions to problems whose values are only approximate?
vpasolve() find approximate solutions, with the limit of the approximation determined by your current Digits setting. vpasolve() will often only find one solution, unless it can determine that a polynomial is involved, in which case it will find the solutions for each of the roots (including, usually, the complex ones.) If it cannot determine that then it only finds a single value. solve() on the other hand attempts to find all of the values.

Sign in to comment.

More Answers (0)

Products

Community Treasure Hunt

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

Start Hunting!