Код:
for(size_t n = 1; n < n_max; n++)
{
t[n]=t[n]+h * n;//расчет времени
std::array<double, Size> k1, k2, k3;
for(std::size_t i = 0; i < Size; i++)
{
k1[i] = F[i](t[n], vec[n-1], 0);
k2[i] = F[i](t[n] + step/3, vec[n-1], k1[i]/3);
k3[i] = F[i](t[n] + 2*step/3, vec[n-1], k2[i]/3);
}
for(std::size_t i = 0; i < Size; i++)
{
vec[n][i] = vec[n-1][i] + (k1[i] + 3*k3[i]) * (h/4);
}
if(vec[n][0] < 78)
{
double tnew =t[n]-t[n-1]
t[n]=tnew;
}
}
h-шаг 0.1 по времени
получается программа считает и проверяет условие vec[n][0] < 78, если верно рассчитывает время double tnew =t[n]-t[n-1] и заносит в массив t[n]=tnew
но после этого время не изменяется
выглядит так
0.1
0.2
0.366
0.4
0.5
но шаг же прибавляется к предыдущему значению.
0.1
0.2
0.336
0.336+0.1
что не верно?