Uploaded by uteshjolmuratov372

455

advertisement
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«МАГНИТОГОРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ им. Г. И. НОСОВА»
Кафедра вычислительной техники и прикладной математики
КУРСОВАЯ РАБОТА
по дисциплине: «Вычислительная математика»
на тему: «Метод вращений решения СЛАУ»
Исполнитель: Сысоев Н.В,, студент 2 курса, АВ-09-1.
Руководитель: Филиппов Е. Г.
Магнитогорск, 2011.
Содержание
Введение
1
Теоретический обзор
1.1
Прямые методы
1.2
Метод Гаусса
1.2.1
Описание метода
1.2.2
Сходимость метода простой итерации
1.2.3
Апостериорная оценка погрешности
1.2.4
Пример
1.3
Метод вращений линейных систем
1.3.1
Описание метода
1.3.2
Контроль точности и уточнение приближенного решения в рамках
прямого метода
1.3.3
Апостериорная оценка погрешности
1.3.4
Пример
1.4
Метод релаксации
1.4.1
Пример
2
Практическая часть
2.1
Таблица идентификаторов
2.2
Листинг программы
2.3
Пример
2.4
Сравнительная таблица
Заключение
Библиографический список
Введение
Как утверждается в книге известного американского математика Валяха,
75% всех расчетных математических задач приходится на решение СЛАУ. Это
не удивительно, так как математические модели тех или иных явлений или
процессов либо сразу строятся как линейные алгебраические, либо сводятся к
таковым посредством дискретизации и/или линеаризации. Поэтому трудно
переоценить роль, которую играет выбор эффективного способа решения
СЛАУ. Современная вычислительная математика располагает большим
арсеналом методов, а математическое обеспечение ЭВМ – многими пакетами
прикладных программ, позволяющих решать различные возникающие на
практике линейные системы. Чтобы ориентироваться среди методов и
программ и в нужный момент сделать оптимальный выбор нужно разбираться
в основе построений методов и алгоритмов, учитывающих специфику
постановок задач, знать их сильные и слабые стороны и границы
применимости.
1
Теоретический обзор
1.1 Прямые методы
математический модель итерация погрешность
Все методы решения линейных алгебраических задач можно разбить на
два класса: прямые и итерационные. Прямые методы – это такие методы,
которые приводят к решению за конечное число арифметических операций.
Если операции реализуются точно, то и решение также будет точным (в связи
с чем к классу прямых методов применяют название точные методы).
Итерационные методы – это методы в которых точное решение может быть
получено лишь в результате бесконечного повторения единообразных
действий.
Эффективность способов решения системы
a11 x1  a12 x2  ...  a1m xm  f 1 ,

 a21 x1  a22 x2  ...  a2m xm  f 2 ,

.....................................


 am1 x1  am2 x2  ...  amm xm  f m . или
иначе, векторно-матричных уравнений Ах=f, где f=(f1, f2, …,fn)T –
вектор свободных членов и
х=( х1, х2, …,хn)T – вектор неизвестных, а А = (аi j )ni,j=1 – вещественная
n×n-матрица коэффициентов данной системы, во многом зависит от структуры
и свойств матрицы А : размера, обусловленности, симметричности,
заполненности и др.
Так размерность системы (т.е число n) является главным фактором,
заставляющим вычислителей отвернуться от весьма привлекательных в
теоретическом плане и приемлемых на практике при небольших n формул
Крамера.
1.2 Метод Гаусса
1.2.1 Описание метода
Рассмотрим один из самых распространенных методов решения СЛАУ
–
метод
Гаусса.
Этот
метод
(который
называют
также
методом
последовательного исключения неизвестных) известен в различных вариантах
уже более 2000 лет.
Вычисления с помощью метода Гаусса состоят из двух основных этапов,
называемых прямым ходом и обратным ходом. Прямой ход метода Гаусса
заключается в последовательном исключении неизвестных из системы (1):
для преобразования её к эквивалентной системе с верхней треугольной
матрицей. Вычисления значений неизвестных производят на этапе обратного
хода.
1.2.2 Алгоритм.
1.2.3 Апостериорная оценка погрешности.
1.2.4 Пример
1.3 Метод вращений линейных систем
1.3.1 Описание метода.
Как и в методе Гаусса, цель прямого хода преобразований в этом методе
– приведение системы к треугольному виду последовательным обнулением
поддиагональных элементов сначала первого столбца, затем второго и т.д.
a11 x1  a12 x2  ...  a1m xm  f 1 ,

 a21 x1  a22 x2  ...  a 2m x m  f 2 ,

