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

mathcad2005

.pdf
Скачиваний:
35
Добавлен:
25.02.2016
Размер:
963.82 Кб
Скачать

ций. Таким образом, для решения системы, например, из m = 100 уравнений потребуется совершить 10158 операций, что не под силу даже самым мощным современным ЭВМ.

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

Если det A 0, то существует обратная матрица A–1. По оп-

ределению

обратной матрицы, это такая

 

матрица,

что

 

 

 

1

0 ...

0

 

 

 

 

 

0

1 ...

0

 

–1

–1

 

 

 

A A

= A

A = E, гдеE – единичная матрица: E =

 

 

 

.

 

 

 

K K K K

 

 

 

 

0

0 ...

1

 

 

 

 

 

 

Если обратная матрица известна, то, умножая на нее СЛАУ

слева, получим: A1Axr = A1 f , Exr = A1 f ,

xr = A1 f . Следо-

вательно, решение СЛАУ свелось к умножению известной обратной матрицы на вектор правых частей. Таким образом, задача решения СЛАУ и задача нахождения обратной матрицы связаны между собой, поэтому часто решение СЛАУ называют задачей обращения матрицы.

Метод обратной матрицы можно использовать для решения систем небольших размерностей. На рис. 2.1 показано решение системы с заданной матрицей A и вектором правых частей b с применением стандартных функций нахождения обратной матрицы и умножения матрицы на вектор.

 

8

4

2

 

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b := 5

 

 

 

 

A :=

3

5

1

 

x := A1 b

x =

 

 

 

3

2

10

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 2.1. Решение СЛАУ методом обратной матрицы

Метод Гаусса

Наиболее известным и популярным точным способом решения линейных систем вида (2.1) является метод Гаусса. Этот метод заключается в последовательном исключении неизвестных. Пусть в системе уравнений

23

a11( 0 )

x1

+a12( 0 )

x 2

+... + a1(m0 )

x m =

f1( 0 )

 

 

x1

+a22( 0 )

x 2

+... + a2( 0m)

x m =

f 2( 0 )

a21( 0 )

 

 

 

 

 

 

 

 

...

 

 

 

 

 

 

 

( 0 )

x1

( 0 )

x 2

( 0 )

x m =

( 0 )

am1

+am 2

+... + amm

f m

первый элемент a11(0) 0 . Назовем его ведущим элементом пер-

вой строки. Поделим все элементы этой строки на a11(0) и исклю-

чим x1 из всех последующих строк, начиная со второй, путем вычитания первой (преобразованной), умноженной на коэффициент при x1 в соответствующей строке.

Получим

x

+a(1)

x

 

+a(1)

x

 

+... + a(1)

 

1

12

 

2

13

 

3

1m

 

 

a22(1) x2 +a23(1)

x3+... + a2(1)m

 

 

 

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

(1)

 

 

(1)

 

 

(1)

 

 

am2

x2 +am3

x3+... + amm

xm = f1(1)xm = f2(1) .

xm = fm(1)

Если a22(1) 0 , то, продолжая аналогичное исключение, приходим к системе уравнений с верхней треугольной матрицей

x

+a(1)

x

 

+a(1)

x

 

+... + a(1) x

 

=

f (1)

 

1

12

 

2

13

 

3

1m

m

 

1

 

 

 

x2 +a23(2) x3+... + a2(2m) xm = f2(2)

 

 

 

 

 

 

 

x3+... + a3(3)m xm = f3(3) .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

K K

 

 

K

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xm = fm(m)

 

 

 

 

 

 

 

 

 

 

 

 

Из нее в обратном порядке находим все значения xi:

xm =

fm(m)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xm1= fm(m11) am(m11)m xm

 

.

 

 

 

 

 

 

 

 

K

K

 

K

 

 

 

x =

f (1)

a(1)

x

2

a(1)

x

... a(1) x

m

1

1

12

 

13

3

1m

24

Процесс приведения к системе с треугольной матрицей называется прямым ходом, а нахождения неизвестных – обратным. Если один из ведущих элементов равен нулю, изложенный алгоритм метода Гаусса неприменим. Кроме того, если какие-либо ведущие элементы малы, то это приводит к увеличению ошибок округления и ухудшению точности счета. Поэтому обычно используется другой вариант метода Гаусса – схема Гаусса с выбором главного элемента. Путем перестановки строк, а также столбцов с соответствующей перенумерацией коэффициентов и неизвестных добиваются выполнения условия:

aii(0) aij(0) , i, j = 1, 2, …, m,

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

Метод прогонки

