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

Ращиков В.И

..pdf
Скачиваний:
100
Добавлен:
13.04.2015
Размер:
1.69 Mб
Скачать

В качестве T(x,t) принять

T (x1 , x2 , x3 ,t) = ρ(x1 + g1t, x2 + g2t, x3 + g3t),

где ρ(х) — одна из функции предыдущего задания, g1=0.l ÷0.9

(i =1,2,3).

3. Вычислить объем |V| тела, ограниченного шестимерным эллипсоидом

6

xi

 

 

Г = (

)2 1 = 0

(ci = 0.1÷2).

ci

i=1

 

 

Вычисление выполнить методом Монте-Карло по формуле

V = dx = dx1dx2dx3dx4dx5dx6 .

(V ) (V )

ПРОГРАММИРОВАНИЕ

Вычисление интеграла проведем для нескольких значений N, заданных отдельным массивом N (L) в головной программе. Соответственно, в программе следует организовать выдачи результатов по достижении числа случайных чисел очередного значения N из массива. Это даст возможность наблюдать за изменением результатов и сходимостью интегрирования с ростом N.

Блок-схема программы представлена на рис. 7.2. Основу программы составляет цикл (блоки 3-10) по l от l до L, где L — заданное число вариантов с различным количеством случайных чисел Nl, для которых осуществляется выдача результатов. В блоке 4 происходит обращение к датчику случайных чисел для вычисления ξ. На рисунке j — текущее число случайных точек, М

число случайных точек в области V, I è V — оценки интеграла I и

объема области V.

В качестве теста необходимо вычислить объём эллипсоида в трёхмерной области в соответствии с пунктом 3 задания. Известно аналитическое решение

V = 43 πc1c2c3.

51

1 Начало

Начальные 2 данные

M=0,j=0,S=0

3

4

6

7

Цикл по l=1,L

ξj

ξj, j=j+1

5

Нет

Г(ξ)≤0

Да

M=M+1,S=S+f(ξ)

Да

j<Nl

Нет

8V = MW / Nl , I WS / Nl

9I , Nl , M , V

10Цикл по l

Графики 11 Результаты

12 Конец

Рис. 7.2. Блок-схема программы вычисления интеграла методом Монте-Карло

52

СОДЕРЖАНИЕ ОТЧЕТА

Отчет должен содержать:

формулы подынтегральной функции и границы области интегрирования для конкретного варианта;текст программы;

значения интеграла I для нескольких значений N, выбран-

ных в диапазоне N~ 102- 104.

КОНТРОЛЬНЫЕ ВОПРОСЫ

1.Какие численные методы называются методами МонтеКар-

ло?

2.Как вычисляются кратные интегралы методом Монте-Карло?

3.Как получена формула (7.3)?

4.Каков порядок погрешности интегрирования методом МонтеКарло?

53

Задание № 8

РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ

Цель работы — изучение прямых и итерационных методов решения систем линейных алгебраических уравнений (СЛАУ), решение одной из систем методом факторизации и методом Зейделя, построение вложенных циклов на выбранном языке программирования.

ПОСТАНОВКА ЗАДАЧИ

Рассмотрим систему п линейных алгебраических уравнений

a x + a x +... + a x = b ,

 

11 1

12

 

2

1n n

1

a21 x1 + a22 x2 +... + a2n xn = b2 ,

 

 

 

 

 

 

 

 

..............................................

a

x + a

n2

x

2

+... + a

x

= b ,

 

n1 1

 

 

nn n

n

которую можно короче записать в матричном виде:

 

 

Ax = b,

 

(8.1)

где А — квадратная матрица размера n × n, x и b n-мерные векторы:

A = (aij; i, j = 1, 2, …, n), x = (xi; i = 1, 2, …, n), b = (bi; i = 1, 2, …, n).

Методы решения таких систем линейных алгебраических уравнений делятся на прямые и итерационные.

Прямой метод

Будем полагать, что матрица А невырожденная, т. е. детерминант A 0 и, следовательно, решение системы (8.1) существует и единственно.

Преобразуем первое уравнение системы (8.1) к виду

x1 + a12(1) +... + a1(1)n xn = b1(1)

