Реферат: Задача Дирихле - текст реферата. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Реферат

Задача Дирихле

Банк рефератов / Математика

Рубрики  Рубрики реферат банка

закрыть
Категория: Реферат
Язык реферата: Русский
Дата добавления:   
 
Скачать
Microsoft Word, 727 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникального реферата

Узнайте стоимость написания уникальной работы

7 Задача Дирихле 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]|< яя ,взятый по всем точка м области D h * , то задача решена ; если нет , то выполнять шаг 5 ( пере считывать функцию F (N) *[i,j] через значения F (N-1) *[i,j]) до тех пор , пока не выполнится указанное условие . 3.ТЕК СТ ПРОГРАММЫ #include #inc lude #include #include #include int i,j,k; // Variables float h,x,y,tmp,E1; struct point float xx; float yy; int BelongsToDh_; int BelongsToDh; float F; float F_; p0,arrayP[13][33]; float arrayX[13]; float arrayY[33]; float diff[500]; void CreateNet(void); // Procedure Prototypes int IsLineFit(float Param); void CrMtrD(void); void RegArrayX(); void RegArrayY(); void CreateDh_(); int IsFit(point Par); void FillF(); void CreateDh(); int IsInner(int i,int j); void FillF_(); void CountDif(); void MakeFile(); void main(void) //MAIN clrscr(); p0.xx = 3; p0.yy = 5; h = 0.2; p0.BelongsToDh_=1; p0.BelongsToDh=1; CreateNet(); RegArrayX(); RegArrayY(); CrMtrD(); CreateDh_(); FillF(); CreateDh(); FillF_(); CountDif(); while (E1>=0.005) for(i=0;i<13;i++) for(j=0;j<33;j++) arrayP[i ][j].F=arrayP[i][j].F_; FillF_(); CountDif(); cout<<(0-arrayP[7][17].F_); MakeFile(); getchar(); //MAIN END int IsLineFit(float par,char Axis) // does the line belong to the defined area switch(Axis) case 'y': if ((par>8.0) || (par<2.0)) return 1; else return 0; case 'x': if (par<1.9) return 1; else if (par>4.0) return 1; else return 0; void CreateNet(void) // Creation of Net (area D ) x = p0.xx; i=0; arrayX[i]=x; while (!IsLineFit(x,'x')) x += h; i++; arrayX[i] = x; x = p0.xx-h; i++; arrayX[i]=x; while (!IsLineFit(x,'x')) x -= h; i++; arrayX[i] = x; for (i=0;i<13;i++) printf("%g ",arrayX[i]); printf("\n"); y = p0.yy; i = 0; arrayY[i]=y; while (!IsLineFit(y,'y')) y += h; i++; arrayY[i] = y; y = p0.yy - h; i++; arrayY[i]=y; while (!IsLineFit(y,'y')) y -= h; i++; arrayY[i] = y; for(i=0;i<33;i++) printf("%g ",arrayY[i]); printf("\n"); // end CreateNet void RegArrayX() // Regulation of arrays X & Y int LastUnreg = 13 ; while (LastUnreg != 0) for(i=0;iarrayX[i+1]) double tmp=arrayX[i]; arrayX[i]=arrayX[i+1]; arrayX[i+1]=tmp; LastUnreg=LastUnreg-1; for (i=0;i<13;i++) printf("%g ",arrayX[i]); printf("\n"); void RegArrayY() int LastUnreg = 33 ; while (LastUnreg != 0) for(i=0;iarrayY[i+1]) tmp=arrayY[i]; arrayY[i]=arrayY[i+1]; arrayY[i+1]=tmp; LastUnreg=LastUnreg-1; for (i=0;i<33;i++) printf("%g ",arrayY[i]); printf("\n "); // End of Regulation void CrMtrD(void) //Create general Matrix for(i=0;i<13;i++) for(j=0;j<33;j++) arrayP[i][j].BelongsToDh_=0; arrayP[i][j].BelongsToDh=0; for(i=0;i<13;i++) for(j=0;j<33;j++) arrayP[i][j].xx=arrayX[i]; arrayP[i][j].yy=arrayY[j]; // printf("%g %g",arrayP[12][0].xx,arrayP[12][0].yy); // printf("\n"); int IsFit(point Par) //does point belong to area D? if ((Par.xx<=4) && (Par.xx>=1.99) && (Par.yy>=Par.xx) && (Par.yy<=Par.xx+4)) return 1; else return 0; void CreateDh_(void) //Create area Dh_ for(i=0;i<13;i++) for(j=0;j<33;j++) if (IsFit(arrayP[i][j])) arrayP[ i][j].BelongsToDh_=1; cout << arrayP[1][1].BelongsToDh_<< "\n"; cout << arrayP[1][1].xx << " " << arrayP[1][1].yy<<"\n"; void FillF(void) // calc function F(x,y) at area Dh_ for(i=0;i<13;i++) for(j=0;j<33;j++) if (ar rayP[i][j].BelongsToDh_==1) arrayP[i][j].F=arrayP[i][j].xx*pow(arrayP[i][j].yy,2); else arrayP[i][j].F=0; int IsInner(int i,int j) //Is point inner? if ((arrayP[i-1][j].BelongsToDh_==1) && (arrayP[i+1][j].BelongsToDh_==1) && (arrayP[i][j+1].BelongsToDh_==1) && (arrayP[i][j-1].BelongsToDh_==1)) return 1; else return 0; void CreateDh(void) //Create area Dh for(i=0;i<13;i++) for(j=0;j<33;j++) if ((arrayP[i][j].BelongsToDh_==1) && IsInner(i,j)) arrayP[i][j].BelongsToDh=1; void FillF_() //calc new appr. values of F for(i=0;i<13;i++) for(j=0;j<33;j++) if (arrayP[i][j].BelongsToDh==1) arrayP[i][j].F_=(arrayP[i-1][j].F+arrayP[i+1][j].F+ arrayP[i][j-1].F+arrayP[i][j+1].F)/4; else arrayP[i][j].F_=0; void CountDif() // find maximal difference abs(F-F_) k=0; for(i=0;i<13;i++) for(j=0;j<33;j++) if (arrayP[i][j].BelongsToDh==1) diff[k]=fabs(arrayP[i][j].F_-arrayP[i][j].F); k++; E1=diff[0]; for (k=1;k<500;k++) if (diff[k]>E1) E1=diff[k]; void MakeFile() ofstream f; FILE *f1=fopen("surf.dat","w1"); fclose(f1); f.open("surf.dat",ios::out,0); for(i=0;i<13;i++) for(j=0;j<33;j++) if (arrayP[i][j].BelongsToDh==1) f<
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Под крылом самолета о чем-то поет, тот кто не влез в самолет...
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, реферат по математике "Задача Дирихле", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru