Solving trigonometric equations in MATLAB

7 ビュー (過去 30 日間)
Kubilay AKPINAR
Kubilay AKPINAR 2020 年 3 月 24 日
コメント済み: Kubilay AKPINAR 2020 年 3 月 26 日
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.

採用された回答

Birdman
Birdman 2020 年 3 月 24 日
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 件のコメント
Kubilay AKPINAR
Kubilay AKPINAR 2020 年 3 月 26 日
編集済み: Kubilay AKPINAR 2020 年 3 月 26 日
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 2020 年 3 月 26 日
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.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSymbolic Math Toolbox についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by