54

a(1)

=

a1 j

( j = 2, 3, ...n), b(1)

=

b

 

1

.

 

 

1 j

 

a11

1

 

a11

 

 

 

 

Умножая затем это уравнение на – ai1 и складывая с i-м уравнением (i = 2, 3, …, n), исключим х1 из всех уравнений, получая систему (n – 1) уравнений. Далее аналогично исключим x2, x3 и т. д. Этот процесс исключения называется прямым ходом метода Гаусса. Наконец, остается одно уравнение, из которого находим xn, а затем последовательно остальные неизвестные xn–1, xn–2, …, x1; этот этап решения называют обратным ходом.

Одним из наиболее эффективных прямых методов является используемый в данной работе метод факторизации, называемый также схемой Халецкого (Холесского) или компактной схемой Гаусса. В этой схеме матрица А представляется в факторизованном виде

A = LU,

(8.2)

 

где L (lower) — нижняя треугольная матрица, U (upper) — верхняя треугольная матрица с единицами вдоль главной диагонали:

 

l

0

...

0

 

 

1

u

 

11

l22

...

0

 

 

 

12

L =

l21

 

, U =

0

1

 

...

...

...

 

 

 

 

...

 

 

... ...

 

ln1

ln2

...

lnn

 

 

0

0

... u1n

... u2n .

... ...

... 1

Элементы матриц L и U находятся из матричного уравнения (8.1). Матрица U может быть получена из (8.1) как результат прямого хода метода Гаусса, а матрица L хранит коэффициенты, на которые умножались уравнения в процессе исключения неизвестных в прямом ходе.

После этого исходная система (8.2) сводится к последовательному решению двух систем

Ly = b,

(8.3)

(8.4)

Ux = y

с треугольными матрицами.

Введем расширенные матрицы, дополняя А и U еще одним столбцом:

A + b, ai, n+1 = bi, U + y, ui, n+1 = yi.

(8.5)

55

Решение выполняется по формулам:

 

 

j 1

 

lmj

= amj

lmk ukj ( j = 1, 2, ..., n; m = j, j +1, ..., n);

(8.6)

 

 

k =1

i1

 

 

uim = aim lik ukm / lii (i =1, 2, ..., n; m = i +1, i + 2, ..., n

+1);

 

k =1

 

(8.7)

 

 

n

 

 

 

 

 

xi = ui ,n +1 uik xk (i = n, n 1, ..., 1).

(8.8)

 

 

k =i+1

Формулы (8.6), (8.7) описывают факторизацию матрицы А и решение уравнения (8.3) (прямой ход метода Гаусса), формула (8.8) — решение уравнения (8.4) (обратный ход метода Гаусса).

Решение этим методом встречается с трудностями, если в формуле (8.7) lii 0. Число арифметических операций в методах Гаус-

са имеет порядок O(n3).

Контроль правильности решения осуществляется по величине невязки

ξ = Ax b,

норма которой

 

(8.9)

 

ξ

 

 

 

= max

 

( Ax)i bi

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

должна быть близка к 0. (В формуле выше (Ax)i i-я компонента вектора Ах, где х—полученное решение.)

Итерационный метод

Преобразуем исходную систему уравнений к виду

 

 

x1 = (b1 a12 x2 +... +a1n xn ) / a11

 

 

x2 = (b2 a21x1 + +a2n xn ) / a22

 

 

 

 

 

 

 

 

 

 

 

 

 

..............................................

 

 

x

n

= (b a

x +... + a

nn1

x

n1

) / a

nn

.

 

n

n1 1

 

 

 

Если теперь в правую часть системы в качестве вектора x взять произвольный начальный вектор

x(0) = (x1(0) , x2(0) ,......, xn(0) ) ,

56

то в

левой

части получим новое значение вектора

x(1) = (x(1) , x(1)

,......, x(1) ) .

1

2

 

n

Таким образом мы получаем итерационный метод Якоби, имеющий в компонентах вид

xi(k ) = −aij x(jk 1) / aii +bi / aii (i =1, 2, ..., n).

ij

Метод Якоби сходится, если матрица A обладает диагональным преобладанием, т. е.

