При наличии в конце имени буквы S результат формируется в виде (n+1)-мерного вектора V[i] из значений промежуточных подстановок, первым элементом которого является x0. При отсутствии S результатом выполнения оператора является значение последней n-й подстановки. Схема алгоритма показана на рисунке справа.
Итерации применяются в методах численного решения уравнений. Наиболее популярен метод Ньютона для поиска корней алгебраического уравнения вида . Формула итерационного (последовательного) приближения к корню от заданного приближенного значения имеет следующий вид:
или .
Для примера с помощью итерационного метода Ньютона найдем корень следующего уравнения:
3 2
x - 8·x - 5·x + 84 = 0.
В соответствии с формулой Ньютона составим функцию для итерационного приближения:
3 2
x - 8·x - 5·x + 84
f(x) := x -
d 3 2
(x - 8·x - 5·x + 84)
dx
Для упрощения выражения выделим курсором только правую часть этого выражения и, обратившись к пунктам меню, сделаем нужные установки следующим образом:
SimplifyFactor ExpressionFactor Vareables: x Ù Amount: RationalОК
3 2
2·(x - 4·x - 42)
f(x) :=
2
3·x - 16·x - 5
Введем эту функцию в список фактических параметров оператора итерационных подстановок. Укажем в нем количество подстановок равное 8. Начальное значение установим равным 16, в надежде найти максимальный по величине корень.
ITERATES(f(x), x, 16, 8)
[16, 11.95, 9.418, 7.944, 7.232, 7.020, 7.000, 7, 7]
Функция f(x) и ее аргумент x могут быть и векторами. Например, для получения ряда Фибоначчи, который определяется рекуррентной формулой, связывающей три его последовательных члена равенством вида
,
для начальных членов и , в командной строке необходимо записать следующее выражение:
fib(n) := ITERATES([v2, v1 + v2], v, [0, 1], n)
fib(n) := ITERATES(v , v + v , v, [0, 1], n)
2 1 2
fib(5) 0 1 ¦ 1 1 ¦ ¦ 1 2 ¦ ¦ 2 3 ¦ ¦ 3 5 ¦ 5 8 |
Здесь вектор v представлен двумерным отрезком ряда (), начальное значение которого принято равным () = (0, 1). Векторная функция перемещает второй элемент вектора на место первого элемента, а второй элемент заменяет суммой первого и второго. В результате оператором ITERATES() должен формироваться вектор с (n+1)-й компонентой, каждая из которых представляется двумерными векторами. Вызвав по имени этот оператор с n=5, получим результат, показанный справа.
Ниже приведены примеры формирования двух векторов: вектора с компонентами натурального ряда чисел и вектора степеней переменной x .
n(x):=ITERATES(x+1,x,1,9)
[1,2,3,4,5,6,7,8,9,10]
º(x):=ITERATES(x·p,p,1,9)
2 3 4 5 6 7 8 9
1,x,x ,x ,x ,x ,x ,x ,x ,x
Пример подстановки векторного аргумента с использованием операторов из тематических утилит, то есть сгруппированных по темам процедур, записанных в форме программ на языке пакета DERIVE. Пусть необходимо численно проинтегрировать систему дифференциальных уравнений первого порядка методом Рунге-Кутта.
Утилита, включающая в себя подборку процедур численного интегрирования дифференциальных уравнений, имееет файловое имя ODE_APPR.mth. Загрузка утилиты в доступную для текущего сеанса область памяти, минуя выдачу всех текстов процедур на экран монитора в алгебраическое окно, осуществляется так:
FileLoadUtility…File name: ODE_APPR.mth Ù Open
Формат оператора, вызывающего процедуру Рунге-Кутта, имеет следующий вид: RK(u, v, v0, h, k). Формальные параметры процедуры включают: n-мерный вектор системы уравнений u, элементами которого являются правые части уравнений системы; (n+1)-мерный вектор имен искомых переменных v, первым элементом которого является имя независимой переменной; (n+1)-мерный вектор начальных значений переменных v0; шаг h по независимой переменной и число шагов k.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.