Задавшись фиксированным числом точек, можно аппроксимировать функцию более точно, если вычислять ее значения в точках, расположенных следующим образом: достаточно часто на тех интервалах, где функция меняется быстро, и не очень часто — где функция изменяется более медленно. Если известно, что искомое решение достаточно гладкое, может оказаться лучше использовать функцию Rkadapt для поиска приближенного решения. В отличие от функции rkfixed, которая ищет приближенное решение с постоянным шагом, функция Rkadapt проверяет, как быстро изменяется приближенное решение, и адаптирует соответственно размер шага. Этот адаптивный контроль величины шага дает возможность функции Rkadapt вычислять значение приближенного решения на более мелкой сетке в тех областях, где оно меняется быстро, и на более крупной — в тех областях, где оно меняется медленно. Это позволяет и повысить точность, и сократить время, требуемое для решения уравнения.
Обратите внимание, что, хотя функция Rkadapt при решении дифференциального уравнения использует во внутренних расчетах переменный шаг, возвращает приближенное решение она на равномерной сетке (в равноотстоящих точках).
Функция Rkadapt имеет те же самые аргументы, что и функция rkfixed. Матрица с приближенным решением, возвращаемая функцией Rkadapt,идентична по виду матрице, возвращаемой функцией rkfixed.
Rkadapt ( y, x1, x2, npoints, D)
| y =
| Вектор начальных условий размерности n, где n — порядок дифференциального уравнения или число уравнений в системе (если решается система уравнений).
|
| x1, x2 =
| Граничные точки интервала, на котором ищется решение дифференциальных уравнений. Начальные условия, заданные в векторе y, — это значение решения в точке x1.
|
| npoints =
| Число точек (не считая начальной точки), в которых ищется приближенное решение. При помощи этого аргумента определяется число строк (1 + npoints) в матрице, возвращаемой функцией Rkadapt.
|
| D (x, y) =
| Функция, возвращающая значение в виде вектора из n элементов, содержащих первые производные неизвестных функций.
|