.....................................


 a m1 x1  a m2 x 2  ...  a mm x m  f m .
Пусть с1 и s1 – некоторые отличные от нуля числа. Умножим первое
уравнение исходной системы (1) на с1, второе на s1 и сложим их; полученным
уравнением заменим первое уравнение системы. Затем первое уравнение
исходной системы умножаем на –s1, второе – на c1 и результатом их сложения
заменим второе уравнение. Таким образом, первые два уравнения (1)
заменяются уравнениями
(с1а11  s1a21 ) x1  (c1a12  s1a22 ) x2  ...  (c1a1m  s1a2 m ) xm  c1 f1  s1 f 2 ,
( s1a11  c1a21 ) x1  ( s1a12  c1a22 ) x2  ...  ( s1a1m  c1a2 m ) xm   s1 f1  c1 f 2 .
На параметры с1 и s1 наложим два условия :
 условие исключения х1 из второго уравнения и
с12  s12  1
 условие нормировки.
c1 
Отсюда
a11
2
2
a11
 a21
, s1 
a21
2
2
a11
 a21
.
Эти числа можно интерпретировать как косинус и синус некоторого угла
1 (отсюда название метод вращений, каждый шаг такого преобразования
можно рассматривать как вращение расширенной матрицы системы в
плоскости обнуляемого индекса).
В результате преобразований получим систему
a11(1) x1  a12(1) x 2  ...  a1(1m) x m  f1(1) ,

(1)
a 22
x 2  ...  a 2(1m) x m  f 2(1) ,


a31 x1  a32 x 2  ...  a3m x m  f 3 ,
...................................................

a m1 x1  a m 2 x 2  ...  a mm x m  f m ,

где
a1(1j)  c1 a1 j  s1 a 2 j
( j  1,2,..., m),
a 2(1j)   s1 a1 j  c1 a 2 j
f1(1)  c1 f1  s1 f 2 ;
( j  1,2,..., m),
f 2(1)   s1 f1  c1 f 2 .
Далее первое уравнение системы заменяется новым, полученным
сложением
результатов
умножения
первого
и
третьего
уравнений
соотведлтственно на
с2 
(1)
a11
(a )  a
(1) 2
11
2
31
,
s2 
a31
(a )  a
(1) 2
11
2
31
,
а третье – уравнением, полученным при сложении результатов
умножения тех же уравнений соответственно на –s2 и с2. Получим систему
a11( 2) x1  a12( 2) x 2  ...  a1(m2) x m  f1( 2) ,

(1)
a 22
x 2  ...  a 2( 2m) x m  f 2(1) ,


(1)
a32
x 2  ...  a3(1m) x m  f 3(1) ,


a 41 x1  a 42 x 2  ...  a 4 m x m  f 4 ,
...................................................

a m1 x1  a m 2 x 2  ...  a mm x m  f m ,
где
a1( 2j )  c2 a1(1j)  s 2 a3 j
a3(1j)   s 2 a1(1j)  c2 a3 j
( j  1,2,..., m),
( j  2,3,..., m),
f1( 2)  c 2 f1(1)  s 2 f 3 ;
f 3(1)   s 2 f1(1)  c2 f 3 .
Выполнив преобразование m-1 раз, придем к системе
a11( m 1) x1  a12( m 1) x 2  ...  a1(mm 1)  f1( m 1) ,

(1)
a 22
x 2  ...  a 2(1m) x m  f 2(1) ,


........................................

(1)

a m(12) x 2  ...  a mm
x m  f m(1) .

Вид полученной системы такой же, как после первого этапа
преобразований
методом Гаусса. Эта система обладает следующим
свойством: длина любого вектора-столбца (эвклидова норма) расширенной
матрицы остается такой же, как у исходной матрицы. Следовательно, при
выполнении преобразований не наблюдается рост элементов.
Далее по этому же алгоритму преобразуется матрица
(1)
a 22
x 2  ...  a 2(1m) x m  f 2(1) ,

........................................ .
a (1) x  ...  a (1) x  f (1)
mm m
m
 m2 2
и т.д.
В результате m-1 этапов прямого хода система будет приведена к
треугольному виду.
a11( m 1) x1  a12( m 1) x 2  ...  a1(mm 1) x m  f1( m1) ,

