You are not doing anything overtly wrong, except perhaps in the assumption that an analytical solution exists at all.
Of course MATLAB just does what it is asked to do, solve the system, or at least try to do so as hard as it can. So it grinds away, creating more and more complicated expressions, substituting one into the other. Could it have complex variable solutions? Of course, it does not care. JUST SOLVE THE THING.
Eventually, it decides to give up, and tries a numerical solver - vpasolve.
In fact, you would have been far better off to recognize in advance that the system surely has no analytical solution. And is there a reason you need super high precision accuracy in the solution anyway, when your parameters are defined with as little as 1 to 4 significant digits themselves?
So arguably, using fsolve would have been a reasonable choice here. Far faster. Or use the slower vpasolve. Skip the grind of telling solve to try to solve it though.
Note that no matter which numerical solver you try to use, fsolve or vpasolve, there will surely be multiple solutions. And the solution you get will depend on the starting values you choose. If you choose no starting values, then vpasolve will make its own arbitrary choice, but that does not mean this is the only solution. In fact, any time you have a complicated system of equations involving trig functions, it is almost certain that if at least one solution exists, then infinitely many solutions may also exist. In this case, I see that theta appears only inside calls to both sin and cos.
Now look at Theta, as it was found.
S.Theta
ans =
131.9546948417568318749204578266
Did it solve the problem?
vpa(subs(eqns,S2),5)
ans =
[ 7.7274 == 7.7274, 7.727 == 7.727, 14.27 == 14.27, 0.015606 == 0.015606, 3.0048 == 3.0048]
It seems to have done so. I only displayed 5 digits of course, but your parameters are known to only 3 digits, so really is there a good reason for more?
Next, I hope you realize, these are RADIANS, NOT degrees. That is a lot of radians. So, let me arbitrarily shoose a different solution.
S2 = S;
S2.Theta = S2.Theta - 2*pi;
vpa(subs(eqns,S2),5)
ans =
[ 7.7274 == 7.7274, 7.727 == 7.727, 14.27 == 14.27, 0.015606 == 0.015606, 3.0048 == 3.0048]
That seems to work just as well.
S2.Theta = rem(S2.Theta,2*pi);
vpa(S2.Theta)
ans =
0.0078033909855158594894357288618223
vpa(subs(eqns,S2),5)
ans =
[ 7.7274 == 7.7274, 7.727 == 7.727, 14.27 == 14.27, 0.015606 == 0.015606, 3.0048 == 3.0048]
As I said, infinitely many solutions. That was considering only Theta.