0

Я выполняю экспериментальную программу. Мне нужно найти высоту из набора экспериментальных данных. Я записываю только данные о времени и ускорении, и я использовал метод Forward Euler для решения двойной интеграции. Код, который я написал, это.Метод Forward-Euler

public void forward_method(double[] acceleration, double[] time){ 
    double deltaT = time[1] - time[0]; 
    double velocity[] = new double[time.length]; 
    double displacement[] = new double[time.lenght]; 

    velocity[0] = 0; 
    displacement[0] = 0; 

    for(int i = 0; i < acceleration.length - 1; i++){ 
     velocity[i + 1] = velocity[i] * acceleration[i] * deltaT; 
     displacement[i + 1] = displacement[i] * velocity[i] * deltaT; 
    } 
} 

Правильно ли это для определения скорости и смещения? Как я могу изменить его, чтобы найти высоту?

+0

Вы пробовали что-нибудь, чтобы найти высоту? –

+0

Я читал о движении снаряда. Я не знаю, если это одно и то же приложение для моей проблемы, я записываю также значение угла ориентации из моего датчика, я думаю, что это полезно для моей проблемы. Потому что, если я делю вектор скорости вдоль его y компонентов: vyf = vyi-gt = vi sen Θi - gt и подставить g ai (которые представляют – traveller

+0

мое вертикальное ускорение в момент i), я считаю, что возвышение можно рассчитать как следует yf = (vi sen Θi) t - ½ ai t^2, но я не знаю, могу ли я заменить sen Θi на азимут сена в момент времени ti – traveller

ответ

0

Нет, это неправильно. Правильно будет

velocity[i + 1] = velocity[i] + acceleration[i] * deltaT; 
    displacement[i + 1] = displacement[i] + velocity[i] * deltaT;