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

Лекции - Калинкин - 2004

.pdf
Скачиваний:
65
Добавлен:
07.01.2014
Размер:
1.07 Mб
Скачать

(С) ИиКМ РХТУ январь 2004г. Калинкин Владимир Николаевич

1

Лекция –6

Система линейных алгебраических уравнений (СЛАУ).

В общем виде СЛАУ можно записать в следующем виде

a11 x1 +

a12 x2

+ .......

+ a1m xm =

b1

 

 

 

 

.a21 x1 +

a22 x2

+ .......

+ a2m xm =

b2

 

 

 

 

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

 

....

 

 

 

 

an1 x1 +

an2 x2

+ .......

+ anm xm

=

bn

 

 

 

 

Совокупность коэффициентов этой системы aij можно представить в виде матрицы.

=

a

a

a

 

 

a

 

 

 

 

 

 

11

12

13

 

 

1m

 

 

 

 

 

A = [A]

= a21

a22

a23

 

 

a2m

, где . i=1,2,3,…,n;

j=1,2,3,….,m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

an2

an3

 

 

 

 

 

 

 

 

 

an1

anm

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

_

1

 

 

совокупность xj в виде вектора столбца неизвестных X

= x

= x2

 

, j=1,2,3,…,m , а совокупность

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

xm

 

 

 

b

 

 

_

1

 

 

bi в виде и вектора столбца свободных членов (правых частей) B = b

= b2

 

, i=1,2,3,…,n

 

 

 

 

 

...

 

 

 

bn

 

 

Используя выше приведенные определения запишем СЛАУ в матричном виде.

= _ _

= →

 

 

 

A X = B или A x

= b

1

 

 

 

 

x

 

 

 

*

 

 

 

 

_

*

 

 

 

Решить СЛАУ значить найти такие значения вектора X * = x* = x 2

 

при подстановки которого

 

 

 

 

 

 

 

 

...

 

 

 

 

x*m

 

в систему обращает каждое уравнение этой системы в тождество. Классификация СЛАУ

1.Если число уравнений больше чем число неизвестных, т.е. n>m СЛАУ называется переобусловленой

2.Если число уравнений меньше чем число неизвестных, т.е. n<m СЛАУ называется недообусловленой

3.Если число уравнений равно числу неизвестных т.е. n=m СЛАУ называется нормальной

4.Если вектор свободных членов равен нулю b = 0 . СЛАУ называется однородной

5.Если вектор свободных членов не равен нулю b 0 . СЛАУ называется неоднородной

6.Если система, имеет хотя бы одно решение, она называется совместной. Система не имеющая решений, называется несовместной.

7.Совместная система, имеющая единственное решение, называется определенной, а имеющая бесчисленное множество решений, называется неопределенной.

(С) ИиКМ РХТУ январь 2004г. Калинкин Владимир Николаевич

2

→ →

Очевидно, что однородная система всегда совместна, так как имеет хотя бы одно решение x = 0 , которое называется тривиальным примеры графической интерпретации:

2x1 + x2 = 3

x2 = 3 -2x1

система совместная и определенная.

2x1+ 2x2 = 4 x2 = 2 - x1

 

 

 

4

 

 

 

 

 

3

 

 

 

 

 

2

 

 

 

 

 

1

 

 

 

 

 

0

 

 

 

 

-1

0

1

2

3

4

 

-1

 

 

 

 

2x1 + x2 = 3

x2 = 3 - 2x1

 

система совместная и неопределенная.

4x1+ 2x2 = 6 x2 = 3 - 2x1

 

 

 

4

 

 

 

 

 

3

 

 

 

 

 

2

 

 

 

 

 

1

 

 

 

 

 

0

 

 

 

 

-1

0

1

2

3

4

 

-1

 

 

 

 

2x1 + x2 = 3

x2 = 3 - 2x1

 

система несовместная.

4x1+ 2x2 = 4 x2 = 2 - 2x1

 

 

 

4

 

 

 

 

 

3

 

 

 

 

 

2

 

 

 

 

 

1

 

 

 

 

 

0

 

 

 

 

-1

0

1

2

3

4

 

-1

 

 

 

 

Методы решения СЛАУ Все методы решения систем линейных алгебраических можно разделить на две группы: точные и итерационные.

Точные методы позволяют получить решение путем выполнения определенного и точного количества арифметических операций. При этом погрешность решения определяется лишь точностью представления исходных данных и точностью вычислительных операций.

(С) ИиКМ РХТУ январь 2004г. Калинкин Владимир Николаевич

3

Итерационные методы дают некоторую последовательность приближений к решению. Пределом этой последовательности является решение системы, которое возможно определить лишь с некоторой, как правило, заданной степенью точности ε. Количество итераций, для достижения требуемой точности решения, определяется величиной ε, выбором начального приближения и видом системы.

Точные методы

Метод обратной матрицы.

= → →

=

= →

=

 

= →

=

 

=

 

 

A x

= b A1

A x = A1

b E x = A1

b x* = A1

b

 

 

 

=

 

 

2.00

1.00

 

1.00

 

4.00

=

 

0.50

0.20

0.10

 

 

 

 

 

A

 

b

=

1.00

1.50

 

0.50

1.00

A1

=

0.50

0.60

0.20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.00

 

4.00

 

 

 

 

 

 

0.20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.00

 

 

8.00

 

0.50

0.40

 

 

 

 

 

 

 

0.10

 

 

 

 

 

 

0.50

0.20

 

 

 

4.00

1.00

 

 

 

 

x

*

 

 

0.50

0.60

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

0.20

* 1.00

= 1.00

 

 

 

 

 

 

 

 

 

 

0.20

 

 

0.40

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.50

 

 

 

 

 

8.00

1.00

 

 

 

 

Метод Гаусса

= →

Требуется решить систему n линейных уравнений с n неизвестными. A b

= x

Метод Гаусса состоит из двух этапов.

Первый этап (прямой ход) заключается в последовательном исключение неизвестных из уравнений, и состоит из n-1 шага.

На первом шаге, с помощью первого уравнения, исключается x1 из всех последующих уравнений начиная со второго, на втором с помощью второго уравнения исключается x2 из последующих начиная с третьего и так далее. Последним исключается xn-1 из последнего n-ого уравнения так, что последнее уравнение будет содержать только одно неизвестное xn. Это равносильно приведению матрицы коэффициентов к треугольному виду. Строка, с помощью которой исключаются неизвестные, называется ведущей строкой, а диагональный элемент в этой строке - ведущим элементом.

a11

* x1

+

a12 * x2

+

a13

* x3

+ ....

+

a1n * xn

= b1

 

 

a

21

* x

+

a

22

* x

2

+

a

23

* x

3

+ ....

+

a

2n

* x

n

= b

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

* x1

+

a32

* x2

+

a33

* x3

+ ....

+

a3n * xn

= b3

 

B

a31

 

 

 

....

 

 

 

....

 

 

 

....

....

 

 

 

....

 

 

 

 

 

a

n1

* x

+

a

n2

* x

2

+

a

n3

* x

3

+ ....

+

a

nn

* x

n

= b

n

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

* x

+

a

* x

 

+

a

* x

 

 

+

........

+

a

 

* x

 

 

= b

 

 

11

1

+

12

(1)

 

2

+

13

(1)

3

 

+

........

+

1n

(1)

n

 

1

(1)

 

 

0

a22

 

* x2

a23

* x3

a2n

* xn

 

= b2

 

 

 

0

+

0

 

 

+

a33

* x3

(2)

+

........

+

a3n (2) * xn

 

= b3

(2)

...........

 

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

 

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

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

+

0

 

 

+

0

 

 

+

........

+

a

nn

(n1) * x

