Итерационный векторный процесс в общем виде представляется следующим образом [ ]:
,
где – искомый вектор решения и его начальное приближение;
– матрица, обратная матрице Якоби из частных производных:
Для программирования этого процесса в DERIVE необходимо построить операторы для вычисления укзанных объектов.
Искомый вектор V и вектор уравнений f уже определены выше. Матрицу Якоби из частных производных определим так:
d d d d
J:=APPEND¦¦ f¦`,¦ f¦`,¦ f¦`,¦ f¦`¦`
d w0 d w1 d x1 d x2
1 1 0 0
¦ x1 x2 w0 w1 ¦
J:=¦ 2 2 ¦
¦ x1 x2 2·w0·x1 2·w1·x2 ¦
¦ 3 3 2 2 ¦
x1 x2 3·w0·x1 3·w1·x2
Функции для вычисления покомпонентных приращений вектора V:
d d d
Vw0:=APPEND¦f`,¦ f¦`,¦ f¦`,¦ f¦`¦`
d w1 d x1 d x2
d d d
Vw1:=APPEND¦¦ f¦`,f`,¦ f¦`,¦ f¦`¦`
d w0 d x1 d x2
d d d
Vx1:=APPEND¦¦ f¦`,¦ f¦`,f`,¦ f¦`¦`
d w0 d w1 d x2
d d d
Vx2:=APPEND¦¦ f¦`,¦ f¦`,¦ f¦`,f`¦`
d w0 d w1 d x1
Выражение для вычисления очередного приближения к искомому вектору:
2 2
¦ 2·(x1·(3·x2 +1)-x2·(x2 -1)) ¦
¦ - ¦
¦ 3 ¦
¦ (x1-x2) ¦
¦ ¦
¦ 3 2 ¦
¦ 2·(x1 -3·x1 ·x2-x1-x2) ¦
¦ - ¦
¦ 3 ¦
¦ (x1-x2) ¦
¦ ¦
¦ 2 ¦
¦ 2·(x1·(3·x2 +1)+2·x2) ¦
¦ x1-- ¦
¦ 2 ¦
¦ 3·w0·(x1-x2) ¦
¦ ¦
¦ 2 ¦
¦ 2·(3·x1 ·x2+2·x1+x2) ¦
¦ x2-- ¦
¦ 2 2 ¦
3·w1·(x1 -2·x1·x2+x2 )
Сформированное выше выражение для вычисления очередного приближения, как видим, возвращает матрицу с 4 строками и одним столбцом. Для использования оператора итерационных приближений итерируемое выражение должно быть представлено в форме вектора. Определим этот вектор следующим образом:
-1
VV:=VECTOR¦([V]`-J f) ,i,1,4¦
i,1
Так как в итерационном приближении вектора вместо конкретных компонент должны присутствовать ссылки на соответствующую компоненту приближаемого вектора, то такую замену можно реализовать с помощью операторов LIM(). В результате векторная функция для списка параметров оператора ITERATES() примет такой вид:
VVI:= lim lim lim lim VV
x2V4 x1V3 w1V2 w0V1
Из задачи №10в аналитические значения корней известны – это w0=w1=1, x1=(-1/3), x2=(1/3). Для сходимости итерационного процесса, особенно в многомерном случае, необходимо провести предварительное исследование функции на предмет определения области нахождения корней. Начальное приближение вектора должно оказаться в достаточной близости к истинным корням. Руководствуясь этим, возьмем начальные значения, которые отличаются от точных на 10-20%:
NotationDigits:=6
ITERATES(VVI,V,[0.9,1.2,-0.5,0.6],5)
0.9 1.2 -0.5 0.6
¦ 0.985725 1.01427 -0.597949 0.577043 ¦
¦ 0.999088 1.00091 -0.577778 0.576996 ¦
¦ 0.999999 1.00000 -0.577350 0.577350 ¦
¦ 1.00000 0.999999 -0.577350 0.577350 ¦
1 1 -0.577350 0.577350
Итак, уже на пятом шаге итераций значения корней получены с точностью в 6 десятичных знаков.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.