ВВЕДЕНИЕ
Значительнаое число задач физики и техники приводят к дифференциальным уравнениям в частных прозводных (уравнения математической физики). Установившиеся процессы различной физической природы описываются уравнениями эллиптического типа.
Точные решения краевых задач для эллиптических уравнений удаётся получить лишь в частных случаях. Поэтому эти задачи решают в основном приближённо. Одним из наиболее универсальных и эффективных методов, получивших в настоящее время широкое распространение для приближённого решения уравнений математической физики, является метод конечных разностей или метод сеток.
Суть метода состоит в следующем. Область непрерывного изменения аргументов, заменяется дискретным множеством точек (узлов), которое называется сеткой или решёткой. Вместо функции непрерывного аргумента рассматриваются функции дискретного аргумента, определённые в узлах сетки и называемые сеточными функциями. Производные, входящие в дифференциальное уравнение и граничные условия, заменяются разностными производными, при этом краевая задача для дифференциального уравнения заменяется системой линейных или нелинейных алгебраических уравнений (сеточных или разностных уравнений). Такие системы часто называют разностными схемами. И эти схемы решаются относительно неизвестной сеточной функции.
Далее мы будем рассматривать применение итерационного метода Зейделя для вычисления неизвестной сеточной функции в краевой задаче с неоднородным бигармоническим уравнением.
ПОСТАНОВКА ЗАДАЧИ
Пусть у нас есть бигармоническое уравнение :
2
U
=
f
Заданное на области G={
(x,y)
: 0<=x<=a,
0<=y<=b
}.
Пусть также заданы краевые условия на границе области G
.
U
= 0 Y
x=0 b
U
xxx = 0
x=0
G
U
x = 0
x=a
U
xxx = 0 0 a X
x=a
U
= 0 U
= 0
y=0 y=b
U
y = 0 U
xx + U
yy = 0
y=0 y=b y=b
Надо решить эту задачу численно.
Для решения будем использовать итерационный метод Зейделя для решения сеточных задач.
По нашей области G
построим равномерные сетки W
x
и W
y
с шагами h
x
и h
y
соответственно .
W
x
={
x(i)=i
h
x
,
i=0,1...N,
h
x
N=a
}
W
y
={
y(j)=j
h
y
,
j=0,1...M,
h
y
M=b
}
Множество узлов U
ij
=(x(i),y(j))
имеющих координаты на плоскости х(i)
,y(j)
называется сеткой в прямоугольнике G
и обозначается :
W={
U
ij
=(ih
x
,j
h
y
),
i=0,1...N,
j=0,1...M,
h
x
N=a,
h
y
M=b
}
Сетка W
очевидно состоит из точек пересечения прямых x=x(i)
и y=y(j)
.
Пусть задана сетка W
.Множество всех сеточных функций заданных на W
образует векторное пространство с определённом на нём сложениемфункций и умножением функции на число. На пространстве сеточных функций можно определитьразностные или сеточные операторы. 0ператор A
преобразующий сеточную функцию U
в сеточную функцию f=AU
называется разностным или сеточным оператором. Множество узлов сетки используемое при написании разностного оператора в узле сетки называется шаблоном этого оператора.
Простейшим разностным оператором является оператор дифференцирования сеточной функции, который порождает разностные производные. Пусть W
- сетка с шагом h
введённая на R
т.е.
W={X
i
=a+ih, i=0, +
1, +
2...}
Тогда разностные производные первого порядка для сеточной функции Y
i
=Y(X
i
)
, X
i
из W
, определяется по формулам :
L
1
Y
i
= Y
i
- Y
i-1
,
L
2
Y
i
=
L
1
Y
i+1
h
и называются соответственно левой и правой производной. Используется так же центральная производная :
L
3
Y
i
=Y
i+1
- Y
i-1
= (
L
1
+
L
2
)Y
i
2h 2
Разностные операторы A
1
, A
2
, A
3
имеют шаблоны состоящие 2х точек и используются при апроксимации первой производной Lu=u’
. Разностные производные n
-ого порядка определяются как сеточные функции получаемые путём вычисления первой разностной производной от функции, являющейся разностной производной n-1
порядка, например :
Y
xxi
=Y
xi+1
- Y
xi
= Y
i-1
-2Y
i
+Y
i+1
2
h h
Y
xxi
= Y
xi+1
-Y
xi-1
= Y
i-2
- 2Y
i
+Y
i+ 2
2
2h 4h
которые используются при апроксимации второй производной. Соответствующие разностные операторы имеют 3х точечный шаблон.
Анологично не представляет труда определить разностные производные от сеточных функций нескольких переменных.
Аппроксомируем нашу задачу с помощью разностных производных. И применим к получившейся сеточной задаче метод Зейделя.
МЕТОД ЗЕЙДЕЛЯ
Одним из способов решения сеточных уравнений является итерационный метод Зейделя.
Пусть нам дана система линейных уравнений :
AU
= f
или в развёрнутом виде :
M
a
ij
U
j
= f
i
, i=1,2...M
i=1
Итерационный метод Зейделя в предположении что диагональные элементы матрицы А=(
a
ij
)
отличны от нуля (
a
ii
<>0
)
записывается в следующем виде :
i (k+1)
M
(k)
a
ij
Y
j
+ a
ij
Y
j
= f
i
, i=1,2...M
j=1 j=i+1
(k)
где Y
j
- j
ая компонента итерационного приближения номера k
. В качестве начального приближения выбирается произвольный вектор.
Определение (
k
+1)
-ой итерации начинается с i=1
(k+1) M (k)
a
11
Y
1
= - a
1j
Y
j
+f
1
j=2
(k+1)
Так как a
11
<>0
то отсюда найдём Y
1
. И для i=2
получим :
(
k+1
)
(k+1)
M (k)
a
22
Y
2
= - a
21
Y
1
- a
2j
Y
j
+ f
2
j=3
(k+1) (k+1) (k+1)
(
k+1
)
Пусть уже найдены Y
1
, Y
2
... Y
i-1
. Тогда Y
i
находится из уравнения :
(k+1) i-1 (k+1) M (k)
a
ii
Y
i
= - a
ij
Y
j
- a
ij
Y
j
+ f
i
(*)
j=1 j=i+1
Из формулы (*)
видно , что алгоритм метода Зейделя черезвычайно прост. Найденное по формуле (*)
значение Y
i
размещается на месте Y
i
.
Оценим число арифметических действий, которое требуется для реализации одного итерационного шага. Если все a
ij
не равны нулю, то вычисления по формуле (*)
требуютM-1
операций умножения и одного деления. Поэтому реализация
2
одного шага осуществляется за 2M - M
арифметических действий.
Если отлично от нуля лишь m элементов, а именно эта ситуация имеет место для сеточных эллиптических уравнений, то на реализацию итерационного шага потребуется 2
Mm-M
действий т.е. число действий пропорционально числу неизвестных M
.
Запишем теперь метод Зейделя в матричной форме. Для этого представим матрицу A
в виде суммы диагональной, нижней треугольной и верхней треугольной матриц :
A = D + L + U
где
0 0 . . . 0 0
a
12
a
13
. . .
a
1M
a
21
0 0 0
a
23
. . .
a
2M
a
31
a
32
0 0 .
L = . U= .
. .
.
a
M-1M
a
M1
a
M2
. . .
a
MM-1
0 0 0
И матрица D
- диагональная.
(k) (k) (k)
Обозначим через Y
k
= ( Y
1
,Y
2
... Y
M
)
вектор k
-ого итерационного шага. Пользуясь этими обозначениями запишем метод Зейделя иначе :
(
D + L
)
Y
k+1
+ UY
k
= f
, k=0,1...
Приведём эту итерационную схему к каноническому виду двухслойных схем :
(
D + L
)
(Y
k+1
- Y
k
) +AY
k
= f , k=0,1...
Мы рассмотрели так называемый точечный или скалярный метод Зейделя, анологично строится блочный или векторный метод Зейделя для случая когда a
ii
- есть квадратные матрицы, вообще говоря, различной размерности, а a
ij
для i<>j
- прямоугольные матрицы. В этом случае Y
i
и f
i
есть векторы, размерность которых соответствует размерности матрицы a
ii
.
ПОСТРОЕНИЕ РАЗНОСТНЫХ СХЕМ
Пусть Y
i
=Y(i)
сеточная функция дискретного аргумента i
. Значения сеточной функции Y(i)
в свою очередь образуют дискретное множество. На этом множестве можно определять сеточную функцию, приравнивая которую к нулю получаем уравнение относительно сеточной функции Y(i)
- сеточное уравнение. Специальным случаем сеточного уравнения является разностное уравнение.
Сеточное уравнение получается при аппроксимации на сетке интегральных и дифференциальных уравнений.
Так дифференциальное уравнение первого порядка :
dU
= f
(x) , x > 0
dx
можно заменить разностным уравнением первого порядка :
Y
i+1
- Y
i
= f
(x
i
) , x
i
= ih, i=0,1...
h
илиY
i+1
=Y
i
+hf
(x)
, где h
- шаг сетки v
={x
i
=ih, i=0,1,2...}
. Искомой функцией является сеточная функция Yi=Y(i)
.
При разностной аппроксимации уравнения второго поряда
2
d U
= f
(x)
2
dx
получим разностное уравнение второго порядка :
2
Y
i+1
- 2Y
i
+ Y
i+1
=
y
i
,
где
y
i
=h
f
i
f
i
= f(x
i
)
x
i
= ih
Для разностной aппроксимациипроизводных U’,
U’’,
U’’’
можно пользоваться шаблонами с большим числом узлов. Это приводит к разностным уравнениям более высокого порядка.
Анологично определяется разностное уравнение относительно сеточной функции U
ij
= U(i,j)
двух дискретных аргументов. Например пятиточечная разностная схема “крест” для уравнения Пуассона
U
xx
+ U
yy
= f
(x,y)
на сетке W
выглядит следующим образом :
U
i-1j
-
2U
ij
+U
i+1j
+
U
ij-1
-
2U
ij
+U
ij+1
=
f
ij
2 2
h
x
h
y
где h
x
- шаг сетки по X
h
y
- шаг сетки поY
Сеточное уравнение общего вида можно записать так:
N
C
ij
U
j
= f
i
i=0,1...N
j=0
Оно содержит все значения U
0
, U
1
... U
N
сеточной функции. Его можно трактовать как рзностное уравнение порядка N
равного числу узлов сетки минус единица.
В общем случае под i
- можно понимать не только индекс , но и мультииндекс т.е. вектор i = (i
1
... i
p
)
с целочисленными компонентами и тогда :
С
ij
U
j
=f
i
i
Î
W
j
Î
W
где сумирование происходит по всем узлам сетки W
. Если коэффициенты С
ij
не зависят от i, тоуравнение называют уравнением с постоянными коэффициентами.
Аппроксимируем нашу задачу т.е. заменим уравнение и краевые условия на соответствующие им сеточные уравнения.
U=U(x,y)
y M b M-1 Uij j j 1 0 1 2 i N-1 N=a x i |
Построим на области G
сетку W
. И зададим на W
сеточную функцию U
ij
=U(x
i
,y
j
)
,
где
x
i
=x
0
+ih
x
y
i
=y
0
+jh
y
h
x
= a/N ,
h
y
= b/M
и т.к.
x
0
=y
0
то
x
i
=ih
x
, y
i
=jh
y
, i=0...N
j=0...M
Найдём разностные производные входящие в уравнение
2
D
U = f
(т.е построим разностный аналог бигармонического уравнения).
Ux
ij
= U
i+1j
- U
ij
, Ux
i-1j
= U
ij
- U
i-1j
h
x
h
x
Uxx
ij
= U
i-1j
- 2U
ij
+ U
i+1j
h
x
Рассмотрим Uxxxx
ij
как разность третьих производных :
Uxx
i-1j
- Uxx
ij
- Uxx
ij
- Uxx
i+1j
Uxxxx
ij
= h
x
h
x
= U
i-2j
- 4U
i-1j
+ 6U
ij
- 4U
i+1j
+ U
i+2j
4
h
x
h
x
Анологично вычислим производную по y
:
Uyyyy
ij
= U
ij-2
- 4U
ij-1
+ 6U
ij
- 4U
ij+1
+U
ij+2
4
h
y
Вычислим смешанную разностную производнуюUxxyy
:
Uxx
ij-1
- Uxx
ij
- Uxx
ij
- Uxx
ij+1
(Uxx)yy
ij
= h
y
h
y
= Uxx
ij-1
- 2Uxx
ij
+Uxx
ij+1
=
2
hy hy
= U
i-1j-1
- 2U
ij-1
+ U
i+1j-1
-
2
U
i-1j
- 2U
ij
+ U
i+1j
+ U
i-1j-1
- 2U
ij+1
+ U
i+1j+1
2 2 2 2 2 2
h
x
h
y
h
x
h
y
h
x
h
y
В силу того чтоD
U =
f
имеем:
U
i-2j
- 4U
i-1j
+ 6U
ij
- 4U
i+1j
+U
i+2j
+
4
h
x
+
2
U
i-1j-1
- 2U
ij-1
+ U
i+1j-1
-
4
U
i-1j
- 2U
ij
+U
i+1j
+
2
U
i-1j+1
-2U
ij+1
+ U
i+1j+1
+
2 2 2 2 2 2
h
x
h
y
h
x
h
y
h
x
h
y
+ U
ij-2
- 4U
ij-1
+ 6U
ij
- 4U
ij+1
+ U
ij+2
=
f
ij
(*)
4
h
y
Это уравнение имеет место для
i=1,
2, ...
N-1
j=1,2, ... M-1
Рассмотрим краевые условия задачи. Очевидно следующее :
x=
0
~
i
=
0
x=a ~ x
N
=a
y=0 ~ Yo=0
y=b ~ Y
M
=b
1)
х=0
(левая граница областиG
)
Заменим условия
U = 0
x=o
Uxxx = 0
x=o
на соответствующие им разностные условия
U
o
j
=0
U
-1j
=U
2j
- 3U
1j
(1`)
2)
х=а
(правая граница областиG
)
i=N
Ux = 0
x=a
Uxxx = 0
x=a
из того что U
i+1j
- U
i-1j
= 0
2h
x
U
N+1j
= U
N-1j
U
Nj
= 4 U
N-1j
- U
N-2j
(2`)
3
3)
у=0
(нижняя граница области G
)
j=0
U
i ,-1
= U
i1
U
i0
= 0 (3`)
это есть разностный аналогUy = 0
y=o
U =0
y=o
4)
у=b
i=M
U = 0
y=b
т.е.U
iM
=0
(**)
Распишем через разностные производныеUxx + Uyy =0
и учитывая чтоj=M
и (**)
получим
U
iM-1
= U
iM+1
Итак краевые условия на у=b
имеют вид
U
iM+1
= U
iM-1
U
iM
= 0 (4`)
Итого наша задача в разностных производных состоит из уравнения (*)
заданного на сетке W
и краевых условий (1
`
)-(4
`
)
заданных на границе области G
(или на границе сетки W
)
ПРИМЕНЕНИЕ МЕТОДА ЗЕЙДЕЛЯ
Рассмотрим применение метода Зейделя для нахождения приближенного решения нашей разностной задачи (*)
,(1`) - (4`).
В данном случае неизвестными являются
U
ij
= U(
x
i
,y
j
)
где x
i
= ih
x
y
j
= jh
y
при чём h
x
= a/N ,
h
y
= b/M
это есть шаг сетки по x
и по у
соответственно , а N
и М
соответственно количество точек разбиения отрезков [
0
,
а]
и [0
,
b]
Пользуясь результатами предыдущего раздела запишем уравнение
2
D
U = f
как разностное уравнение. И упорядочим неизвестные естественным образом по строкам сетки W
, начиная с нижней строки.
1
U
i-2j
- 4
+ 4
U
i-1j
+ 6
- 8
+ 6
U
ij
- 4
+ 4
U
i+1j
+ 1
U
i+2j
+ 2
U
i-1j-1
-
4
4 2 2
4 2 2 4 4 2 2 4 2 2
h
x
h
x
h
x
h
y
h
x
h
x
h
y
h
y
h
x
h
x
h
y
h
x
h
x
h
y
- 4
+ 4
U
ij-1
+ 2
U
i+1j-1
+ 2
U
i-1j+1
- 4
+ 4
U
ij+1
+ 2
U
i+1j+1
+ 1
U
ij-2
+
2 2 4 2 2 2 2 2 2 4 2 2 4
h
x
h
y
h
y
h
x
h
y
h
x
h
y
h
x
h
y
h
y
h
x
h
y
h
y
+ 1
U
ij+2
=
f
ij
для i=1 ... N-1, j=1 ... M-1
4
h
y
и U
удовлетворяет краевым условиям (1
`
)
- (4`),
так как в каждом уравнении связаны вместе не более 13 неизвестных то в матрице А
отличны от нуля не более 13-элементов в строке. В соответствии со вторым разделом перепишем уравнение:
(k+1) (k+1) (k+1) (k+1)
6
- 8
+ 6
U
ij
= - 1
U
ij-2
- 2
U
i-1j-1
+ 4
+ 4
U
ij-1
-
4 2 2 4 4 2 2 2 2 4
h
x
h
x
h
y
h
y
h
y
h
x
h
y
h
x
h
y
h
y
(k+1) (k+1) (k+1) (k)
- 2
U
i+1j-1
- 1
U
i-1j
+
4
+ 4
U
i-1j
+ 4
+ 4
U
i+1j
-
2 2
4
4 2 2
4 2 2
h
x
h
y
h
x
h
x
h
x
h
y
h
x
h
x
h
y
(k) (k) (k) (k) (k)
- 1
U
i+2j
- 2
U
i-1j+1
+ 4
+ 4
U
ij+1
- 2
U
i+1j+1
- 1
U
ij+2
+
f
ij
4 2 2 2 2 4 2 2 4
h
x
h
x
h
y
h
x
h
y
h
y
h
x
h
y
h
y
(k)
При чем U
удовлетворяет краевым условиям (
1`
)
- (4`)
. Вычисления начинаются с i=1, j=1
и продолжаются либо по строкам либо по столбцам сетки W
. Число неизвестных в задаче n = (N-1)(M-1)
.
Как видно из вышеизложенных рассуждений шаблон в этой задаче тринадцатиточечный т.е. на каждом шаге в разностном уравнении участвуют 13 точек (узлов сетки) Рассмотрим вид матрицы А
-для данной задачи.
j+2
|
j+1
|
j
|
j-1
|
Матрица метода получается следующим образом : все узлы сетки перенумеровываются и размещаются в матрице Так что все узлы попадают на одну строку и поэтому матрица метода для нашей задачи будет тринадцатидиагональной .
j-2
|
i-1
|
i
|
i+1
|
i+2
|
i-2
|
Шаблон задачи
|
ОПИСАНИЕ ПРОГРАММЫ.
Константы используемые в программе :
aq = 1
- правая граница области G
b = 1
- левая граница области G
N = 8
- колличество точек разбиения отрезка[0,a]
M = 8
- колличество точек разбиения отрезка [0,b]
h1 = aq/N
- шаг сетки по X
h2 = b/M
- шаг сетки по Y
Переменные :
u0
- значения сеточной функции U
на k
-ом шаге
u1
- значения сеточной функции U
на (k+1)
-ом шаге
a
- массив коэффициентов шаблона
Описание процедур :
procedure Prt(u:masa)
- печать результата
function ff(x1,x2: real):real
- возвращает значение функцииf
в узле (
x1,x2
)
procedure Koef
- задаёт значения коэффициентов
Действие :
Берётся начальое приближение u0
и с учётом краевых условий ведётся вычисление с i=2 ... N , j=2 ... M
. На каждом итерационном шаге получаем u1
по u0
. По достижении заданной точности eps>0
вычисления прекращаются. И все элементы матрицы A, которые лежат ниже главной диагонали получают итерационный шаг (
k+1
)
, а те элементы которые лежат выше главной диагонали (исключая главную диагональ) получают итерационный шаг k
.
Примечание : программа реализована на языке Borland Pascal 7.0
Министерство общего и профессионального образования РФ
Воронежский государственный университет
факультет ПММ
кафедра Дифференциальных уравнении
Курсовой проект
“Решение бигармонического уравнения методом Зейделя”
Исполнитель : студент 4 курса 5 группы
Никулин Л.А.
Руководитель : старший преподаватель
Рыжков А.В.
Воронеж 1997г.