n

= b

(n1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

..

Второй этап (обратный ход) состоит в последовательном вычислении искомых неизвестных и состоит из n шагов. Решая последнее уравнение, находим единственное неизвестное xn. Далее используя это значение, из предыдущего уравнения вычисляем xn-1 и так далее. Последним найдем x1 из первого уравнения.

(С) ИиКМ РХТУ январь 2004г. Калинкин Владимир Николаевич

4

Алгоритм.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.

 

 

 

 

 

 

 

 

 

 

 

 

=

 

 

 

 

=

Строим расширенную матрицу С размерностью n на n+1, приписав, справа к матрицы A

 

 

 

 

=

 

=

 

т.е. ci,j=ai,j , ci,n+1=bi , где i=1,2,3,…,n

j=1,2,3,…,n

 

 

 

 

 

вектор b . С

= A

 

b

 

 

 

 

c

 

 

 

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

 

c

....

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

 

12

 

 

13

 

1n

 

 

 

1,n+1

 

 

 

=

=

 

c21

c22

 

c23

....

c2n

 

 

c2,n+1

 

 

 

 

 

 

 

 

c31

c32

 

c33

....

c3n

 

 

c3,n+1

 

. Задаем номер ведущей строки k = 1

С = A

 

b =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

...

 

 

 

 

 

.... ....

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

 

 

 

 

 

 

 

 

 

 

c

 

c

 

 

c

 

....

c

 

 

 

c

n,n+1

 

 

 

 

 

 

 

 

n1

 

n2

 

 

n3

 

 

nn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.Преобразуем все строки, расположенные ниже k-ой так, чтобы элементы cik=0, для этого вычисляем множитель β=-сi,k/ck,k и каждую i-ую строку заменяем суммой i–ой и k-ой

умноженной на β,т.е. ci,j=ci,j+β*ck,j

где i = k+1,k+2,k+3,….,n и j = k,k+1,k+2,…,n+1

3.Проверяем k = n-1 если нет то выбираем новую ведущую строку k=k+1 и переходим на пункт 2, иначе выполняем пункт 4.

4.Обратный ход. из последнего n-ого уравнения определяем последнее n-ое неизвестное.

xn=cn,n+1/cn,n

5.Последовательно, из предыдущих уравнений начиная с i=n-1, вычисляем соответствующие

неизвестные xi. Последним, определяется первое неизвестное из первого уравнение.

n

(ci,n1 ci, j * x j )

 

xi =

 

 

j=i+1

 

i = n-1, n-2, n-3,…,1

 

 

 

ci,i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

начало

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ввод n,[A],[B]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xn=cn,n+1/cn,n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=n-1 шаг -1 до 1

 

 

 

 

 

 

 

 

 

 

 

формирование

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

матрицы [C]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k=1 шаг 1 до n-1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s:=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вывод

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[X]

 

 

 

 

 

 

 

i= k+1 шаг 1 до n

 

 

 

 

 

 

 

 

 

 

 

 

xi=(ci,n+1-s)/cii

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

конец

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

β:=-cik/ckk

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j=k шаг 1 до n+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j=i+1 шаг 1 до n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cij=cij+β*ckj

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s:=s+ail*blj

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(С) ИиКМ РХТУ январь 2004г. Калинкин Владимир Николаевич

5

Option Explicit

Option Base 1

Sub Gauss()

Dim n%, c!(), x!()

Dim i%, j%, k%, bet!, s!

n = Cells(1, 1): ReDim c(n, n + 1), x(n)

For i = 1 To n: For j = 1 To n + 1: c(i, j) = Cells(i + 1, j): Next j: Next i For k = 1 To n - 1

For i = k + 1 To n

bet = -c(i, k) / c(k, k) For j = k To n + 1

c(i, j) = c(i, j) + bet * c(k, j) Next j

Next i Next k

x(n) = c(n, n + 1) / c(n, n) For i = n - 1 To 1 Step -1

s = 0

For j = i + 1 To n

s = s + c(i, j) * x(j) Next j

x(i) = (c(i, n + 1) - s) / c(i, i) Next i

For j = 1 To n: Cells(n + 3, j) = x(j): Next j End Sub

Пример:

2

1

1

4

k=1 i=2,3

2

1

1

4

k=2

i=3

2

1

1

4

1

-1.5

-0.5

-1

-0.5

0

-2

-1

-3

 

 

0

-2

-1

-3

2

2

4

8

-1

0

1

3

4

+0.5

 

0

0

2.5

2.5

 

x3= 1

 

x2= 1

 

x1=

1

 

 

 

 

 

 

 

Реально вычисления проводятся на ЭВМ с ограниченной разрядной сеткой, поэтому точность решения определяется суммарной погрешностью округления на промежуточных шагах вычисления. Погрешность результата, в основном, определяется значением ведущего элемента на каждом шаге прямого и обратного хода. Решить СЛАУ с учетом 4-х значащих цифр.

 

 

1

 

 

Точное решение x

=

 

 

 

 

 

 

1

 

 

 

 

-1.000*10-2 6.000*100

 

6.010*100

 

β=-2.500*100/(-1.000*10-2)= 2.500*102

 

 

 

 

2.500*100

5.000*100

 

2.500*100

 

 

 

 

c22=c22 + β*c12

 

 

 

 

 

0.005*103

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

c22=5.000*100 + 2.500*102*6.000*100=5.000*100 + 1.500*103;

1.500 *103

 

 

 

 

 

 

 

 

−−−−−−−−−−−

 

c23=c23 + β*c13

 

 

 

 

 

1.505*103

 

 

 

 

 

 

0.002 *103

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

c23=2.500*100 + 2.500*102*6.010*100=2.500*100 +1.5025*103

1.502 *103

 

 

 

 

 

 

 

 

−−−−−−−−−−−

 

 

 

 

 

 

 

 

1.504 *103

 

(С) ИиКМ РХТУ январь 2004г. Калинкин Владимир Николаевич

6

 

-1.000*10-2

6.000*100

 

6.010*100

 

 

 

 

 

 

 

 

0

1.505*103

 

1.504*103

 

 

 

1.505*103*X2=1.504*103; X2=9.9933*10-1; ; X2=9.993*10-1 X1=(6.010*100-6.000*100*9.993*10-1)/(-1.000*102)=(6.010*100-5.9958*100)/(-1.000*10-2)= (6.010*100-5.995*100)/(-1.000*10-2)=1.5*10-2/(-1.000*10-2)=-1.5*100

 

 

 

 

=

 

 

0

 

не является точным.

 

Полученное решение системы x

1.500 *10

 

 

 

 

 

 

 

 

9.993*101

 

 

 

 

Переставим уравнения местами.

 

 

 

 

 

 

 

 

 

 

β=-(-1.000*10-2/(2.500*100)= 4.000*10-3

 

2.500*100

5.000*100

 

2.500*100

 

 

 

 

 

 

 

-1.000*10-2

6.000*100

 

6.010*100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6.000 *100

 

 

 

 

 

 

 

 

 

 

 

+

 

c22=6.000*100 + 4.000*10-3*5.000*100=6.000*100+2.000*10-2;

0.020 *100

 

 

 

 

 

 

 

 

 

 

 

−−−−−−−−−−−

 

c23=c23 + β*c13

 

 

 

 

 

 

 

 

6.020 *100

 

 

 

 

 

 

 

 

 

6.010 *100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

c23=6.010*100 + 4.000*10-3 2.500*100=6.010*100 + 1.000*10-2;

0.010 *100

 

 

 

 

 

 

 

 

 

 

 

−−−−−−−−−−−

 

 

 

 

 

 

 

 

 

 

 

6.020 *100

 

2.500*100

5.000*100

 

2.500*100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.000*100

6.020*100

 

6.020*100

 

 

 

 

 

 

 

 

6.020*100*X2=6.020*100; X2=1.000*100;

 

 

 

 

 

X1=(2.500*100-5.000*100*1.000*100)/ 2.500*100 = -1.000*100

 

 

 

 

 

=

 

 

0

 

является точным.

 

Полученное решение системы x

1.000 *10

 

 

 

 

 

 

 

 

 

1.000 *100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приведенный пример показывает, что на каждом шаге преобразования следует подбирать ведущий элемент ckk. Для этого используются модификации метода Гаусса. В модификации с частичным выбором на k-ом шаге прямого хода в качестве ведущего выбирается наибольший по модулю элемент из неприведенной части k-ого столбца, т.е. ckk=maxi|cik|, i=k,k+1,k+2,…,n

И строка, содержащая этот элемент, переставляется с k-ой строкой расширенной матрицы. При полном выборе в качестве ведущего элемента выбирается максимальный по модулю элемент из всей неприведенной части матрицы коэффициентов системы, ckk=maxij|cij|, i,j=k,k+1,k+2,…,n Для этого осуществляется необходимая перестановка как строк, так и столбцов в расширенной матрице коэффициентов. При этом следует помнить, что перестановка столбцов равносильна переименованию неизвестных.

Обусловленность систем линейных алгебраических уравнений.

Если система плохо обусловлена, то это значит, что погрешности коэффициентов матрицы и свободных членов или погрешность округления при расчетах могут сильно исказить решение.

 

 

 

 

 

= →

 

 

 

 

Исходную систему уравнений A* x

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

= →

 

 

 

 

 

A* x* = b

+ ∆b , где x* = x

+ ∆ x - получаемое решение, отличающееся от точного x на величину

 

 

 

 

= → →

= → →

= →

ошибки x . Заменив x* получим A * ( x x ) =

b + ∆

b

или A* x b

+ Ax

= ∆b и тогда

(С) ИиКМ РХТУ январь 2004г. Калинкин Владимир Николаевич

 

 

 

 

 

 

 

 

7

= →

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

Ax

= ∆b отсюда можно выразить абсолютную погрешность решения x

= A1 b норма этой

 

 

 

 

 

 

 

 

 

 

 

=

 

 

 

=

 

погрешности определяется соотношением || x || = || A1 b || или || x || ||

A1

|| * || b ||

 

 

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

 

 

 

 

 

|| x

||

 

 

|| A

1

|| * ||

b

||

 

 

 

= → →

Определим относительную погрешность

 

 

из исходной системы A* x = b

||

 

 

 

 

 

 

 

 

 

 

 

x ||

 

 

 

 

 

 

|| x ||

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

 

=

 

 

1

 

 

 

||

A ||

 

 

 

 

 

 

 

получим || A || * || x |||| b || далее определим

 

 

=≤

и подставим в определение

 

 

 

 

 

 

 

 

 

|| x ||

 

||

b ||

 

 

 

 

 

 

 

относительной погрешности получим

|| x ||

 

|| x ||

=

 

 

=

|| b ||

 

|| A

1

|| * || A || *

.

 

|| b ||

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

=

=

 

 

 

 

Вводим понятие числа обусловленности Коб.=Cond( A )=|| A1

|| * || A || и тогда

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

|| x ||

Kоб *

|| b ||

следует иметь ввиду, что мы определяем предельную относительную

 

 

|| x ||

 

 

 

 

 

 

|| b ||

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

погрешность, реальная может быть и меньше. Пример.

 

 

 

 

 

Определить обусловленность систем уравнений:

 

 

 

 

 

 

 

 

 

x

 

+

2x

2

=1

 

 

 

 

 

x

+

 

2x

2

=1

 

0.1

 

 

1)

1

 

 

 

 

 

 

 

2)

 

 

 

1

 

 

 

 

 

при b = 0.0 ,

|| b || =0.1

2x

 

x

2

 

=1

 

 

10x

+ 21x

2

=11

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

без учета погрешности точное решение одно и тоже для обеих систем

1.00

x

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.00

 

 

 

 

 

 

 

 

 

 

=

 

1

2

 

1

=

 

=

0.33

0.67

 

 

 

 

 

для 1-ой системы A =

 

 

 

, b =

, A1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

1

 

 

 

1

 

 

 

0.67

0.33

 

 

 

 

 

=

(1)2 + 22 + 22

+ (1)2

= 3.16 ,

 

 

 

=

 

 

cond=3.33

 

 

 

 

|| A ||=

 

 

|| A1 ||=1.05

 

 

 

 

 

2

 

2

 

 

 

 

 

 

 

 

0.1

 

 

 

 

 

 

 

 

 

 

 

 

 

|| b ||=

1

+1

=1.41,

|| δ b ||=

 

 

= 0.071,

 

тогда|| δ x ||= 3.33* 0.071

= 0.24

 

1.41

 

 

 

 

 

 

 

 

 

 

 

 

=

 

1 2

 

=

1

 

=

21

2

 

 

 

 

 

для 2-ой системы A =

 

 

 

 

, b

 