Часто возникает необходимость в решении СЛАУ, матрицы которых являются слабо заполненными, т.е. содержат много нулевых элементов. В то же время эти матрицы имеют определенную структуру. Среди таких систем выделим системы с матрицами ленточной структуры, в которых ненулевые элементы располагаются на главной диагонали и на нескольких побочных диагоналях. Для решения систем с ленточными матрицами коэффициентов вместо метода Гаусса можно использовать более эффективные методы.

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

ai xi1 ci xi +bi xi+1 = fi ,

(2.2)

где i = 1, 2, …, m. Схема (2.2) имеет трехдиагональную структуру, что хорошо видно из следующего, эквивалентного (2.2), век- торно-матричного представления:

25

c b

0

0

K 0

0

 

0

 

x1

 

a

1

 

1

b

0

K 0

0

0

 

 

 

 

 

2

c

 

x2

 

 

 

2 2

 

 

 

 

 

 

 

 

 

 

0

 

a

 

c b

K 0

0

0

 

 

 

 

 

 

 

x

 

 

 

3

 

3

3

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

K K K K K K K K

 

 

 

M

 

 

0

0

 

0 0 K a

m1

c

m1

b

 

 

x

m1

 

 

 

 

 

 

 

 

 

m1

 

 

 

0

0

 

0 0 K 0

am

cm

 

x

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f

 

 

 

 

1

 

 

 

f2

 

 

 

f3

 

 

 

 

 

=

 

 

.

 

M

 

 

 

 

 

f

m1

 

 

 

 

 

 

 

f

m

 

 

 

 

 

Если при этом выполняется условие ci bi + ai , то говорят, что

матрица этой системы имеет диагональное преобладание. Предположим, что существуют такие наборы чисел αi и βi

(i = 1, 2, …, m–1), при которых

 

 

 

 

xi =αi+1xi+1 + βi+1 .

(2.3)

Уменьшим в

(2.3) индекс на единицу:

xi1 =αi xi + βi

и подставим полученное выражение в (2.2)

 

 

 

 

aiαi xi + ai βi ci xi + bi xi+1 = fi ,

 

откуда x

=

 

bi

x

+

ai βi fi

. Данное равенство в точности

c

a α

 

i

 

i+1

 

c a α

 

 

 

i

i i

 

 

i i i

 

совпадает с (2.3), если при всех i = 1, 2, …, m–1 выполняются рекуррентные соотношения

αi+1 =

 

bi

,

βi+1 =

ai βi fi

.

(2.4)

ci

aiαi

 

 

 

 

 

 

 

 

ci aiαi

 

Процесс вычисления αi и βi можно начать со значений

 

α

1

= b1

,

β = −

f1

.

(2.4)

 

 

c1

 

1

 

c1

 

 

 

 

 

 

 

Далее продолжаем

 

по формулам

 

(2.4) последовательно

при

i = 1, 2, …, m–1. При i = m из (2.2) имеем

 

 

 

am xm1 cm xm = fm .

(2.5)

В то же время при i = m–1 из (2.3) получаем

 

 

 

 

 

xm1 =αm xm + βm .

(2.6)

Подставляя выражение для xm–1 из (2.6) в (2.5) и решая полученное выражение относительно xm, получаем:

26

xm =

am βm fm

,

(2.7)

 

 

cm amαm

 

где αm и βm известны из предыдущего шага. Далее по формулам (2.3) последовательно находятся xm–1, xm–2, …, x1.

Данный способ решения системы уравнений вида (2.2) называется методом прогонки. Исходя из вышеизложенного, можно выделить три этапа метода прогонки. На первом этапе по формулам (2.4), (2.4) определяются так называемые прогоночные ко-

эффициенты αi и βi при i = 2, 3, …, m (прямая прогонка). Затем по формуле (2.7) находится xm. На последнем этапе по формуле

(2.3) определяются xi при i = m–1, m–2, …, 1 (обратная прогонка).

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

Будем называть прогонку корректной, если знаменатели прогоночных коэффициентов (2.4) не обращаются в нуль, и устойчивой, если |αi| < 1 при i = 1, 2, 3, …, m.

Теорема 2.1. Пусть коэффициенты ai, bi уравнения (2.2) при i = 2, 3, …, m–1 отличны от нуля и пусть

ci bi + ai при i = 1, 2, 3, …, m.

Тогда прогонка (2.3)–(2.7) корректна и устойчива. Условия этой теоремы, которые во многих приложениях

выполняются автоматически, являются достаточными условиями корректности и устойчивости прогонки. Если эти условия не выполняются, то можно аналогично схеме Гаусса организовать выбор главного элемента.

2.3. Итерационные методы решения линейных алгебраических систем

Решение СЛАУ методом простых итераций

Система (2.1) может быть преобразована к эквивалентной ей системе вида:

xr = α xr+ β ,

(2.8)

27

где xr – искомый вектор, а α и β – новые матрица и вектор. Будем решать (2.8) методом последовательных приближений. За-

дадим нулевое приближение: xr(0) = b , тогда xr(1) определяется

рекуррентным равенством

xr(1) = α xr(0) + β ,

далее находим xr(2)

xr(2) = α xr(1) + β .

Для k-й итерации получаем

 

 

 

r(k +1)

r(k )

+ β, k = 0,1, 2, ...

(2.9)

x

= α x

Такой итерационный процесс будем называть методом простых итераций (МПИ). Изучим вопрос о сходимости этого процесса, т.е. определим, какие нужно предъявить требования к виду мат-

рицы α, чтобы lim xr(k ) = xr* .

k →∞

Теорема 2.2. Необходимым и достаточным условием схо-

димости МПИ (2.9) при любом начальном векторе xr(0) к решению системы (2.8) является требование, чтобы норма матрицы α была меньше 1:

 

α

 

 

 

<1.

(2.10)

 

 

 

Это требование равносильно условию малости элементов матрицы α по абсолютной величине, т.к. в качестве нормы матрицы используют максимальное значение из сумм модулей элементов строк этой матрицы

n

α = max aij .

1in j =1

Важной проблемой является вопрос о способе остановки итерационного процесса при достижении точности. Наиболее простой способ – это сравнение между собой соответствующих неизвестных на двух соседних итерациях (k+1) и (k). Если максимальная из всех разностей становится меньше заданной точности ε, то итерационный процесс останавливается

28

max xik xik +1 <ε .

1in

Можно применить способ, связанный с вычислением вектора

n

невязки r : ri = aij xkj bi , показывающий, насколько полу-

j =1

ченное приближение xrk отличается от точного решения. Затем

вычисляется норма вектора невязки rr = max | ri | . Если она ма-

1in

ла, т.е. rr <ε , то итерационный процесс останавливается.

Рассмотрим несколько способов построения МПИ.

Метод Якоби

Предположим, что диагональные элементы матрицы A ис-

ходной системы (2.1) не равны 0 (aii 0, i = 1, 2, …, n). Разрешим первое уравнение системы (2.1) относительно x1, второе

относительно x2 и т.д. Получим систему в виде (2.8):

x

 

 

=α

12

x

2

+α

13

x

 

+... +α

1n

x

n

+

β

 

 

 

1

 

 

 

 

 

 

 

 

3

 

 

 

 

 

1

 

 

 

x2 =α21x1 +α23 x3 +... +α2n xn + β2

 

,

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

n

=α

 

 

x

+α

n2

x

2

+... +α

n,n

1

x

n1

+

β

n

 

 

 

 

 

n1 1

 

 

 

 

 

 

 

 

где

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

αij =

 

 

 

ij

, i j

,

 

 

 

βi =

bi

 

,

 

i =1, 2, ..., n .

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

 

aii

 

 

 

 

 

0,

ii

 

 

i = j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Метод, основанный на таком приведении СЛАУ к виду (2.8), называют методом Якоби. Теперь, задав нулевое приближение, по рекуррентным соотношениям (2.9) можем выполнять итерационный процесс. Сформулированное выше условие сходимости в методе Якоби равносильно условию диагонального преобладания:

n

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

j=1 i j

29

Действительно, если это условие выполняется, то и суммы модулей элементов строк матрицы α меньше 1.

На рис. 2.2 приведен пример решения в MathCAD методом Якоби системы с матрицей A и вектором правых частей b:

8

4

2

 

10

 

 

3

5

1

 

 

5

 

A =

,

b =

.

 

3

2

10

 

 

4

 

 

 

 

 

Легко убедиться, что для исходной матрицы A вы-

 

 

0

1

 

 

2

 

 

 

 

3

 

 

 

α :=

 

0

 

5

 

 

 

 

 

 

3

1

 

 

 

 

 

 

 

 

5

 

10

yakobi(ε) :=

1

 

10

4

 

 

8

 

 

 

 

1

β :=

1

 

5

 

 

4

 

 

 

 

 

 

 

 

0

 

 

10

 

 

 

 

 

err 100 x ← β

while err > ε x1 ← α x + β err x1 x x x1

x

полняются

условия диаго-

 

 

 

нального

преобладания, а

yakobi(0.001) =

 

 

для матрицы α – условия

 

 

 

 

 

 

(2.11),

что

обеспечивает

 

 

 

сходимость

итерационного

Рис. 2.2. Решение СЛАУ

процесса.

 

методом Якоби

Метод Зейделя

Под методом Зейделя обычно понимается такое видоизменение МПИ (2.10) решения СЛАУ (2.8), в котором для подсчета

i-й компоненты (k+1)-го приближения к искомому вектору xr* используются уже вычисленные на этом, т.е. (k+1)-м шаге, новые значения первых i–1 компонент. Это означает, что если система (2.8) тем или иным способом сведена (например, с помощью метода Якоби) к системе (2.9) с матрицей коэффициентов

α и вектором свободных членов β , то ее приближение к решению по методу Зейделя определяется системой равенств

x

(k +1)

= α

x

(k ) +

α

12

x

2

(k ) + α

13

x

3

(k )

+ ... + α

1n

x

(k ) + β

1

 

11 1

 

 

 

 

x

 

 

 

x

 

 

 

 

 

 

 

n

x

 

1

x

2

(k +1)

= α

21

x

 

(k +1) + α

22

(k ) + α

23

3

(k ) + ... + α

2n

(k )

+

 

 

 

1

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

n

 

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

 

 

 

(k +1)

= α

 

x

 

(k +1)

+ α

 

 

x

(k +1)

+ +

α

 

x

 

 

(k +1)

+ α

 

x

n

 

n1

 

 

n 2

2

n,n1

n

1

 

 

 

 

n,n

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

β2

. (2.11)

xn (k ) + β3

30

С точки зрения компьютерной реализации МПИ, использование метода Зейделя означает, что элементы массива x будут постепенно замещаться новыми элементами. В связи с такой интерпретацией метод Зейделя иногда называют методом последовательных смещений.

Метод релаксации

Иногда исходную систему (2.8) не удается привести к виду (2.9), выполняя при этом условие сходимости (2.11). В этом случае можно воспользоваться методом релаксации, который осно-

вывается на соотношении xr(k +1) xr(k ) = −Axr(k ) +br , откуда

τ

xr(k +1) = xr(k ) τ(Axr(k ) b ), где τ параметр релаксации. Скаляр-

ные формулы метода релаксации имеют следующий вид:

 

x1(k +1) = x1(k ) τ(a11x1(k ) + a12 x2(k ) +... + a1n xn(k ) b1 )

 

 

 

 

 

(k +1) = x2(k ) τ(a21x1(k ) + a22 x2(k ) + + a2n xn(k ) b2 )

 

 

x2

.

(2.12)

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

 

 

 

(k +1) = x (k ) τ(a

 

 

 

 

 

 

 

 

)

 

 

x

n

x (k ) + a

n2

x

(k ) +... + a

nn

x

n

(k ) b

 

 

 

1

n1 1

 

2

 

n

 

 

Раскрыв скобки, можно привести (2.12) к виду (2.10), где коэффициенты матрицы α и вектор свободных членов β будут

иметь вид: αij =

1τ aij ,i = j

,

βi =τ bi , i =1, 2, ..., n . Подбором

τ aij , i j

параметра τ можно добиться сходимости метода релаксации.

2.4.Стандартные функции пакета MathCAD

ВMathCAD СЛАУ можно решить как в развернутой форме (2.1), так и в более компактной форме (2.2). Для первого способа следует использовать вычислительный блок Given/Find, состоящий из трех последовательных частей:

Given – ключевое слово;

система, записанная логическими операторами в виде равенств и, возможно, неравенств;

Find(x1, … , xM) – встроенная функция для решения системы относительно переменных x1, … , xM.

31

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

Для второй формы записи системы используют встроенную функцию lsolve:

lsolve(A, b) решение системы линейных уравнений; A – матрица коэффициентов системы;

b – вектор правых частей.

На рис. 2.3–2.5 приведены примеры решения СЛАУ с помощью стандартных функций MathCAD.

x := 0 y := 0 z := 0

Given

 

 

 

 

 

 

 

 

 

1

5

2

 

1

 

 

 

 

 

 

 

A :=

 

0.7

12

 

 

 

2.9

 

 

 

 

 

 

 

 

 

 

1x

5y

2z

 

1

 

 

 

 

5

b :=

 

 

 

 

 

 

 

 

3

0

4

3.1

0.7 x

12y

5z

2.9

 

 

 

 

 

 

 

0.186

 

 

3x

0y

4z

 

3.1

 

 

 

lsolve(A ,b) =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.129

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.915

 

 

 

 

 

 

−0.186

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Find

( x

y

z) = −0.129

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.915

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 2.3. Решение СЛАУ

 

 

 

Рис. 2.4. Решение СЛАУ

 

 

с помощью вычислительного

 

 

 

 

 

в форме (2.2)

 

 

блока

Given/Find

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

5

2

 

 

 

1

 

 

 

 

 

 

0.186

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

lsolve(A ,b) =

0.129

 

 

A :=

0.7

12

5

b :=

 

2.9

 

 

 

 

 

3

0

4

 

 

3.1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.915

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 2.5. Символьное решение СЛАУ

32

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]