МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ им. Н...
11 downloads
264 Views
424KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ им. Н. И. ЛОБАЧЕВСКОГО ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯−
Механико-математический факультет Кафедра теоретической механики
Лабораторная работа
ПРЯМЫЕ МЕТОДЫ РЕШЕНИЯ СИСТЕМ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ
a11x1 +a12x2 +...+a1mxm = f1, a21x1 +a22x2 +...+a2mxm = f2, KKKKKKKKKKKK am1x1 +am2x2 +...+ammxm = fm.
Нижний Новгород 2003
УДК 519.6
Прямые методы решения систем линейных алгебраических уравнений. Лабораторная работа для студентов дневного отделения. Специальность: 01.02 − прикладная математика, системный программист; 01.03 − механика. Библ. назв. 6. Сост. А.Ф.Ляхов, Солдатов Е.В., Чернова Е.В. − Н.Новгород: ННГУ, 1999.−16c.
©Нижегородский государственный университет им. Н.И. Лобачевского, 1997
2
Рассмотрим систему линейных алгебраических уравнений (СЛАУ) [1,2] A ⋅ x = f , (1) где
A
−
матрица
m ×m,
x = ( x1 , x2 ,... xm ) T
−
искомый
вектор,
f = ( f1 , f 2 ,..., f m )T − заданный вектор. Будем предполагать, что определитель матрицы A отличен от нуля, т.е. решение системы (1) существует. Методы численного решения системы (1) делятся на две группы: прямые методы («точные») и итерационные методы. Прямыми методами называются методы, позволяющие получить решение системы (1) за конечное число арифметических операций. К этим методам относятся метод Крамера, метод Гаусса, LU-метод и т.д. Итерационные методы (методы последовательных приближений) состоят в том, что решение системы (1) находится как предел последовательных приближений x (n ) при n → ∞ , где n номер итерации. При использовании методов итерации обычно задается некоторое малое число ε>0 и вычисления проводятся до тех пор, пока не будет выполнена оценка x ( n) − x < ε . К этим методам относятся
метод Зейделя, Якоби, метод верхних релаксаций и т.д. Следует заметить, что реализация прямых методов на компьютере приводит к решению с погрешностью, т.к. все арифметические операции над переменными с плавающей точкой выполняются с округлением. В зависимости от свойств матрицы исходной системы эти погрешности могут достигать значительных величин. Метод Гаусса Запишем систему Ax=f, в развернутом виде a11 x1 + a12 x2 + ... + a1m xm = a21 x1 + a22 x2 + ... + a2m xm =
f1 , f2 ,
....................................................... am1 x1 + am2 x2 + ... + amm xm = f m . Метод Гаусса состоит в последовательном исключении неизвестных из этой системы. Предположим, что a11 ≠ 0 . Последовательно умножая первое уравнеa ние на − i1 и складывая с i-м уравнение, исключим x1 из всех уравнений кроa11 ме первого. Получим систему
a11 x1 + a12 x2 + ... + a1 xm = f 1 , ( 1) a22 x2 + ... + a2(1m) xm = f 2(1) , ..................................... ( 1) am(12) x2 + ... + amm xm = f m(1) , ai1a1j a f = aij − , f i(1) = f i − i1 1 , i, j = 2,3...m. a11 a11 m
где
aij(1)
Аналогичным образом из полученной системы исключим x 2 . Последовательно, исключая все неизвестные, получим систему треугольного вида
3
a11 x1 + a12 x2 + ... + a1k xk + ... + a1m xm = f 1 , ( 1) a22 x2 + ... + a2(1k) xk + ... + a2(1m) xm = f 2(1) ,
..................................... am( m−−11,m) −1 xm−1 + am( m−−11,m) xm = f m( m−1−1) , am( m,m−1) xm = f m( m−1) . Описанная процедура называется прямым ходом метода Гаусса. Заметим, что ее выполнение было возможно при условии, что все
ai(,li) , l = 1,2...m − 1
не
равны нулю. Выполняя последовательные подстановки в последней системе, (начиная с последнего уравнения) можно получить все значения неизвестных.
f m( m−1) xm = ( m−1) , a m ,m
xi =
1 a
( i −1) i ,i
( fi
( i −1)
m
− ∑ aij( i −1) x j ) . j =i −1
Эта процедура получила название обратный ход метода Гаусса.. Метод Гаусса может быть легко реализован на компьютере. При выполнении вычислений, как правило, не интересуют промежуточные значения матрицы А. Поэтому численная реализация метода сводится к преобразованию элементов массива размерности (m×(m+1)), где m+1 столбец содержит элементы правой части системы. Для контроля ошибки реализации метода используются так называемые контрольные суммы. Схема контроля основывается на следующем очевидном положении. Увеличение значения всех неизвестных на единицу равносильно замене данной системы контрольной системой, в которой свободные члены равны суммам всех коэффициентов соответствующей строки. Создадим дополнительный столбец, хранящий сумму элементов матрицы по строкам. На каждом шаге реализации прямого хода метода Гаусса будем выполнять преобразования и над элементами этого столбца, и сравнивать их значение с суммой по строке преобразованной матрицы. В случае не совпадения значений счет прерывается. Один из основных недостатков метода Гаусса связан с тем, что при его реализации накапливается вычислительная погрешность. В книге [ Самарский , Гулин] показано, что для больших систем порядка m число действий умножений и делений близко к m 3 3 . Для того, чтобы уменьшить рост вычислительной погрешности применяются различные модификации метода Гаусса. Например, метод Гаусса с выбором главного элемента по столбцам, в этом случае на каждом этапе прямого хода строки матрицы переставляются таким образом, чтобы диагональный угловой элемент был максимальным. При исключении соответствующего неизвестного из других строк деление будет производиться на наибольший из возможных коэффициентов и следовательно относительная погрешность будет наименьшей. Существует метод Гаусса с выбором главного элемента по всей матрице. В этом случае переставляются не только строки, но и столбцы1. Использование 1
Существует ряд методов аналогичных методу Гаусса (например, метод оптимального исключения [4] стр.31). 4
модификаций метода Гаусса приводит к усложнению алгоритма увеличению числа операций и соответственно к росту времени счета. Поэтому целесообразность выбора того или иного метода определяется непосредственно программистом2. Выполняемые в методе Гаусса преобразования прямого хода, приведшие матрицу А системы к треугольному виду позволяют вычислить определитель матрицы a11 a12 K a1m (1) K a 2(1m) 0 a 22 (1) = a11 ⋅ a 22 K a m( m,m−1) . det A = K K K K ( m −1) 0 0 K a m ,m Метод Гаусса позволяет найти обратную матрицу. Для этого необходимо решить матричное уравнение A⋅ X = E , где Е− единичная матрица. Его решение сводится к решению m систем Ax ( j ) = δ ( j ) , j = 1,2,..., m, у вектора δ нулю.
( j)
j –я компонента равна единице, а остальные компоненты равны
LU–метод
LU-метод основан на том, что если главные миноры матрицы А отличны от нуля, тогда матрицу А можно представить, причем единственным образом, в виде произведения А=LU, где L–нижняя треугольная матрица с ненулевыми диагональными элементами и U–верхняя треугольная матрица с единичной диагональю. Рассмотрим СЛАУ Ax=f. Пусть матрица А (m × m ) допускает LU - разложение. A=LU где
⎡ e11 ⎢e ⎢ 21 L = ⎢ e31 ⎢ ⎢ . ⎢⎣ em1
0 e22 e32
0 0 e33
... ... ...
.
.
em 2
em 3
. ...
⎤ ⎥ ⎥ ⎥ ⎥ . ⎥ emm ⎥⎦ 0 0 0
⎡ ⎢ ⎢ U =⎢ ⎢ ⎢ ⎢⎣
1 0 0
u12 1 0
u13 u 23 1
... ... ...
. 0
. 0
. 0
. 0
u1 m ⎤ u2 m ⎥ ⎥ u3 m ⎥ ⎥ . ⎥ 1 ⎥⎦
или m
∑ eij u jk j =1
= aik ,
i , k = 1,2,..., m ,
Студентам можно предложить самостоятельно построить свой метод исключения неизвестных. 2
5
eij = 0, i < j
u jk = 0, j > k Окончательно запишем
⎧ k ⎪ eij u jk = aik , ⎪ j =1 ⎨ i ⎪ e u =a , ik ⎪ j =1 ij jk ⎩
∑
k ≤i
∑
i