ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 04.04.2021
Просмотров: 761
Скачиваний: 1
f:=false;
for i from 1 to n do
# проверка условия выхода
if abs(x1[i]-x[i])>eps then f:=true end if;
end do;
for k from 1 while (f = true) do
for j from 1 to n do
x[j]:=x1[j];
end do;
for i from 1 to n do x0[i]:=0; x1[i]:=0;
for j from 1 to n do
if (i<j) and (i<>j) then x0[i]:=x0[i]-a[i,j]*x[j]
elif (i>j) and (i<>j) then x0[i]:=x0[i]-a[i,j]*x1[j]
end if;
end do;
x1[i]:=1/a[i,i]*(b[i]+x0[i]);
end do;
f:=false;
for z from 1 to n do
if abs(x1[z]-x[z])>eps then f:=true end if;
end do;
end do;
for i from 1 to n do
print(x1[i]);
end do;
end proc;
# ввод коэффициентов матрицы
A
, вектора
B
и начального произ-
вольного приближения к решению системы
> a[1,1]:=23.81837: a[1,2]:=2.33377: a[1,3]:=-0.73872: a[1,4]:=0.85797:
a[1,5]:=-0.67457:
> a[2,1]:=-1.59171: a[2,2]:=29.48598: a[2,3]:=1.81520: a[2,4]:=3.90203:
a[2,5]:=-0.57008:
> a[3,1]:=-0.15720: a[3,2]:=1.44805: a[3,3]:=21.33172: a[3,4]:=2.64148:
a[3,5]:=3.36273:
> a[4,1]:=-3.29147: a[4,2]:=2.64912: a[4,3]:=2.16798: a[4,4]:=26.72888:
a[4,5]:=1.21258:
> a[5,1]:=-1.55251: a[5,2]:=2.73236: a[5,3]:=2.00201: a[5,4]:=-1.97732:
a[5,5]:=29.53347:
> b[1]:=1.77836: b[2]:=0.10234: b[3]:=3.82426: b[4]:=-2.71881: b[5]:=0.72844:
56
> x[1]:=1: x[2]:=1: x[3]:=1: x[4]:=1: x[5]:=1:
Проверим работу процедуры
> Zeidel(a,b,x,5,0.01);
0.08365479557
0.01070750424
0.1914082408
-0.1083504947
0.007842401791
6.
Обыкновенные дифференциальные урав-
нения
ОДУ называются такие уравнения, которые содержат одну или несколь-
ко производных от искомой функции
y
=
y
(
x
)
:
F
(
x, y, y
0
, ..., y
(
n
)
) = 0
.
(93)
Наивысший порядок
n
входящей в уравнение производной называется
порядком дифференциального уравнения. Уравнение первого порядка
F
(
x, y, y
0
) = 0
,
второго порядка
F
(
x, y, y
0
, y
00
) = 0
.
Если из уравнения удается выразить старшую производную и привести
его к виду
y
(
n
)
=
F
(
x, y, y
0
, ..., y
(
n
−
1)
)
,
то такая форма записи называется уравнением, разрешенным относи-
тельно старшей производной.
Линейным дифференциальным уравнением называется уравнение, ли-
нейное относительно искомой функции и ее производных.
Решением дифференциального уравнения называется всякая
n
раз
дифференцируемая функция
y
=
ϕ
(
x
)
, которая после подстановки в
уравнение превращает его в тождество.
Общее решение уравнения
n
-го порядка содержит
n
произвольных
постоянных
C
1
, C
2
, ... , C
n
:
y
=
ϕ
(
x, C
1
, C
2
, ..., C
n
)
.
(94)
57
Причем любое решение нашего уравнения можно представить в виде (94)
при определенных значениях констант.
Для уравнения первого порядка общее решение зависит от одной про-
извольной постоянной:
y
=
ϕ
(
x, C
)
.
Если постоянной придать определенное значение
C
=
C
0
, то получаем
частное решение
y
=
ϕ
(
x, C
0
)
.
Геометрическая интерпретация общего решения уравнения первого
порядка состоит в том, что оно описывает бесконечное семейство ин-
тегральных кривых
y
=
y
(
x, C
)
с параметром
C
, а частному решению
соответствует одна кривая этого семейства, причем через каждую точку
(
x
0
, y
0
)
проходит одна и только одна интегральная кривая.
Для уравнений высших порядков – через каждую точку
(
x
0
, y
0
)
про-
ходит не одна интегральная кривая, поэтому для выделения некоторого
частного решения надо задать дополнительные условия по числу произ-
вольных постоянных.
6.1.
Приближенные методы решения ОДУ. Метод
Эйлера
Наиболее универсальным методом решения ОДУ является метод ко-
нечных разностей. Он заключается в том, что область непрерывного из-
менения аргумента заменяется дискретным множеством точек – узлами,
образующими разностную сетку. Искомая функция непрерывного аргу-
мента заменяется функцией дискретного аргумента на данной сетке –
сеточной функцией. Решение ОДУ сводится к отысканию значений се-
точной функции в узлах сетки.
Например, дифференциальное уравнение (задача Коши)
dy
dx
=
f
(
x, y
)
,
y
(
x
0
) =
A
вводя равномерную сетку с шагом
h
и приняв в качестве узлов сетки
x
0
,
x
1
=
x
0
+
h
,..., можно свести к разностному, приближая производную в
i
-ом узле с помощью правых разностей
y
i
+1
−
y
i
h
=
f
i
,
i
= 0
,
1
, ...,
y
0
=
A.
Здесь
f
i
=
f
(
x
i
, y
i
)
. Таким образом мы определили разностную схему.
Разностной схемой называется замкнутая система разностных уравнений
вместе с дополнительными условиями – начальными или краевыми.
58
Выражая
y
i
+1
, получаем
y
i
+1
=
y
i
+
hf
i
=
y
i
+
hf
(
x
i
, y
i
)
,
i
= 0
,
1
, ...
(95)
В результате приходим к методу Эйлера:
y
1
=
y
0
+
hf
(
x
0
, y
0
)
,
y
2
=
y
1
+
hf
(
x
1
, y
1
)
,
...........
y
n
=
y
n
−
1
+
hf
(
x
n
−
1
, y
n
−
1
)
.
Очевидно, что в данном случае искомая интегральная кривая приближа-
ется ломаной, наклон которой на элементарном участке
[
x
i
, x
i
+1
]
опреде-
ляется наклоном интегральной кривой исходного уравнения, выходящей
из точки
(
x
k
, y
k
)
.
Неявный метод Эйлера состоит в приближении производной в окрест-
ности
i
-го узла с помощью левой разности
y
i
−
y
i
−
1
h
=
f
i
,
i
= 0
,
1
, ...,
y
0
=
A.
Очевидно, что в этом методе искомая величина
y
i
входит в уравнение
в общем случае нелинейным образом. Поэтому необходимо применять
известные методы решения нелинейных уравнений.
Можно показать, что явный и неявный метод – методы первого по-
рядка точности. То есть погрешность в точке
x
i
δ
i
=
y
(
x
i
)
−
y
i
,
равная разности между точным значением искомой функции
y
(
x
i
)
и зна-
чением сеточной функции в узле
δ
i
.
h.
Можно построить другие методы решения задачи Коши. Например,
приблизим производную в окрестности
i
-го узла с помощью центральных
разностей:
y
i
+1
−
y
i
−
1
2
h
=
f
i
,
i
= 0
,
1
, ...,
y
0
=
A.
Полученная система уравнений не замкнута – необходимо доопределить
y
1
, что можно сделать с помощью метода Эйлера
y
1
=
y
0
+
hf
(
x
0
, y
0
)
.
59
Можно показать, что построенная схема имеет второй порядок точности.
Рассмотрим модифицированный метод Эйлера. Запишем систему урав-
нений
y
i
+1
−
y
i
h
=
f
i
+1
/
2
,
i
= 0
,
1
, ...,
y
0
=
A,
где
f
i
+1
/
2
=
f
(
x
i
+1
/
2
, y
i
+1
/
2
) =
f
(
x
i
+
h
2
, y
i
+1
/
2
)
,
а значение
y
i
+1
/
2
вычисляем по методу Эйлера
y
i
+1
/
2
=
y
i
+
h
2
f
i
=
y
i
+
h
2
f
(
x
i
, y
i
)
,
i
= 0
,
1
, ... .
В результате получаем следующую разностную схему:
y
i
+1
−
y
i
h
=
f
(
x
i
+
h
2
, y
i
+
h
2
f
(
x
i
, y
i
))
,
i
= 0
,
1
, ...,
y
0
=
A,
которая, как можно показать, имеет второй порядок точности.
6.2.
Метод Эйлера с пересчетом (предиктор –
корректор)
Предиктор – предсказание результата, корректор – уточнение резуль-
тата. Заменим правую часть нашего уравнения на среднее значений в
соседних узлах:
y
i
+1
−
y
i
h
=
1
2
[
f
(
x
i
, y
i
) +
f
(
x
i
+1
, y
i
+1
)]
.
(96)
Как видно, наклон интегральной кривой посередине отрезка
[
x
i
, x
i
+1
]
приближенно заменяется средним арифметическим наклонов на грани-
цах этого отрезка. Отсюда
y
i
+1
=
y
i
+
h
2
[
f
(
x
i
, y
i
) +
f
(
x
i
+1
, y
i
+1
)]
.
(97)
Искомое значение
y
i
+1
входит и в правую сторону тоже, и его нельзя в
общем случае выразить явно. Но его можно найти по формуле метода
Эйлера:
y
i
+1
=
y
i
+
hf
(
x
i
, y
i
)
–
предиктор
(98)
и, подставляя в правую часть, получаем
y
i
+1
=
y
i
+
h
2
[
f
(
x
i
, y
i
) +
f
(
x
i
+1
,
(
y
i
+
hf
(
x
i
, y
i
)))]
–
корректор. (99)
60