Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_ОМ2_edit.doc
Скачиваний:
13
Добавлен:
17.03.2016
Размер:
2.67 Mб
Скачать

Приклад програми

// Розв’язання задачі Діріхле для рівняння Лапласа методом сіток

#include <iostream>

#include <iomanip>

#include <conio.h>

#include <cmath>

using namespace std;

float fab(float x, float y)

{

return 45*y*(1-y); // AB

};

float fbc(float x, float y)

{

return 25*x; // BC

};

float fcd(float x, float y)

{

return 25; // CD

};

float fad(float x, float y)

{

return 25*x*sin(3.14*x/2); // AD

} ;

void main()

{

clrscr();

int p=0;

float e, x,y;

float h=0.2, u[6][6], k[6], U[6][6], du, m=-1;

do

{

clrscr();

cout<<"ZADACHA DIRIHLE:\n\n";

cout<<"UAB=20*y\n";

cout<<"UBC=20\n";

cout<<"UCD=20*y*y\n";

cout<<"UAD=50*x*(1-x)\n\n";

cout<<"0<=x<=1; 0<=y<=1\n\n";

cout<<"1)Rozvjazatu zadachy Dirihle\n";

cout<<"2)EXIT\n\n\n";

cout<<"Vash vubir (1, 2)\t";

cin>>p;

if(p==2)

{exit(1);}

clrscr();

if(p==1)

{

clrscr();

cout<<"Vvedit pohubky: e=";

cin>>e;

cout<<endl;

x=0; y=0;

for(int i=0; i<=5; i++)

{

u[i][5]=fbc(x,1);

u[i][0]=fad(x,0);

u[0][i]=fab(0,y);

u[5][i]=fcd(1,y);

x=x+h;

y=y+h;

}

k[1]=(u[5][1]-u[0][1])/5; cout<<"k[1]="<<k[1]<<endl;

k[2]=(u[5][2]-u[0][2])/5; cout<<"k[2]="<<k[2]<<endl;

k[3]=(u[5][3]-u[0][3])/5; cout<<"k[3]="<<k[3]<<endl;

k[4]=(u[5][4]-u[0][4])/5; cout<<"k[4]="<<k[4]<<endl;

for(int i=1; i<5; i++)

{

for(int j=1; j<5; j++)

{

u[j][i]=u[j-1][i]+k[i];

}

}

cout<<"\nNuljovyj shablon:\n\n";

for(int i=5; i>=0; i--)

{

for(int j=0; j<=5; j++)

{

U[j][i]=u[j][i];

cout<<setw(10)<<U[j][i];

}

cout<<endl;

}

do{

m=0;

for(int i=1; i<5; i++)

{

for(int j=1; j<5; j++)

{

u[j][i]=(U[j-1][i]+U[j+1][i]+U[j][i-1]+U[j][i+1])/4;

du=fabs(u[j][i]-U[j][i]);

U[j][i]=u[j][i];

if(du>m)

{ m=du; }

}

}

} while(m>e);

cout<<"\nVidpovid:\n\n";

for(int i=5; i>=0; i--)

{

for(int j=0; j<=5; j++)

{

cout<<setw(10)<<u[j][i];

}

cout<<"\n";

}

getch();

}

} while(p!=2);

}

Контрольні питання

  1. Які рівняння називають рівняннями з частковими похідними?

  2. Що називають розв’язком рівняння з частковими похідними?

  3. Які задачі називають крайовими задачами?

  4. Запишіть еліптичне рівнянням Лапласа.

  5. Сформулюйте задачу Діріхле.

  6. Назвіть відомі Вам методи розв’язання крайових задач для рівнянь з частковими похідними.

  7. Наведіть алгоритм знаходження наближеного розв’язку задачі Діріхле для рівняння Лапласа методом сіток.

  8. Яку таблицю називають нульовим шаблоном?

Лабораторна робота №6

Тема: Оптимізація функцій

Завдання: 1) Методом золотого перетину знайти найбільше значення унімодальної функції на заданому відрізкуз точністю до 0.01.

2) Методом золотого перетину знайти найменше значення унімодальної функції на заданому відрізкуз точністю до 0.01.

Вар.

Функція

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20