, A1

=

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

21

 

 

 

11

 

 

 

1

 

 

 

 

 

=

(1)2 + 22 + (10)2

+ 212

 

= 23.37 ,

 

 

=

 

 

cond=546.0

 

 

|| A ||=

 

 

|| A1 ||= 23.37

 

 

 

2

 

 

2

 

 

 

 

 

 

 

 

0.1

 

 

 

 

 

 

 

 

 

 

 

|| b ||=

1

+11

 

 

 

=11.05 ,

|| δ b ||=

 

 

= 0.0091,

тогда|| δ x ||= 546 * 0.0091 = 4.94

 

 

 

11.05

(С) ИиКМ РХТУ январь 2004г. Калинкин Владимир Николаевич

1

Лекция –6.2

Метод простых итераций.

Алгоритм метода состоит из трех этапов.

1. Приведение СЛАУ к итерационному виду, для этого разрешим каждое уравнение относительно соответствующего неизвестного.

a11 x1

+

 

a12 x2

+ .......

+ a1n xn

=

b1

 

 

 

.a21 x1

+

 

a22 x2

+ .......

+ a2n xnm = b2

 

 

 

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

...........

....

 

 

 

an1 x1

+

 

an2 x2

+ .......

+ ann xn

=

bn

 

 

 

x1

