Why isn't this solve working?
2 views (last 30 days)
Show older comments
Joshua D'Agostino
on 20 Jan 2015
Commented: Star Strider
on 20 Jan 2015
I'm trying to get out 2 values for an angle, gamma:
gamma = asin((sqrt(1 + d^2)*sin(a))/r)
is the formula for the angle. I understand that asin simply returns the principle value, and so if I want to get out 2 values I's have to solve sin(gamma) = ... etc.
I just can't get it to work. Here's my code:
syms gamma
r = 0.3584;
d = 0.6342;
l = degtorad(10);
b = degtorad(40);
a = (b - atan(d))^2 + l^2 % just how it's defined; these are all just details anyway
S = solve('sin(gamma) = (sqrt(1 + d^2)*sin(a))/r',gamma)
and here is the output:
Error using solve>processString (line 354)
' sin(gamma) = (sqrt(1 + d^2)*sin(a))/r ' is not a valid expression or equation.
Error in solve>getEqns (line 284)
eqns = processString(eqns, v, vc);
Error in solve (line 160)
[eqns,vars,options] = getEqns(varargin{:});
How is that not a valid expression? I don't know where the problem is.
Thanks in advance for all help!
0 Comments
Accepted Answer
Star Strider
on 20 Jan 2015
This works (in R2014b) with no other changes in your code (other than my having to define my own deg2rad function):
degtorad = @(x) x.*pi/180;
S = solve(sin(gamma) == (sqrt(1 + d^2)*sin(a))/r,gamma)
producing:
S =
asin(2863908454326725/18014398509481984)
pi - asin(2863908454326725/18014398509481984)
or with:
S = vpa(S)
produces:
S =
0.15965626771650156828855864052742
2.9819363858732916701740847427521
2 Comments
Star Strider
on 20 Jan 2015
My pleasure!
You’re definitely not an idiot! None of us learned MATLAB by osmosis. We all have our share of error messages, crashed code, and logic statements that did exactly the opposite of what we intended. (I do, anyway!) Keep coding, and share your expertise here when you have the opportunity.
More Answers (0)
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!