谐波振荡器没有振荡

时间:2016-03-21 05:19:12

标签: c++ simulation

我正在写一个谐振子程序,但它确实呈指数衰减,我不知道为什么。我有下面的代码。我使用F= -k xF = m a

我假设m = 1k = 1,所以a = -x

所以我找到速度和位置的方程是

v(t) = v(t-dt) - x(t-dt) * dt

x(t) = x(t-dt) + v(t-dt) * dt

我不确定我做错了什么

与此相关的代码是

#include <iostream>
#include <fstream>

using namespace std;

double updateX(double intialV, double intialX, double step);
double updateV(double intialV, double intialX, double step);

int main()
{
    long double position[2];long double velocity[2];
    position[0] = 0.0; velocity[0] = 1.0; double time = 0.0; double step = .1;
    ofstream outputFile;
    outputFile.open("velo1.dat");

    outputFile << time << " " << position[0] << " " << velocity[0] << "\n";

    for(int i = 1; i < 50; i++)
    {
        time = i * step;

        velocity[1] = updateV(velocity[0], position[0], step);
        position[1] = updateX(velocity[0], position[0], step);

        outputFile << time << " " << position[1] << " " << velocity[1] << "\n";

        velocity[0] = velocity[1];
        position[0] = velocity[1];

    }
    return 0;

    outputFile.close();
}

double updateX(double intialV, double intialX, double step)
{
    double stuff =(intialX + intialV * step); 
    return stuff;
}

double updateV(double intialV, double intialX, double step)
{
    double stuff =  (intialV - intialX * step) ;
    return stuff;
}

0 个答案:

没有答案