=

d1

 

( 0 x1

+ c12 x2

 

+ c13 x3

+ .....

+ c1n xn

)

x2

=

d2

 

( c21 x1

+ 0 x2

 

+ c23 x3

+ .....

+ c2n xn

)

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

 

..........

 

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

 

xn

=

dn

( cn1 x1

+ cn2 x2

 

+ cn3 x3

+ .....

+ 0 xn )

 

 

 

b

 

 

 

0

при i = j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

где di

=

 

i

 

; cij =

aij

при i j

; j=1,2,3,…,n; j=1,2,3,….,n

 

 

 

 

 

 

 

 

aii

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

aii

 

 

 

 

 

 

k+1

 

=

k

 

 

 

 

 

 

 

 

 

x

 

= dC x

где k = 0,1,2,3,…..

 

 

 

Вектор d -приведенный столбец свободных членов.

=

Матрица C -приведенная матрица коэффициентов

=

2.Проверяем условие сходимости || C ||1, если нет, то преобразуем исходную систему.

3.Осуществляем уточнение решение по полученной итерационной формуле. За начальное

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

приближение принимается вектор x

= d . Условием окончания является выполнение условия

 

k +1

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

|| x

x ||ε ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

начало

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x0

= d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= →

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ввод n, A , b ,ε

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

= d C

