计算质量对加速度的阻力
Calculating a mass resistance to acceleration
我不确定这是否是回答这个问题的正确位置,但我需要计算一个大振幅摆的速度,使用我当前的代码它会产生一个正弦曲线图。
问题是如果我增加质量,摆的周期会变小,这在真实的摆中不应该发生,因为周期与质量无关;加速度随着质量的增加而增加,但加速度的阻力也会增加,我不知道如何编码。
我曾尝试研究 angular 动量,但我的物理知识非常有限。我有这个:
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;
这个:
//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);
没错,质量不进去(除非你开始考虑空气阻力)。
我不确定这是否是回答这个问题的正确位置,但我需要计算一个大振幅摆的速度,使用我当前的代码它会产生一个正弦曲线图。
问题是如果我增加质量,摆的周期会变小,这在真实的摆中不应该发生,因为周期与质量无关;加速度随着质量的增加而增加,但加速度的阻力也会增加,我不知道如何编码。
我曾尝试研究 angular 动量,但我的物理知识非常有限。我有这个:
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;
这个:
//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);
没错,质量不进去(除非你开始考虑空气阻力)。