Санкт-Петербургский Государственный Политехнический Университет Факультет физики и нанотехнологий Кафедра космических исследований

advertisement
Санкт-Петербургский Государственный Политехнический Университет
Факультет физики и нанотехнологий
Кафедра космических исследований
КУРСОВОЙ ПРОЕКТ
Дисциплина: Программирование
Тема: Решение системы линейных алгебраических уравнений
Выполнил студент гр. 2102 Фролов Дмитрий Александрович__________________
Руководитель к. ф.-м. н., доцент Капралов Владимир Геннадьевич_____________
« ____» ___________ 2012 г.
Санкт-Петербург
Задачи.




Разработать программу, которая численно решает системы линейных
алгебраических уравнений точным и итерационным методами.
(Вариант 66, a=3.1 , b =14)
Сопоставить результаты точного и приближённого решений.
Проверить программу на решении плохо обусловленной системы.
Для плохо обусловленных систем графически оценить зависимость нормы матрицы
от N – количества уравнений, и  - погрешности.
𝑎−6
1
1
1
1
1
1
𝑎−4
1
1
1
𝑎−2 1
1
1
𝑎
|𝑏 − 4
|𝑏 − 2
| 𝑏
|𝑏 + 2
Плохо обусловленная система
Методы решения.
1. Метод Гаусса.
Простой метод Гаусса состоит в следующем : в СЛАУ, записанной в виде матрицы,
производится деление первого уравнения системы на коэффициент при первом
неизвестном (если он ненулевой, иначе – меняем строки местами), после чего это
уравнение, умноженное на коэффициенты при первом неизвестном остальных
уравнений системы, вычитается из соответсвующего уравнения. Тем самым первое
неизвестное исключается из системы, за исключением первого уравнение. Тем же
способом последовательно исключаются остальные элементы, пока не получится
уравнение, содержащее лишь одну переменную, которая тут же находится. Далее
обратным ходом (подстановкой найденных переменных в уравнения) находятся
остальные неизвестные.
2. Метод простой итерации.
Имеем систему вида Ax=b.Приводим систему к виду, пригодному для решения
МПИ, домножая исходную систему на транспонированную матрицу А. Далее 𝐵 =
1
𝐸 + µ𝐴, где µ = ||𝐴|| и с=µb. Берём за начальный вектор вектор с, и достраиваем
‖𝐵‖
последовательность векторов по формуле xk+1=Bxk+c , пока 1−‖𝐵‖ ‖𝑥 𝑘 − 𝑥 𝑘+1 ‖
меньше .
Перед решением заданной СЛАУ следует проверить, пригодна ли она для решения этими
методами, проверив, не равет ли нулю det(A), что программа выполняет. В случае det(A)=0
программа приступает сразу к вычислениям с плохо обусловленными матрицами и
построению графиков.
Анализ результатов.
Разработанная программа выполняет анализ полученных результатов, а именно – расчёт
ошибки вычислений для метода Гаусса и МПИ.
Можно видеть, что метод Гаусса гораздо точнее метода простых итераций. В случае а=3.1
и b=14 ошибка метода Гаусса на пять порядков меньше, нежели ошибка МПИ. В случае a и
b равных единице, она вообще равна нулю. Предполагаю, что наличие ошибки решения
методом Гаусса в первом случае, и её отсутствие во втором, объясняется возникновением
некой систематической погрешности при вычислениях с нецелыми числами.
В программе присутствует генератор плохо обусловленных матриц, который создаёт
вырожденные СЛАУ по трём параметрам – количеству уравнений, константе , и
множителю N, на который домножается .
Разработанный проект также включает в себя функцию для построения графиков ||N||(n)
и ||N||(1/), причём построение реализовано так, что подписи на осях не статичны, а
изменяются соответственно изменению входных данных и положения точек.
При построении мной была использована норма Фробениуса:
Зависимость нормы от количества уравнений линейна, что, в принципе, более-менее
очевидно из формулы.
Зависимость же нормы от константы  нелинейна, и асимптотически сходится к значению
в пределах 3.2÷3.3
Download