x0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

формирование

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

матрицы C

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

|| x1x0 ||ε

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

пров. услов. сход

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

|| C ||1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

→ →

 

 

 

 

 

Вывод

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x0 = x1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

конец

(С) ИиКМ РХТУ январь 2004г. Калинкин Владимир Николаевич

2

Вывод условия сходимости

k

 

= →k 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

= d C x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k +1

 

 

= →k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

= d

C x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k +1

k +1

k

= →k

k 1

 

= →k

k +1

 

 

 

k

 

 

k +1

 

 

 

 

 

=

 

 

|| x

||

 

 

=

 

x

= x

x

= C( x

x

 

) = C

x ; || x

|| || C ||

|| x ||;

 

|| C ||1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

|| x

||

 

 

 

 

Пример: с точностью ε=0.3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[A]

 

 

 

 

 

[b]

 

 

 

 

 

[C]

 

 

 

[d]

 

 

 

 

 

 

 

2

 

1

 

 

1

 

 

4

 

 

 

0

 

0.5

0.5

 

2

 

 

|| [C] ||

 

 

 

 

 

1

 

-1.5

 

-0.5

 

-1

 

 

 

-0.6667

0

0.333

0.6667

1.2472

 

 

 

 

 

2

 

2

 

 

4

 

 

8

 

 

 

0.5

 

0.5

0

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(1)+(2)

 

 

3

 

-0.5

 

0.5

 

 

3

 

 

 

0

 

-0.1667

0.167

1

 

 

 

(2)*2-(1)

 

0

 

-4

 

 

-2

 

 

-6

 

 

 

0

 

0

0.5

 

1.5

 

0.8975

 

 

 

 

 

2

 

2

 

 

4

 

 

8

 

 

 

0.5

 

0.5

0

 

2

 

 

 

 

[x1] =

[d]

 

 

 

 

 

[C]

 

 

 

 

[x]0

 

 

[x]1

 

 

[x1]

|| [x1] ||

 

1,00

 

 

0,00

 

-0,17

0,17

 

 

1,00

 

 

0,92

 

 

 

-0,08

 

 

 

 

 

 

 

 

1,50

-

 

0,00

 

0,00

0,50

*

 

1,50

=

 

0,50

 

 

 

-1,00

 

1,6029

 

 

 

 

 

2,00

 

 

0,50

 

0,50

0,00

 

 

2,00

 

 

0,75

 

 

 

-1,25

 

 

 

 

[x2] =

[d]

 

 

 

 

 

[C]

 

 

 

 

[x]1

 

 

[x]2

 

 

[x2]

 

|| [x2] ||

 

1,00

 

 

0,00

 

-0,17

0,17

 

 

0,92

 

 

0,96

 

 

 

0,04

 

 

 

 

 

 

 

 

1,50

-

 

0,00

 

0,00

0,50

*

 

0,50

=

 

1,13

 

 

 

0,63

 

0,8281

 

 

 

 

 

2,00

 

 

0,50

 

0,50

0,00

 

 

0,75

 

 

1,29

 

 

 

0,54

 

 

 

 

[x3] =

[d]

 

 

 

 

 

[C]

 

 

 

 

[x]2

 

 

[x]3

 

 

[x3]

 

|| [x3] ||

 

1,00

-

 

0,00

 

-0,17

0,17

 

 

0,96

 

 

0,97

 

 

 

0,01

 

 

 

 

 

 

 

 

1,50

 

0,00

 

0,00

0,50

*

 

1,13

=

 

0,85

 

 

 

-0,27

 

0,4297

 

 

 

 

 

2,00

 

 

0,50

 

0,50

0,00

 

 

1,29

 

 

0,96

 

 

 

-0,33

 

 

 

 

[x4] =

[d]

 

 

 

 

 

[C]

 

 

 

 

[x]3

 

 

[x]4

 

 

[x4]

 

|| [x4] ||

 

