Разработка специализированного программного модуля
Содержание
Введение……………………………………………
- Постановка задачи………………………………………………………….5
- Математическое описание задачи…………………………………………6
- Математическое описание метода Гаусса………………………………6
- Математическое описание метода итераций……………………………9
- Разработка
схемы алгоритма……………………………………………...
10 - Описание входной и выходной информации……………………………15
- Разработка и описание программы……………………………………….16
6 Расчет решения задания и анализ полученных результатов …………..17
Заключение………………………………………
Список использованных источников……………………………………….20
Приложение
А………………………………………………………………..21
Введение
Данная
курсовая работа выполняется на тему
«Разработка
1 Постановка задачи
Используя различные численные методы решить системы линейных уравнений:
а) 7.9x1+5.6x2+5.7x3-7.2x4=6.68,
5.8x1-4.8x2+0.8x3+3.5x4=9.95,
5.3x1+4.2x2-3.2x3+9.3x4=8.60,
3.2x1-1.4x2-8.9x3+3.3x4=1.00;
б) 6x1-x2-x3=11.33,
-x1-x2-6x3=32,
-x1-x2-6x3=42
При
выполнении работы необходимо выделить
и оформить в виде подпрограмм логически
завершенные части решения, имеющие самостоятельную
ценность.
2 Математическое описание задачи
Для решения СЛАУ применяют в основном два класса методов:
- прямые;
- итерационные.
Прямые методы являются универсальными и применяются для решения систем сравнительно невысокого порядка. Итерационные методы Выгодно использовать для СЛАУ высокого порядка со слабо заполненными матрицами.
2.1 Математическое описание метода Гаусса
Метод
Гаусса относится к прямым методам.
Алгоритм метода состоит
из двух этапов. Первый этап называется
прямым ходом метода и заключается
в последовательном исключении неизвестных
из уравнений, начиная с х1
Уравнение, с помощью которого преобразуют
остальные уравнения,
называют разрешающим уравнением, а коэффициент
аij этого уравнения при
неизвестном xi, исключаемом из остальных
уравнений системы.
Метод Гаусса основывается на следующих утверждениях.
1. Системы
уравнений, полученные
в результате
следующих
преобразований:
- перестановка уравнений;
- умножение уравнения на любое число, отличное от нуля;
- прибавление
одного уравнения, умноженного на любое
число,
к другому уравнению,
являются эквивалентными, т.е. имеют одни и те же решения.
- Преобразованиям уравнений системы соответствуют элементарные
преобразования
строк расширенной матрицы
- перестановка строк;
- умножение
всех элементов строки на любое число,
отличное от
нуля; - прибавление
элементов одной строки, умноженных на
одно и то же
число, к соответствующим элементам другой строки.
Отметим,
что при решении системы
Матрицы А и В, полученные одна из другой с помощью элементарных преобразований строк, называются эквивалентными, что обозначается А - В. Чтобы решить систему n уравнений с n неизвестными, необходимо расширенную матрицу системы с помощью элементарных преобразований строк привести к такому виду, чтобы основная матрица системы (стоящая слева от черты) была приведена к треугольной форме, тогда на месте столбца свободных членов (справа от черты) окажется решение системы:
Пусть
дана система n линейных алгебраических
уравнений с n неизвестными:
a11x1+a12x2 +…+a1nxn=b1,
a21x1+a22x2 +…+a2nxn=b2,
… (3)
an1x1+an2x
2+…+annxn=bn,
Решением системы (3) называют упорядоченное множество чисел (ε1, ε2,... εn ), если x1=ε1 х2=ε2, ..., хn=εn превращает уравнения в системе (3) в равенства. Решение системы представляет собой n-мерный вектор, который обозначим через ε.
Рассмотрим общую схему Гаусса для систем, имеющих единственное решение. Пусть а11≠0. В противном случае можно поменять местами первое уравнение с уравнением, в котором коэффициент отличен от нуля. Разделим первое уравнение системы (2) на а11. Оно примет вид:
x1+a12(1)x2+a13(1)x3+…+a1n(1)x
где aij(1)=aij/a11, b1(1)=b1/a11.
(4)
Умножим уравнение (4) на а21 и вычтем полученное уравнение из второго уравнения системы (3). Аналогично преобразовываются остальные уравнения. В результате система запишется следующим образом:
x1+ a12(1) x2+a13(1) x3 +…+a1n(1) xn=b1(1),
a22(1) x2+a23(1) x3 +…+a2n(1) xn=b2(1),
…
an2(1)
x2+an3(1)
x3+…+ann(1)
xn=bn(1),
где a2j(1)=a2j - a1j(1)a21; a3j(1)=a3j - a1j(1)a31, anj(1)=anj - a1j(1)an1; bj(1)=bj-b1(1)aj1 (j=2,3,…,n)
Если какой-либо из коэффициентов aj1=0, то j-oe уравнение системы (3) войдет в систему (5) без изменений, то есть акj(1)= akj, bj(1)=bj (k=2,3,..,n).
Оставив
без изменений первое уравнение
системы (5), сделаем второе
уравнение разрешающими, применим описанную
процедуру к системе из (n-1) уравнений,
исключив неизвестную переменную
x2 из третьего и последующих
уравнений. Получаем систему вида:
x1+ a12(1) x2+a13(1) x3 +…+a1n(1) xn=b1(1),
x2+a23(2) x3 +…+a2n(2) xn=b2(2),
a33(1)
x3 +…+a3n(1)
xn=b3(1),
an2(1)
x2+an3(1)
x3+…+ann(1)
xn=bn(1),
где a2j(1) = a2j – a2ja22(1); a3j(2) = a3j(2) – a2j(2)a32(1),…, anj(2) = anj(1) – anj(2)an2(1); bj(2) = bj(1)-b2(2)aj2(1) (j=2,3,…,n)
Продолжив
аналогичные вычисления,
приведем систему (3)
к эквивалентной системе:
x1+ a12(1) x2+a13(1) x3 +…+a1n(1) xn=b1(1),
x2+a23(2) x3 +…+a2n(2) xn=b2(2),
x3 +…+a3n(3)
xn=b3(3),
в которой матрица из коэффициентов имеет треугольный вид.
На этом заканчивается прямой ход решения системы линейных уравнений методом Гаусса.
При обратном ходе происходит последовательное исключение неизвестных хn, начиная с (n-l)-oro уравнения и заканчивая первым. Получаем:
x1+ a12(1) x2+a13(1) x3 +…+a1n-1(1) xn-1=b1(1,1),
x2+a23(2) x3 +…+a2n-1(2) xn-1=b2(2,1),
x3 +…+a3n-1(3)
xn-1=b3(3,1),
xn-1=bn-1(n-1,1),
xn=bn(n).
Исключая неизвестные x(n-2) из уравнения с номером j (j=n-2,...l), вычисления заканчиваются решением системы, имеющей вид:
x1=b1(1,n-1),
…
xn-j=bn-j(n-j,j),
… (9)
xn-2 =bn-2(n-2,2),
xn-1=bn-1(n-1,1),
xn=bn(n).
Процесс прямого хода метода Гаусса может привести не к треугольной матрице, а к двум другим случаям:
- число
преобразованных уравнений
системы меньше
числа
неизвестных, тогда система имеет бесконечное множество решений; - все коэффициенты при неизвестных в каком-либо уравнении равны
нулю, а свободные члены уравнения отличны от нуля, в этом случае
система
не имеет решений.
2.2 Математическое описание решения СЛАУ методом итераций
Пусть дана система n линейных алгебраических уравнений с n неизвестными:
a11x1+a12x2+…+a1n xn=b1,
a21x1+a22x2+…+a2n xn=b2, (10)
…
an1x1+an2x2+…+ann xn=bn,
Для
решения СЛАУ итерационными методами
преобразуем систему от формы (8) к виду:
x1
= (a1,n+1-a11x1-a12x2-…-a1nxn)/a
x2
= (a2,n+1-a21x1-a22x2-…-a2nxn)/a
… (11)
xn
= (an,n+1-an1x1-an2x2-…-annxn)/a
Задав
столбец начальных приближений х10,
х20,..., хn°, подставим
их в правые части системы (11) и вычислим
новые приближения х11, х21...,
хn1 которые опять подставим
в систему (11) и т.д. Таким образом, организуется
итерационный процесс, являющийся обобщением
метода простых итераций на системы уравнений:
x1(m+1) = φ1(x1(m),x2(m),…,xn(m)),
x2(m+1) = φ2(x1(m),x2(m),…,xn(m)),
…
xn(m+1)
= φn(x1(m),x2(m),…,xn(m));
Для сходимости итерационных методов необходимо, значение диагональных элементов матрицы СЛАУ превосходили остальные, что снижает применимость метода простых итераций (хотя системы СЛАУ можно привести к нужному для сходимости виду с помощью эквивалентных преобразований)
Итерационный процесс заканчивается, когда выполнятся условие:
|
xk (m+1)-xk(m) |<ε.
(12)
где
ε - заданная погрешность; k=l,2,..,n.
3
Разработка алгоритма
Опишем
блок-схемы алгоритмов каждой функции.
На рисунке 1 представлена блок-схема функции
main() – главной функции программы.
Рисунок
1 – блок – схема алгоритма функции main()
На рисунке 2 представлена блок-схема функции vvod() ввода исходных данных при решении системы.
Рисунок 2 – блок – схема алгоритма функции vvod()
По
данной блок – схеме сначала надо ввести
количество переменных t, а затем элементы
матрицы a[t][t+1], составленной из коэффициентов
при неизвестных и свободных членов уравнений.
На рисунке 3 представлена блок-схема функции iteracia(), организующая решение системы методом итерации.
Рисунок
3 – блок – схема алгоритма функции iteracia()
На
рисунке 4 представлена блок-схема функции
gauss(), организующая решение системы методом
Гаусса.
Рисунок 4 – блок – схема алгоритма функции gauss()
В первой части блок-схемы происходит преобразование системы к треугольному виду. После этого начинается обратный ход метода Гаусса, в котором происходит последовательное исключение неизвестных, начиная с
(n-1)-ого
уравнения и заканчивая первым.
На рисунке 5 представлена блок-схема функции vivod(), организующая вывод решения на экран.
Рисунок 5 – блок – схема алгоритма функции vivod()
Данная
функция организует вывод результатов
на экран.
4 Описание входной
и выходной информации
Входной информацией для решения СЛАУ является количество переменных.
Количество переменных вводится с клавиатуры и может принимать целые значения, кроме 0 и 1. Количество переменных описывается с помощью переменной t, которая имеет тип integer – целые значения.
Коэффициенты а[t][t+1] вводятся с клавиатуры в следующем порядке: вводятся коэффициенты при неизвестных в первом уравнении системы, вводится свободный член первого уравнения, далее ввод повторяется для элементов второго уравнения и т.д.
Элементы
матрицы А являются коэффициентами
при неизвестных в уравнениях
системы. Переменные a[t][t+1] имеют тип float
– значения с плавающей точкой, и могут
принимать любые значения.
5
Разработка и описание программы
Программа реализует поиск решений системы уравнений, реализована на языке Си.
Программа включает в себя главную функцию main, функцию ввода данных, функцию нахождения решения вывода результатов.
Описание разработанных функций:
void vvod() – функция, предназначена для ввода значений с клавиатуры, функция не возвращает никаких значений.
void iteracia () – функция, предназначена для решения системы методом итерации.
void gauss () – функция, предназначена для решения системы методом Гаусса
void vivod () - функция, предназначена для вывода результатов на экран.
void
main (void) – главная функция, в которой происходит
обращение к функциям void vvod(),void iteracia (),void
gauss (),void vivod (). Таким образом, основные
функции программы, оформлены виде логически
законченных структурных единиц, которые
можно вызывать в любом месте программы.
6
Расчет решения задания и анализ полученных
результатов
Решим
систему уравнений методом Гаусса:
7.9x1+5.6x2+5.7x3-7.2x4=6.68,
5.8x1-4.8x2+0.8x3+3.5x4=9.95,
5.3x1+4.2x2-3.2x3+9.3x4=8.60,
3.2x1-1.4x2-8.9x3+3.3x4=1.00;
Для этого запускаем программу и нажимаем 1. Потом вводим необходимое число переменных в системе (в нашем случае 4). Вводим элементы матрицы коэффициентов, сначала элементы первой строки, затем второй и т.д.
7.9 5.6 5.7 -7.2 6.68
8.5 -4.8 0.8 3.5 9.95
4.3 4.2 -3.2 9.3 8.60
3.2 -1.4 -8.9 3.3 1.00
В результате выполнения программы на экран выводится результат:
x1=0.967100,
x2=0.124800,
x3=0.426300,
x4=0.567900.
Подставим полученные результаты расчета системы методом Гаусса в исходные уравнения системы:
7.9·0.967100+5.6·0.
8.5·0.967100-4.8·0.
4.3·0.967100+4.2·0.
3.2·0.967100-1.4·0.
Отсюда видно, что система решена верно, т.к. подстановка результатов в исходные уравнения превратила их тождества.
Решим
следующую систему уравнений методом
итерации:
6x1-x2-x3=11.33,
-x1-x2-6x3=32,
-x1-x2-6x3=42;
Для этого запускаем программу и нажимаем 2. Потом вводим необходимое число переменных в системе (в нашем случае 3).
6 -1 -1 11,33
-1 6 -1 32
-1 -1 6 42
В результате выполнения программы на экран выводится результат:
x1=4.665224,
x2=7.618504,
x3=9.047288;
Подставим полученные результаты расчета системы методом Гаусса в исходные уравнения системы:
6·4.665224-7.618504-9.
-4.665224+6·7.618504-9.
-4.665224-7.6185504+6·9.
Отсюда
видно, что система решена верно,
т.к. подстановка результатов в
исходные уравнения превратила их тождества.
Заключение
В
процессе выполнения курсовой работы
был разработан специализированный программный
модуль, реализующий решение системы уравнений
методом итерации и методом Гаусса. При
разработке программы были разработаны
алгоритмы программ, описали основные
функции и произвели расчет исходных систем.
Список использованных источников
Список использованных источников
1. Гурский В.Е. Руководство к решению задач по высшей математике. – Мн.: Высш. шк, 1998г.
2. Романовская Л.М. Программирование в среде Си для ПЭВМ ЕС/ Л.М.Романовская, Т.В.Русс, С.Г.Свитковский. - М.: Финансы и статистика,1991.-352 с.
3. Скляров В.А. Программное и лингвистическое обеспечение персональных ЭВМ. Системы общего назначения: Справ. пособие. – Мн.: Выш. шк., 1992. – 426 с.: ил.
4. Мудров А.Е. Численные
методы для ПЭВМ на языках Бейсик, Фортран
и Паскаль. – Томск: МП “РАСКО”, 1991. –
227 с.
Приложение А
(обязательное)