Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ALL_

.DOC
Скачиваний:
17
Добавлен:
07.03.2015
Размер:
1.11 Mб
Скачать

. .

  1. 8.

; ;

; ;

; ;

. .

  1. 10.

; ;

; ;

; ;

. .

  1. 12.

; ;

; ;

; ;

. .

13. 14.

; ;

; ;

; ;

. .

15. 16.

; ;

; ;

; ;

. .

17. 18.

; ;

; ;

; ;

. .

  1. 20.

; ;

; ;

; ;

. .

21. 22.

; ;

; ;

; ;

. .

23. 24.

; ;

; ;

; ;

. .

25. 26.

; ;

; ;

; ;

. .

27. 28.

; ;

; ;

; ;

. .

29. 30.

; ;

; ;

; ;

. .

Задание 5.

Тема: Стационарное уравнение.

Постановка задачи.

Алгоритм.

  1. Определяем исследуюмую область.

  1. Накладываем квадратную сетку с шагом h. И определяем число точек по осям x и y:

; ;

; ;

  1. Создаем динамический массив - значения искомой функции:

double * * U;

U = new doble * [nx];

for ( int i = 0; i < nx; i++ ) U[i] = new doble [ny];

Освобождение памяти:

for ( i = 0; i < nx; i++ ) delete [] a[i]; delete [] a;

  1. Определяем значения искомой функции в точках, лежащих на границах.

Например:

// со стороны AB и CD:

y = 0;

for (j=0; j<ny; j++)

{

U[0][j]= 30*y; // AB

U[nx-1][j]= 0; //CD

y+=h;

}

// Со стороны BC и AD:

x=0;

for (i=0; i<nx; i++)

{

U[i][0]= 0; // AD

U[i][ny-1]=30(1-x*x); //BC

x+=h;

}

  1. В точках внутри исследуемой значения искомой функции равны нулю.

for (i=1; i<nx-1; i++) for (j=1; j<ny-1; j++) U[i][j]=0;

Замечание.

Значения искомой функции внутри исследуемой области можно определить с помощью интерполяции, что позволяет существенно сократить число итераций.

Например, Линейная интерполяция по оси x:

for ( j=1 ; j<ny-1;j++ )

{

delta=(U[nx-1][j]-U[0][j])/(nx-1);

for ( i=1 ; i<nx-1 ; i++ ) U[i][j]=U[0][j]+delta * i ;

}

// Для U[nx-1][j] должно выполнятся равенство: U[nx-1][j]=U[0][j]+delta * (nx+1);

  1. Организуем итерационный процесс. Устанавливаем некоторый признак : pr=1; pr=true. На каждой итерации выполняем следующее:

6.1. Организуем циклы по всем внутренним точкам исследуемой области и вычисляем значения искомой функции по формуле Либмана. Проверяем условие:

|-| < E, (*)

где E заданная точность. E=0,01.

Если это условие не выполнятся, то признаку присваивается значение 0: pr=false;

Например:

const double eps=0.01;

double uprom;

int pr;

do {

pr=1;

for ( i=1 ; i<nx-1 ; i++ ) for ( j=1 ; j<ny-1 ; j++ )

{

uprom=U[i][j];

U[i][j]=0.25*(U[i-1][j]+U[i+1][j]+U[i][j-1]+U[i][j+1]);

if ( fabs( uprom -U[i][j]) >=eps ) pr=0'

}

Условие (*) должно выполнятся во всех внутренних точках исследуемой области. Если хотя бы в одной внутренней точке условие (*) не выполнятся, признак будет равен нулю.

// Отрисовка;

} while (pr==0);

6.2. Рисуем график полученных значений искомой функции , график будет трехмерным.

Если если трехмерная графика вызывает проблемы, то можно фиксировать одну координату и рисовать график зависимости U(x,y*), где y* - фиксированное значение координаты.

6.3 Если признак равен нулю – pr=false, переходим к пункту 6.1. Иначе :

7. Остановка программы.

Задание(1):

Используя метод сеток, составить приближенное решение задачи Дирихле для уравнения Лапласа в квадрате ABCD с вершинами А(0,0), В(0,1), С(1,1), D(1,0); шаг h=0.2. При решении задачи использовать итерационный процесс усреднения Либмана до получения ответа с точностью до 0,01.

Варианты указывают формулы, задающие искомую функцию на сторонах квадрата ABCD.

Варианты.

№ варианта

U

U

U

U

1

30y

30(1-x²)

0

0

2

20y

30(cos)

30(cos)

20 x²

3

50y(1-y²)

0

0

50sinπx

4

20y

20

20y²

50x(1-x)

5

0

50x(1-x)

50y(1-y²)

50x(1-x)

6

30sinπy

20x

20y

30x(1-x)

7

30(1-y)

20

20y

30x(1-x)

8

50sinπy

30

30y²

50sinπx

9

40y²

40

40

40(sin)

10

50y²

50(1-x)

0

60x(1-x²)

11

20y²

20

20y

10x(1-x)

12

40

40(1-x)

20y(1-y)

0

13

20(cos)

30x(1-x)

30y(1-y²)

20(1-x²)

14

30y²(1-y)

50sinπx

0

10x²(1-x)

15

20y

20(1-x²)

30(1-y)

0

16

30(1- y²)

30x

30