aii > aij (i =1, 2, ..., n)

ji

(все диагональные элементы aii > 0, так как матрица А положительно определенная).

Представим матрицу А в виде

A = L + D + U,

(8.10)

где L — нижняя, a U — верхняя треугольные матрицы с нулями вдоль главных диагоналей, D — диагональная матрица:

0

0

...

0

 

a

0

...

0

 

 

 

 

 

 

 

 

11

 

 

 

 

 

L = a21

0

...

0

 

, D =

0

a22

...

0

 

,

...

...

...

...

...

...

...

...

 

 

an2

...

0

 

 

0

0

...

 

 

 

an1

 

 

ann

 

 

0

a

...

a

 

 

 

12

 

1n

 

U =

0

0

...

a2n .

... ...

...

...

 

0

0

...

0

 

 

 

Итерационный метод Зейделя имеет вид

x(k) = D–1(Lx(k) + Ux(k–1) b)

 

или в компонентах

 

 

 

xi(k ) = −aii1

i1

n

 

aij x(jk ) + aij x(jk 1) bi .

 

j=1

j=i+1

 

(8.11)

(8.12)

57

Как мы видим, в этом методе в отличие от метода Якоби в правой части используются значения x(jk ) , уже вычисленные в ходе

данной итерации.

Здесь индекс k – номер итерации. Начальное приближение x(0) в итерационных методах может быть выбрано произвольно, например, можно принять x(0) = 0 или x(0) = b. Итерации проводятся до выполнения одного из условий:

max

xi( k ) xi( k 1)

< δ;

 

ξ( k )

< δ; k kmax ,

i

 

 

 

 

 

где δ — заданная малая величина, kmax — предельное число итераций. Число арифметических операций в итерационных методах имеет порядок O(n2k), где k — число выполненных итераций.

ВАРИАНТЫ ЗАДАНИЙ

 

 

 

n = 5 20;

p, q =1 4;

r,t = 0.1 1.2.

 

 

 

1) a

= 5ip/ 2 ,

 

a

= ±0.01(i p / 2 ± jq / 2 )

(

 

i

j

) , b = 4.5ip/ 2

;

 

ii

 

 

 

ij

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

2) a

=15ip ,

a

= ±ip / 2 jq / 2 (i j),

b = 3.5i p ;

 

 

 

ii

 

 

 

ij

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

3) a =10i p/ 2

, a = ±103 (i / jr )1/ q (i j), b = 9ip/ 2 ;

 

 

 

ii

 

 

 

 

ij

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

4) a = 8ip/3,

a = ±102 (i p

± jq )1 (i j), b = 7ip/3 ;

 

 

 

ii

 

 

 

ij

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

5) a = 9ip/3,

 

a = ±102 (i p / 2 ± jq / 2 )1 (i j), b = 8ip/ 3

;

 

 

ii

 

 

 

ij

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

6) a

= 8.5ip/3 , a

= ±103 exp(

 

 

 

r

 

 

 

)(i

j), b = 7.5it / 2

;

 

 

 

 

 

 

 

 

ii

 

 

 

 

ij

 

r

i ± j

t

 

 

 

i

 

 

 

7) a

=12ir ,

 

 

 

= ±0.1(ij)

 

 

 

 

b =10.5it / 2 ;

 

 

 

a

ij

2

(i j),

 

 

 

ii

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

8) a

=14ir / 3

,

 

a

=102 sh

 

 

r

(i

j),

b = 9.5it / 2 ;

 

 

 

 

 

 

 

 

 

 

 

 

ii

 

 

 

 

ij

 

i ± j

t

 

 

 

 

 

 

 

 

i

 

 

 

 

9) a

=11ir / 2 ,

 

a

 

= ±102 sin

πr / 2

 

(i

j),

b = 8.5tt / 3.

 

 

 

 

 

 

 

 

 

 

ii

 

 

 

ij

 

 

 

i ± j

t

 

 

 

 

 

 

 

i

 

 

 

58

ПРОГРАММИРОВАНИЕ

Компактная схема Гаусса. Для экономии памяти компьютера треугольные матрицы L, U и вектор у можно объединить в единую матрицу с элементами

l11

u12

u13