( m2)
a 22
x 2  ...  a 2( mm 2 ) x m  f 2( m 2 ) ,


................................................

(1)
(1)

a
x

f
mm m
m .

Нахождение неизвестных не отличается от обратного хода метода
Гаусса.
Треугольная, точнее, трапециевидная структура последней системы
позволяет последовательно одно за другим вычислять значения неизвестных,
начиная с последнего:
(m−1)
xm =
(1)
x2 =
fm
(m−1)
amm
(1)
;
(1)
f2 − a23 x3 − ⋯ − a2m xm
x1 =
(1)
a22
;
f1 − a12 x2 − ⋯ − a1m xm
.
a11
1.3.2 Контроль точности и уточнение приближенного решения в рамках
прямого метода
Прямые методы часто приводят к точному решению СЛАУ при точном
выполнении
предусматриваемых
соответствующими
алгоритмами
арифметических операций (без округлений).
Реальные же вычисления базируются на арифметике машинных (т.е.
усеченных до определенного количества разрядов) чисел. Как отражается на
результате решения системы подмена арифметики действительных чисел
машинной арифметикой, зависит от самой решаемой системы, параметров
применяемого компьютера и системы представления данных, способов
реализации алгоритмов. В любом случае, практически вместо точного
решения СЛАУ прямой метод дает приближенное решение*) (обозначим его
х(0)). Подставив х(0) в выражение ξ:=f-Ax, называемое невязкой, по малости
полученного вектора значения ξ(0)=f-Ax(0) можно с осторожностью судить о
близости найденого решения x(0) к точному решению x. Если, напимер,
|| ξ(0)|| - недостаточно малая величина, то следует искать векторпоправку p такой, что x(0)+р=х есть точное решение системы
a11 x1  a12 x2  ...  a1m xm  f 1 ,

 a21 x1  a22 x2  ...  a 2m x m  f 2 ,

.....................................


 a m1 x1  a m2 x 2  ...  a mm x m  f m . т.е. А(х(0)+р)=f.
Последнее равносильно векторно матричному уравнению
Ар = ξ(0).
Таким образом, нахождение поправки сводится к решению такой же
системы, как и
a11 x1  a12 x2  ...  a1m xm  f 1 ,

 a21 x1  a22 x2  ...  a 2m x m  f 2 ,

.....................................


 a m1 x1  a m2 x 2  ...  a mm x m  f m . ,
где в качестве вектора свободных членов должен быть взят вектор
невязок.
1.3.3 Апостериорная оценка погрешности.
1.3.4 Пример
1.4 Метод релаксации
1.4.1 Пример
2
Практическая часть
2.1 Таблица идентификаторов
trrr(a,f,x,m)
Функция, возвращающая матрицу невязок
prr(a,r,m)
Функция, возвращающая матрицу поправок
maxv(v,el)
Функция, возвращающая модуль максимального элемента вектора v
switchColumns(A,n1,n2,m)
Функция,
возвращающая
матрицу,
полученную
из
А
путем
перестановки n1-ого и n2-ого столбцов
Функция, возвращающая 2 матрицы: матрицу, полученную из A
Podgotovka(A,m)
перестановкой столбцов и пригодную для проведения вычислений;
вектор, содержащий порядок следования неизвестных (1, 2,… n для x1,
x2…xn соответственно) в уравнениях
Функция, реализующая метод вращения. Возвращает 2 матрицы:
rotation(a,f,m,e)
неизвестных и поправок
a
Матрица коэффициентов
f
Матрица свободных членов
x
Матрица неизвестных
m
Количество неизвестных
e
Точность, с которой необходимо производить вычисления
2.2 Листинг программы
ORIGIN  1
trrr ( a f xm) 
for i  1  m
r 0
i
for i  1  m
sum  0
for j  1  m
sum  sum  a
x
i j j
r  f  sum
i
i
r
maxv ( v el) 
maxEl  v
1
for i  2  el
maxEl  v
return maxEl
i
if
v
i
 maxEl
prrr ( a r m) 
for i  1  m  1
p 0
i
r
p

m
a
m
m m
for k  ( m  1)  1
for j  m ( k  1)
summa  summa  p  a
j k j
p
k
r
k
 summa
summa  0
return p
switchColumns ( A n1 n2 m) 
for i  1  m
tmp  A
A
i n1
A
i n2
i n1
A
i n2
 tmp