30

17

30(cos)

30x²

30y

30(cos)

18

0

50sinπx

50y(1-y²)

0

19

20

20

20y²

40x(1-x)

20

50y(1-y)

20x²(1-x)

0

40x(1-x²)

21

20sinπy

30x

30y

20x(1-x)

22

40(1-y)

30

30y

40(1-x)

23

20sinπy

50

50y²

20sinπx

Задание(2):

Используя метод сеток, составить решение дифференциального уравнения Лапласа с заданными начальными условиями, шаг h=0.1. Уточнение решения производить до сотых долей с помощью метода верхней релаксации.

Варианты.

1. (Г); U(x,y)= |x|+|y|

2. (|x|+2)*(|y|+2) = 12 (Г); U(x,y)= 2|x|+|y|

3. |y| = 4-x², xЄ [-2;2] (Г); U(x,y)= |x|*|y|

4. x²+ y²=16 (Г); U(x,y)= |x|+2|y|

5. (Г); U(x,y)= |x|*|y|

6. |x| = 4-y², xЄ [-4;4] (Г); U(x,y)= |x|+|y|

7. (|x|+2)*(|y|+2) = 12 (Г); U(x,y)= |x|*|y|

8. (Г); U(x,y)= 2|x|+|y|

9. (Г); U(x,y)= |x|*|y|

10. |y| = 4-x², xЄ [-2;2] (Г); U(x,y)= |x|+|y|

11. x²+ y²=16 (Г); U(x,y)= 0.5|x|+|y|

12. (Г); U(x,y)= |x|+0.5|y|

1. |x| = 4-y², xЄ [-4;4] (Г); U(x,y)= |x|+

2. (|x|+2)*(|y|+2) = 12 (Г); U(x,y)= 2|x|+0.5|y|

3. (Г); U(x,y)= |x|+|y|

4. (Г); U(x,y)= 2|x|+0.5|y|

5. |y| = 9-x², xЄ [-3;3] (Г); U(x,y)= |x|+|y|

6. x²+ y²=16 (Г); U(x,y)= |x|+2|y|

7. (Г); U(x,y)= 0.5|x|+|y|

8. |x| = 9-y², xЄ [-9;9] (Г); U(x,y)= 0.5|x|+|y|

9. (Г); U(x,y)= 0.5|x|+2|y|

10. (Г); U(x,y)= 0.5|x|*|y|

11. (|x|+3)*(|y|+2) = 18 (Г); U(x,y)= |x|+0.5|y|

12. |y| = 9-x², xЄ [-3;3] (Г); U(x,y)= 2|x|+|y|

13. (|x|+2)*(|y|+3) = 18 (Г); U(x,y)=2|x|+0.5|y|

Задание 6.

Тема: Методы оптимизации.

Постановка задачи.

Алгоритм.

Задание:

  1. Минимизировать функцию методом перебора в квадрате , .

Написать программу перебора, реализующую два этапа:

Первый перебор – определение точки минимума с точностью ;

Второй перебор – в окрестности найденной точки минимума – определение точки минимума с точностью .

  1. Ту же задачу решить методом градиентного спуска в квадрате ,.

Варианты.

A

B

C

D

1

1.2

-1.4

0.01

0.11

2

2.2

-1.3

0.04

0.12

3

3.2

-1.2

0.02

0.13

4

4.2

-1.1

0.16

0.14

5

5.2

-1.0

0.25

0.15

6

6.2

-0.9

0.36

0.16

7

7.2

-0.8

0.49

0.17

8

8.2

-0.7

0.64

0.18

9

9.2

-0.6

0.81

0.19

10

10.2

-0.5

0.94

0.2

11

11.2

-0.4

1.0

0.21

12

12.2

-0.3

1.21

0.22

13

13.2

-0.2

1.44

0.23

14

14.2

-0.1

1.69

0.24

15

15.2

0.0

1.96

0.25

16

16.2

0.0

1.99

0.26

17

17.2

0.1

2.56

0.27

18

18.2

0.2

2.89

0.28

19

19.2

0.3

3.24

0.29

20

20.2

0.4

3.81

0.30

21

30.0

1.4

8.41

0.40

22

29.0

1.3

7.29

0.39

23

28.0

1.2

6.98

0.38

24

27.0

1.1

6.76

0.37

25

26.0

1.0

6.25

0.36

26

25.0

0.9

5.76

0.35

27

24.0

0.8

5.29

0.34

28

23.0

0.7

4.84

0.33

29

22.0

0.6

5.02

0.32

30

21.0

0.5

4.00

0.31

31

20.0

0.4

3.81

0.30

32

19.0

0.3

3.24

0.29

33

18.0

0.2

2.89

0.28

34

17.0

0.1

2.56

0.27

35

16.0

0.0

1.99

0.26

36

15.0

0.0

1.96

0.25

36

14.0

-0.1

1.69

0.24

37

13.0

-0.2

1.44

0.23

38

12.0

-0.3

1.21

0.22

39

11.0

-0.4

1.00

0.21

40

10.0

-0.5

0.94

0.20

41

9.0

-0.6

0.8

0.19

42

8.0

-0.7

0.64

0.18

43

7.0

-0.8

0.49

0.17

44

6.0

-0.9

0.36

0.16

45

5.0

-1.0

0.25

0.15