1,00

 

 

0,00

 

-0,17

0,17

 

 

0,97

 

 

0,98

 

 

 

0,01

 

 

 

 

 

 

 

 

1,50

-

 

0,00

 

0,00

0,50

*

 

0,85

=

 

1,02

 

 

 

0,17

 

0,2107

 

 

 

 

 

2,00

 

 

0,50

 

0,50

0,00

 

 

0,96

 

 

1,09

 

 

 

0,13

 

 

 

(С) ИиКМ РХТУ март 2004г. Калинкин Владимир Николаевич

1

Приближение функции.

Для заданных на отрезке значениях независимой переменной xi и соответствующих им значениях зависимой переменной yi, где i=0,1,2,…,n, определить аналитическую зависимость y = f (x) .

Основные этапы при приближение функции.

1.Выбор вида зависимости

2.Выбор критерия

3.Выбор узловых точек

4.Оценка точности

Интерполяция.

Пусть в n+1 точке x0, x1, x2, …., xn определены значения y0, y1, y2, …., yn. Требуется построить многочлен M(x) степени не выше n, который принимает в узловых точках заданные значения, т.е. M(x0)=y0, M(x1)=y1, M(x2)=y2, ……, M(xn)=yn. Интерполяция используется для замены реальной сложной функции более простой на небольшом интервале области определения функции, а также для вычислений промежуточных значений функции заданной таблично. Существует несколько методов.

Метод с использование многочлена Лагранжа.

Рассмотрим многочлен вида

li(x)=ci(x-x0)(x-x1)….. (x-xi-1)(x-xi+1)……. (x-xn-1)(x-xn) (1)

где i = 0,1,2,3,…….,n. Который только в точке xi принимает значение yi , а остальных равен

нулю. li (x j

y

i

при i = j

где j = 0,1,2,3,….,n. из этого условия можно определить ci

) =

при i

 

j

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

li(xi)=ci(xi-x0)(xi-x1)….. (xi-xi-1)(xi-xi+1)……. (xi-xn-1)(xi-xn) = yi

 

 

 

 

 

 

 

 

 

 

сi =

 

 

 

 

 

 

 

 

 

yi

 

 

 

 

 

 

 

 

 

и тогда многочлен (1)

(xi x0 )(xi x1 )......(xi xi1 )(xi xi+1 ).....(xi xn1 )(xi xn )

 

 

 

 

 

 

 

 

 

 

 

примет вид

li (x) = yi

 

(x x0 )(x x1 )......(x xi1 )(x xi+1 ).....(x xn1 )(x xn )

 

 

(2)

(x

i

x

0

)(x

i

x )......(x

i

x

i1

)(x

i

x

i+1

).....(x

i

x

n1

)(x

i

x

n

)

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

А многочлен, который в n +1 узловой точке будет принимать заданные значения, можно представить как сумму многочленов вида (2).

 

 

 

n

 

 

 

 

 

n

 

(x x0 )(x x1 )......(x xi1 )(x xi+1 ).....(x xn1 )(x xn )

L(x) = li (x) = yi

 

 

 

 

 

 

 

 

 

 

 

 

(xi x0 )(xi x1 )......(xi xi1 )(xi

xi+1 ).....(xi

xn1 )(xi xn )

 

 

 

i=0

 

 

 

 

i=0

 

пример

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

xi

 

 

 

yi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

l

 

(x) = y

 

 

(x x1 )

=1

(x 2)

= 2 x

l

(x) = y

(x x0 )

= 2

(x 1)

= 2x 2

 

 

 

 

 

 

 

(2 1)

 

0

 

 

0 (x

0

x )

 

(12)

1

1 (x x

0

)

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

1

 

 

 

 

L(x)=2 – x + 2x – 2 = x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

xi

 

 

 

yi

 

 

 

 

 

 

 

 

 

 

 

 

 

0

-1

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

1

 

 

 

1