u1n

u1,n+1

 

l

l

u

23

u

2n

u

2,n+1

 

 

12

22

 

 

 

 

 

l

l

l

 

u

 

u

 

 

 

31

32

33

3n

 

3,n+1

 

 

 

 

 

 

 

 

 

 

 

 

 

l

l

l

l

 

u

n,n+1

 

 

1n

2n

 

3n

nn

 

 

(поэтому этот метод и называют компактной схемой Гаусса).

При таком объединении главная диагональ матрицы U в памяти компьютера исчезает, однако равенство единице всех ее элементов уже учтено в формуле обратного хода (8.9) тем, что коэффициент

перед ui,n+1=yi равен 1. Удобнее, однако, сохранить обозначения в формулах (8.2) — (8.8), но совместить матрицы L и U в памяти

компьютера, пользуясь оператором эквивалентности.

При составлении программы некоторые усложнения возникают из-за того, что суммирование в формулах (8.6) — (8.8) допустимо лишь тогда, когда верхний предел суммы не меньше нижнего.

Кроме того, вычисление решения х в (8.8) можно организовать так, чтобы переменная цикла i не убывала, а возрастала. Составленная с учетом этих особенностей блок-схема программы приведена на рис. 8.1.

Отметим, что из внутреннего цикла допускается принудительный выход как во внешний цикл, так и к другим операторам программы, а из внешнего цикла принудительный выход допускается лишь к операторам вне вложенного цикла, т. е. и здесь соблюдается общее правило «вход в цикл возможен лишь через заголовок».

В блоках 3-9 вычисляются матрица А и правая часть b системы уравнений, блоки 10-29 составляют прямой ход, блоки 31-38 — обратный ход, в блоке 39 вычисляется норма невязки.

59

1

Начало

 

Цикл

 

Цикл по

xn

= un, na

31

 

 

 

 

по m= j,n

12

m= ia,na

20

 

 

32

 

Начальные

 

 

 

 

 

Цикл

2

Данные

 

 

 

 

 

 

по i=1,n-1

 

na=n+1

 

w = amj

13

w = aim

21

 

 

33

 

 

 

 

n2

= n i,

 

Цикл

 

 

 

 

 

 

 

 

 

14

 

22

k0

= na i,

3 по i = 1,n

 

Да

 

i1 <1

Да

w = 0

 

 

 

 

 

j

<1

 

 

 

 

34

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

a , a

 

Нет

15

 

Нет

23

Цикл

 

 

ii

ina

 

 

 

 

 

 

по k=k0,n

 

 

 

 

Цикл

 

Цикл

 

 

Цикл

 

по k=1,j1

 

по k=1,i1

 

 

35

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5 по j = 1,n

 

16

 

 

24

w = w + un2k xk

6

aij (i j)

 

w = w lmk ukj

 

w = w lik ukm

 

Цикл

 

 

 

 

 

 

 

 

 

 

 

 

 

Цикл

 

Цикл

 

 

по k

 

 

 

 

 

 

 

 

 

 

7

Цикл

 

по k

 

по k

 

 

36

 

 

 

 

 

 

 

 

по j

 

 

17

 

25

xn2

= un2 na

w

 

 

 

 

 

 

 

Цикл

 

 

 

 

 

26

 

 

37

 

 

 

 

 

 

 

Цикл

 

8

 

 

 

 

 

 

 

 

по i

 

 

 

 

ulm = w / lii

 

 

 

lmj = w

18

 

по i

 

 

 

 

38

 

 

 

 

 

 

 

 

 

 

 

9

A,b,n

 

Цикл

19

Цикл

27

 

x, ξ c

 

 

 

по m

 

по m

 

 

 

39

 

 

 

 

 

 

 

 

 

 

 

 

i=1,j=1

 

 

 

 

28Да

 

Конец

 

10

 

 

 

 

 

L,U

40

 

 

 

 

 

 

 

i m

 

 

 

 

i1 = i 1,ia

= i +1,

 

 

Нет

 

30

 

 

j1 = j 1

 

 

 

 

i = i +1, j = j +1 29

 

 

 

11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 8.1. Блок-схема метода факторизации

 

 

 

60