Matlab and Pendulum function - Need Help - Thank you.
古いコメントを表示
function T= pendulum( L, a0 )
%PENDULUM Summary of this function goes here
% Detailed explanation goes here
%initializing variables
alpha = a0;
delta_t = 1*10^-6;
g = 9.8;
stop = false;
theta = a0;
t = 0;
omegalast =0
%Set stop = falsE so that loop stop isn't true at start
while stop == false;
%increment t for each step into loop
t = t+ delta_t;
%compute alpha using given formula
alpha = - g/L*sin(theta);
%compute omega as alpha times timestep, delta_t
omega = alpha*delta_t;
%theta is then theta plus omega times delta_t
theta = theta + omega*delta_t;
%check to see if pendulum speed has
%slowed down from the last timestep
%This indicatest that pendulum is now past the
%minimum point so stop program
if abs(omega) <abs(omegalast)
stop = true;
end
%IF THE SOFTWARE SHOULD STOP IT IS NOW SET TO DO SO
%SET OMEGALAST EQUAL TO OMEGA FOR CHECK IN NEXT TIME STEP
omegalast = omega;
end
%COMPUTE PERIOD AS 4 TIMES ELAPSED TIME TO BOTTOM OF PENDULUM
T = 4*t;
end
This isn't producing the right answers,and I don't know why. Perhaps a physic or math major can help me?
The problem is stated as:
* Write a function called pendulum that is called like this: T = pendulum(L,a0), where all arguments are scalars and a0 is a positive number less than π. The function calculates the period T of a simple pendulum, which is the time required for a weight attached to a rod of length L and negligible weight to start from rest, swing with no friction under the influence of gravity from an initial angle a0, to – a0 and back to a0 again, as shown in the figure. The motion is determined by physics using the following definitions, where units [square brackets] are provided but are not needed: θ = angle [radians]
採用された回答
その他の回答 (3 件)
Abid Rizvi
2018 年 2 月 16 日
Try this code:
function [T] = pendulum(L,a0)
T = 0;
if L > 0
dt = 1.e-6;
a_velocity = 0;
g = 9.8;
theta = abs(a0);
while theta > 0
a_acceleration = g*sin(theta)/L;
a_velocity = a_velocity + dt * a_acceleration;
theta = theta - dt * a_velocity;
T = T + dt;
end
T = T*4;
end
end
Huan Yang
2017 年 6 月 8 日
1 投票
function T=pendulum(L,a0) cta=a0; t=10^-6; w=0; T=0; while cta>0 T=T+t; a=-9.8/L*sin(cta); w=w+a*t; cta=cta+w*t; end
T=T*4;
end
1 件のコメント
Hasan Emre Tekce
2017 年 8 月 29 日
Thanks Huan Yang but there is a lil bit mistake in this code. In order to fix this code to work properly is to just add to while loop L~= 0 since the division cannot be infinite and this is exact solution.
....
while cta>0 && L~= 0 may fix your solution.
Weronika Izdebska
2018 年 9 月 4 日
0 投票
function T = pendulum(L,angle0) T = 0; if L > 0 dt = 1e-6; g = 9.8; angle = abs(angle0); omega = 0; T = 0; while angle > 0 a = g*sin(angle)/L; omega = omega + dt * a; angle = angle - dt * omega; T = T + dt; end T = T * 4; end end
カテゴリ
ヘルプ センター および File Exchange で Programming についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
