Solving trigonometric equations in MATLAB

4 views (last 30 days)
Hi there,
I am trying to solve these two equations;
r1.cos(x1)=r2+r3.cos(x2)+r4.cos(x3)
r1.sin(x1)=r5+r3.sin(x2)+r4.sin(x3)
r1,r2,r3,r4,r5 and x1 are known, x2 and x3 are the unknowns. I need to obtain x2 and x3 values according to changing x1 value (between 100 and 126 degree).
I am a begginner for MATLAB, could you please help me out?
Thanks in advance.

Accepted Answer

Birdman
Birdman on 24 Mar 2020
Try the following code. It should help you:
r1=1;r2=2;r3=3;r4=4;r5=5;%random values
x1=100:1:126;
syms x2 x3
for i=1:numel(x1)
eq1=r1*cos(x1(i))==r2+r3*cos(x2)+r4*cos(x3);
eq2=r1*sin(x1(i))==r5+r3*sin(x2)+r4*sin(x3);
sol(i)=vpasolve([eq1 eq2],[x2 x3]);
end
The solutions are stored in sol variable. You can reach them by typing
sol(1).x2
sol(1).x3
sol(2).x2
sol(2).x3
.
.
and so on.
  12 Comments
Kubilay AKPINAR
Kubilay AKPINAR on 26 Mar 2020
Edited: Kubilay AKPINAR on 26 Mar 2020
Hello again,
I am sorry for late response but your codes work perfectly, it was my fault, I have correct answers now. However, I am continuing to solve other problems just like the one I posted here by using your way but I am having another problem.
This is my code;
format short g
%Angle
ro2b=7.25; ro2d=1.85; ro4a=5.79; rab=1.43; ro4d=3.45;
th2=100:126;
syms x2 x3
th4=zeros(1,27);
th3=zeros(1,27);
for i=1:numel(th2)
eq1=ro2b*cosd(th2(i))==ro2d+ro4a*cosd(x2)+rab*cosd(x3);
eq4=ro2b*sind(th2(i))==ro4d+ro4a*sind(x2)+rab*sind(x3);
sol(i)=vpasolve([eq1 eq4],[x2 x3]);
end
for j=1:27
th4(1,j)=sol(j).x2;
th3(1,j)=sol(j).x3;
end
%Velocity
w2=4;
syms w3 w4
for t=1:numel(th2)
eq3=-ro2b*sind(th2(t))*w2==-ro4a*sind(th4(t,1))*w4-rab*sind(th3(t,1))*w3;
eq4=ro2b*cosd(th2(t))*w2==ro4a*cosd(th4(t,1))*w4+rab*cosd(th3(t,1))*w3;
sol(t)=vpasolve([eq3 eq4],[w3 w4]);%PROBLEM IS HERE
end
w3=zeros(27,1);
w4=zeros(27,1);
for a=1:27
w3(a,1)=sol(a).w3;
w4(a,1)=sol(a).w4;
end
I get correct results for theta2 theta3 and theta4 but when I try to solve another equation by using the same way I am having this error;
Subscripted assignment between dissimilar structures.
Error in Untitled2 (line 26)
sol(t)=vpasolve([eq3 eq4],[w3 w4]);
I did a search online but I couldn't understand answers, I think there's something different. Could you help me please?
Kubilay AKPINAR
Kubilay AKPINAR on 26 Mar 2020
I detected my mistake, I must use different names for this piece of code;
sol(i)=vpasolve([eq1 eq4],[x2 x3]);
sol(t)=vpasolve([eq3 eq4],[w3 w4]);
there are two "sol" matrices, that's the problem. I changed the second one as "solu" and the error disappeared. Thanks anyway.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!