Курсовая работа: Численные методы при решении задач
ys[1] = y[2]; // t-независимый аргумент
ys[2] = 5 + t * t - y[0] - 3. * y[1] - 2. * y[2];
}
void Adams (
void f (double *y, double *ys, double x),
// Функция вычиления правых частей системы
double *y, // Массив размера n значений зависимых переменных
int n, // Массив размера n значений производных
double tn, // Начало интервала интегрирования
double tk, // Конец интервала интегрирования
int m, // Начальное число разбиений отрезка интегрирования
double eps) // Относительная погрешность интегрирования
{
double *k1, *k2, *k3, *k4; // Для метода Рунге-Кутта
double *q0, *q1, *q2, *q3; // Значение производных Для метода Адамса
double *ya; // Временный массив
double *y0, *y1, *y2, *y3; // Значения функции для метода Адамса
double h; // Шаг интегрирования
doublexi; // Текущее значение независимой переменной
double eps2; // Для оценки погрешности
double dq2, dq1, dq0, d2q1, d2q0, d3q0; // приращения
int flag = 0; // 0, пока идёт первый просчёт
int i, j; // Индексы
if (m < 4) m = 4; // Минимум 4 отрезка
if (tn >= tk)
{ printf ("\nНеправильные аргументы\n");
abort (); // Неправильные аргументы
}
// Выделяем память для массивов с переменными