Rewrite from Mathematica to MATLAB

2 visualizaciones (últimos 30 días)
Kseniia Kudriavtceva
Kseniia Kudriavtceva el 15 de Nov. de 2020
Comentada: Kseniia Kudriavtceva el 18 de Nov. de 2020
SO, I have this problem, which I solved for dynamics, but now I should write a code and then generate two plots. (5.38)
I found a solution in Mathematica software, but I can't figure out what am I doing wrong in MATLAB. Here's my code:
% Given
syms theta;
W_A=100;
m_A=W_A/32.2;
W_B=20;
m_B=W_B/32.2;
L=15;
theta_0= deg2rad(70);
% Solve the system of three equations
one = str2sym('W_A*L*(cos(theta)-cos(theta_0))-1/2*m_A*V_A^2-1/2*m_B*V_Bx^2+W_A*L');
two = str2sym('m_B*V_Bx+m_A*(V_Bx+L*theta_1*cos(theta))');
three = str2sym('-V_A^2+(V_Bx+ L*theta_1*cos(theta))^2+(L*theta_1*sin(theta))^2');
[theta_1,V_A,V_Bx] = solve(one,two,three);
% Plot the velocity of the trolley and the speed of the rider as a function of the angle θ of the first half of a full swing
fplot(V_Bx, [-70,70], 'Linewidth',2)
hold on
fplot(V_A, [-70,70], '-.*c')
hold off
% Plot the velocity of the trolley and the speed of the rider as a function of the angle θ of the second half of a full swing
fplot(V_Bx, [-70,70], 'Linewidth',2)
hold on
fplot(V_A, [-70,70], '-.*c')
hold off
Thank you so much in advance!!!

Respuestas (1)

Ameer Hamza
Ameer Hamza el 15 de Nov. de 2020
Editada: Ameer Hamza el 17 de Nov. de 2020
Following shows how to write this in MATLAB.
syms theta theta_1 V_A V_Bx;
W_A=100;
m_A=W_A/32.2;
W_B=20;
m_B=W_B/32.2;
L=15;
theta_0= deg2rad(70);
% Solve the system of three equations
one = W_A*L*(cos(theta)-cos(theta_0))-1/2*m_A*V_A^2-1/2*m_B*V_Bx^2+W_A*L;
two = m_B*V_Bx+m_A*(V_Bx+L*theta_1*cos(theta));
three = -V_A^2+(V_Bx+ L*theta_1*cos(theta))^2+(L*theta_1*sin(theta))^2;
[theta_1,V_A,V_Bx] = solve(one,two,three);
% Plot the velocity of the trolley and the speed of the rider as a function of the angle θ of the first half of a full swing
fplot(V_Bx, [-70,70], 'Linewidth',2)
hold on
fplot(V_A, [-70,70], '-.*c')
hold off
% Plot the velocity of the trolley and the speed of the rider as a function of the angle θ of the second half of a full swing
fplot(V_Bx, [-70,70], 'Linewidth',2)
hold on
fplot(V_A, [-70,70], '-.*c')
hold off
The above can take a long time to plot because there are 12 solutions given by solve() functions. To speed up the computation, you can convert the functions to numeric function handle using matlabFunction() and then use fplot().
  7 comentarios
Ameer Hamza
Ameer Hamza el 17 de Nov. de 2020
Editada: Ameer Hamza el 17 de Nov. de 2020
Yes, there was a theta missing in the first line. I have updated the answer. This graph is likely according to your equations.
Kseniia Kudriavtceva
Kseniia Kudriavtceva el 18 de Nov. de 2020
Nope, here's what I should get as a result

Iniciar sesión para comentar.

Categorías

Más información sobre Mathematics en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by