Задача Дирихле
1.ПОСТАНОВКА ЗАДАЧИ
Решить численно задачу Дирихле для уравнения Лапласа :
(x,y)D; u | Г =xy 2 =f(x,y) ;
область D ограничена линиями: x=2 , x=4 , y=x , y=x+4 ;
(x 0 , y 0 ) = (3, 5) .
Следует решить задачу сначала с шагом по x и по y : h=0.2, потом с шагом h=0.1 . Точность решения СЛАУ =0.01 .
2.ОПИСАНИЕ МЕТОДА РЕШЕНИЯ ПОСТАВЛЕННОЙ ЗАДАЧИ
Поставленная задача решается численно с помощью программы, реализующей метод сеток , разработанный для численного решения задачи Дирихле для уравнений эллептического типа.
Программа написана на языке C++ , в среде Borland C++ версии 3.1. Ниже описан алгоритм работы этой программы.
1. На первом шаге область D дискретизируется. Она заменяется на область D h путем разбиения области D параллельными прямыми по следующему правилу: y i =y 0 ih, x j =x 0 ih , i,j=0,1,2…. PР. Разбиение производится до тех пор, пока текущая прямая не будет лежать целиком вне области D. Получается множество точек (x i ,y j ).
2. За область D h принимают те точки множества (x i ,y j ) , которые попали внутрь области D, а также дополняют это множество граничными точками.
3.Во всех точках области D h вычисляются значения функции f(x i ,y j ) .
4. За область D h * принимаются все внутренние точки области D h , т.е. удовлетворяющие требованию:
(x i ,y j ) D h * , если (x i+1 ,y j ) D h , (x i-1 ,y j ) D h , (x i ,y j+1 ) D h , (x i ,y j-1 ) D h .
5. Во всех точках области D h * вычисляется функция F (N) *[i,j] ( индекс N обозначает номер итерации, на которой производится вычисление):
F (N) *[i,j]=(f(x i+1 ,y j ) + f(x i-1 ,y j ) + f(x i ,y j+1 )f(x i ,y j-1 ))/4
6. Теперь если max | F (N+1) *[i,j] — F (N) *[i,j]|=0.005) {
for(i=0;i