return A
Podgotovka( A m) 
for k  1  m
dop  k
k
for k  1  m  1
for i  1  ( m  1)
if i  k  m
j k
while 0
Ak k 2  A( i k ) k 2
j j 1
A  switchColumns ( A k j 3)
dop  k
j
dop  j
k
return
 A 


 dop 
rotation ( a f me) 
summa  0
A  Podgotovka ( a m)
a A
1
dop  A
2
for k  1  ( m  1)
for i  1  ( m  1)
if i  k  m
a
c

i k
ak k 2  a( i k ) k 2
a
s

i k
k k
( i k ) k
ak k 2  a( i k ) k 2
b f
f
f
k
c
i k
f
 s
k i
 s
k
i k
b
i k
f
 c
k
k i
i k
f
k i
for j  1  m
g a
a
a
k j
c
k  i j
i k
a
 s
 s
k j
i k
g
k j
i k
a
 c
k  i j
i k
a
k  i j
for k  1  m

 f 0
k j 
k
j 1

m

return "Beskonechno mnogo reshenii" if  0
a
k j

j 1

return "Net Reshenii"
if

0


m

a

f
x
m

a
m
m m
for k  ( m  1)  1
for j  m ( k  1)
summa  summa  x  a
j
f
x 
k
k
 summa
a
k k
summa  0
r  trrr ( a f xm)
p  prrr ( a r m)
while maxv ( p m)  e
x  x p
r  trrr ( a f xm)
p  prrr ( a r m)
for k  1  m
 dop k
X
return
2.3 Пример.
x
X
 
p 
k
k j

 f
k


0
 7.56 3.44 3.02 
a   2.78 3.88 3.39 


 4.76 4.24 3.71 

 46.81 
f   53.43 


 58.73 
 2.683 
lsolve( a f )   777.806 


 908.193 

8
Otvet  rotation a f 310
Подсчитаем матрицу неизвестных(Otvet1) и матрицу поправок(Otvet2)
 2.683 
Otvet   777.806 
1 

 908.193 
 1.054  10 11 





12
Otvet  2.836  10
2 

 1.251  10 12 


Для сравнения, погрешность метода Гаусса: 888
 2.491  10 12 



 10 
 7.079  10

 8.125  10 10 


Таким образом, можно говорить о том, что, действительно, метод
вращений более точен.
2.4 Сравнительная таблица
Заключение
В данной работе был рассмотрен метод релаксации решения систем
линейных
алгебраических
уравнений.
Была
подробно
рассмотрена
теоретическая часть, из которой выводятся различные формулы для
реализации данного метода. А также было выполнено сравнение метода
релаксации с методами простой итерации и Зейделя. Программная реализация
выше описанных методов представлена в приложении А.
По результатам работы можно сделать следующие выводы. Во-первых,
скорость сходимости метода релаксации превышает скорости сходимости
методов простой итерации и Зейделя. Во-вторых, скорость сходимости
напрямую зависит от выбора параметра релаксации. Таким образом, данный
метод удобен для решения СЛАУ средней размерности.
Еще одно достоинство итерационного метода верхних релаксаций
состоит в том, что при его реализации на ЭВМ алгоритм вычислений имеет
простой вид и позволяет использовать всего один массив для неизвестного
вектора.
Библиографический список
1)
Вержбицкий В. М. Основы численных методов: Учеб. пособие для вузов
/ В. М. Вержбицкий. - М. : Высш. шк. , 2002. - 840 с.
2)
И.Г. Серебренникова, Г.М. Коринченко, Вычислительная математика.
МГТУ им Г.И. Носова 2003г. 146с
3)
Е. Волков.Численные методы. М.,1987, 248 с.
4)
А. И. Плис, Н. А. Сливина. Лабораторный практикум по высшей
математике. - М.: "Высшая школа", 1983.
5)
Калиткин Н.Н. Численные методы. М.: Наука, 1978, 512 с.
6)
Демидович Б.П., Марон И.А. Основы вычислительной математики. -М.:
Наука, 1966 г., 664 стр.
7)
Фадеев Д.К., Фадеева В.Н. Вычислительные методы линейной алгебры.
М. Физматлит, 1960.
8)
Воеводин В.В. Вычислительные основы линейной алгебры. - М.: Наука,
1977. - 304 с.
9)
А. Самарский. Введение в численные методы. М.,1988, 270 с.
Размещено на Allbest.ru
Download