Two equations of two unknown angles
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Ravi N
el 23 de Feb. de 2021
Comentada: Ravi N
el 23 de Feb. de 2021
If I have:
A = 87; B = 65; C = 73; D = 92;
And the two equations are:
D*sin(200)+A*sin(x)+B*sin(y)=0;73+D*cos(200)+A*cos(x)+B*cos(y)=0
How do I write a code to find x and y?
What is the solution to this error?
2 comentarios
Respuesta aceptada
John D'Errico
el 23 de Feb. de 2021
Editada: John D'Errico
el 23 de Feb. de 2021
First, I would recognize that you PROBABLY intended 200 to be a number in DEGREES, not radians. (200 radians would seem to make little sense.) Therefore, you need to use sind and cosd, not sin and cos.
Since you know how to use solve, (sort of) I'll do it that way.
syms x y
A = 87; B = 65; C = 73; D = 92;
E1 = D*sind(200)+A*sind(x)+B*sind(y) == 0
E2 = 73+D*cosd(200)+A*cosd(x)+B*cosd(y) == 0
As you can see, sind and cosd convert the problem internally into one in radians. The x and y solutions will still be in the form of degrees though.
[xsol,ysol] = solve(E1,E2,x,y)
vpa(xsol)
vpa(ysol)
These will be angles in degrees, since I used sind and cosd. There are two primary solutions, but there are infinitely many solutions. We could add integer multiples of 360 degrees to those solutions.
1 comentario
Más respuestas (1)
David Hill
el 23 de Feb. de 2021
fun = @solution;
x0 = [0,0];
I = fsolve(fun,x0);%solution
function f = solution(x)
A=87;B=65;D=92;
f(1)=D*sin(200)+A*sin(x(1))+B*sin(x(2));
f(2)=73+D*cos(200)+A*cos(x(1))+B*cos(x(2));
end
Ver también
Categorías
Más información sobre Number Theory en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!