Solving two equations with two unknows
5 views (last 30 days)
Show older comments
Mohammed Alsharif
on 13 Nov 2013
Answered: Roger Stafford
on 13 Nov 2013
Hi All,
I am trying to solve two equations I have with two unknowns using MATLAB, its not working with me. This is my code:
syms xC yC
a = 11.3;
b = 11.3;
A = [0 0];
B = [0 10];
xA = A(1)
yA = A(2)
xB = B(1)
yB = B(2)
b^2 = (xC -xA)^2 + (yC - yA)^2 % equation one
a^2 = (xC -xB)^2 + (yC - yB)^2 % equation two
how can I solve these two equations and find xC and yC?
Thanks in advance
0 Comments
Accepted Answer
Roger Stafford
on 13 Nov 2013
You could undoubtedly solve these two equations using 'solve' of the Symbolic Toolbox or 'fsolve' of the Optimization Toolbox. However, this is the classic problem of finding the two intersections of two circles which is well understood, and the following matlab code is very likely more efficient than either of these methods.
Let P1 and P2 be column vectors containing the coordinates of the two circles' centers - [xA;yA] and [xB;yB] in your case - and let r1 and r2 be the two respective radii. Then the two intersections of the circles are points Q1 and Q2 where Q1 lies off to the left and Q2 off to the right as you move from P1 toward P2.
P21 = P2-P1;
d2 = sum((P21).^2);
P0 = (P1+P2)/2+(r1+r2)*(r1-r2)/2/d2*P21;
Q0 = sqrt(((r1+r2)^2-d2)*(d2-(r1-r2)^2))/2/d2*[0,-1;1,0]*P21;
Q1 = P0+Q0;
Q2 = P0-Q0;
Note: For the above Q0 computation to work properly it is essential that P1 and P2 be column vectors, not row vectors. If they are row vectors, the Q0 code should be changed to its transpose:
Q0 = sqrt(((r1+r2)^2-d2)*(d2-(r1-r2)^2))/2/d2*P21*[0,1;-1,0];
0 Comments
More Answers (0)
See Also
Categories
Find more on Symbolic Math Toolbox 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!