我不确定这个问题是否适合这个问题,但是我需要计算一个大振幅摆的速度,用我当前的代码得到一个正弦图。
问题在于,如果我增加质量,钟摆的周期会变小,这不应该在真正的钟摆中发生,因为周期与质量无关;加速度随着质量的增加而增加,但加速度的阻力也会增加,我不知道如何编码。
我已经尝试过研究角动量,但我的物理知识非常有限。我有这个:
long double timeFrame = 0.01;
if(getNewAngle==true)
{
//Convert to radians.
myAngle = Angle*M_PI/180;
getNewAngle = false;
//Velocity starts at 0.
myVelocity = 0;
}
//Setup starting variables.
long double dLength = std::stod(Length,0);
long double dGravity = std::stod(Gravity,0);
long double dMass = std::stod(Mass,0);
long double dPeriod = std::stod(Period,0);
//Large amplitude pendulum acceleration formula
long double dAcceleration = -dMass*dGravity/dLength*sin(myAngle);
//Angular displacement formula;
long double dDisplacement = myVelocity*timeFrame+0.5*dAcceleration*pow(timeFrame,2);
myVelocity = dDisplacement/timeFrame;
myAngle = myAngle + dDisplacement;
答案 0 :(得分:0)
此:
//Large amplitude pendulum acceleration formula
long double dAcceleration = -dMass*dGravity/dLength*sin(myAngle);
不正确。它应该是这样的:
//Large amplitude pendulum acceleration formula
long double dAcceleration = -dGravity/dLength*sin(myAngle);
没错,质量不会进入(除非你开始考虑空气阻力)。