Решение системы линейных алгебраических уравнений методом Гаусса-Жордана
Разработка системы линейных алгебраических уравнений. Постановка задачи в матричной форме. Сущность метода Гаусса—Жордана (метода полного исключения неизвестных). Описание его алгоритма и пример текста программы. Анализ результатов системы уравнений.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 17.03.2017 |
Размер файла | 235,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Российский университет дружбы народов
Курсовая работа
Языки и технологии программирования
На тему: Решения СЛАУ методом Гаусса-Жордана
1. Постановка задачи
Задана система линейных алгебраических уравнений:
(1.1)
Необходимо найти:
, при которых система (1.1) превращается в тождество.
Постановка задачи в матричной форме:
(2.1)
.
Необходимо найти: вектор .
2. Метод решения
Метод Гаусса -- Жордана (метод полного исключения неизвестных) -- метод, который используется для решения квадратных систем линейных алгебраических уравнений, нахождения обратной матрицы, нахождения координат вектора в заданном базисе или отыскания ранга матрицы. Метод является модификацией метода Гаусса. Назван в честь К. Ф. Гаусса и немецкого геодезиста и математика Вильгельма Йордана[1]
2.1 Алгоритм
1. Выбирают первый слева столбец матрицы, в котором есть хоть одно отличное от нуля значение.
2. Если самое верхнее число в этом столбце ноль, то меняют всю первую строку матрицы с другой строкой матрицы, где в этой колонке нет нуля.
3. Все элементы первой строки делят на верхний элемент выбранного столбца.
4. Из оставшихся строк вычитают первую строку, умноженную на первый элемент соответствующей строки, с целью получить первым элементом каждой строки (кроме первой) ноль.
5. Далее проводят такую же процедуру с матрицей, получающейся из исходной матрицы после вычёркивания первой строки и первого столбца.
6. После повторения этой процедуры раз получают верхнюю треугольную матрицу
7. Вычитают из предпоследней строки последнюю строку, умноженную на соответствующий коэффициент, с тем, чтобы в предпоследней строке осталась только 1 на главной диагонали.
8. Повторяют предыдущий шаг для последующих строк. В итоге получают единичную матрицу и решение на месте свободного вектора (с ним необходимо проводить все те же преобразования).
2.2 Текст программы
#include<iostream> using namespace std; double a[100][100]; double b[1000]; void Znachenia(int n,int m); void PerestanokaST(int l,int ,int n,int m); void SniatST(int l,int j,int n,int m); void Otvet(int n,int m); int main() { int n,m; cout<<"Введите количество строк и количество столбцов и их значения(где последний столбец это значения выражений)"<<endl; cin>>n>>m; if(m<0 || n<0) { cout <<"Nepravelnii dannii"; return 0; } // for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>a[i][j]; } } Znachenia(n,m); Otvet(n,m); return 0; } void Znachenia(int n,int m) { for(int j=1;j<=m-1;j++) { if(a[j][j]==0) { for(int l=j;l<=n;l++) { if(a[l][j]!=0) { PerestanokaST(l,j,n,m); break; } } } if(a[j][j]==0) { continue; } for(int l=1;l<=n;l++) { if(l==j) { continue; } SniatST(l,j,n,m); } } } void PerestanokaST(int l,int j,int n,int m) { double c; for(int i=1;i<=n;i++) { c=a[i][j]; a[i][j]=a[i][l]; a[i][l]=c; } } void SniatST(int l,int j,int n,int m) { double k; k=a[l][j]/a[j][j]; for(int j1=1;j1<=m;j1++) { a[l][j1]-=k*a[j][j1]; } } void Otvet(int n,int m) { int schet,besk=0; for(int i=1;i<=n;i++) { schet=0; for(int j=1;j<=m-1;j++) { if(a[i][j]!=0) { schet++; b[j]=a[i][m]/a[i][j]; } } if(schet>1) { besk=1; } if(schet==0 && a[i][m]!=0) { cout<< "Net resheni"; return; } } if(besk==1) { cout<<"beskonechno mnogo resheni"; return; } for(int i=1;i<=m-1;i++) { if((b[i]< 0.000000001 && b[i]>0) || (b[i]<0 && b[i]>-0.00000001)) { b[i]=0; } cout<<b[i]<<" "; } cout<< endl; }
2.3 Результаты
Пример.
Для решения следующей системы уравнений:
запишем её в виде матрицы 3Ч4, где последний столбец является свободным членом: программа линейный алгебраический уравнение
Проведём следующие действия:
· К строке 2 добавим: ?4 Ч Строку 1.
· К строке 3 добавим: ?9 Ч Строку 1.
Получим:
· К строке 3 добавим: ?3 Ч Строку 2.
· Строку 2 делим на ?2
· К строке 1 добавим: ?1 Ч Строку 3.
· К строке 2 добавим: ?3/2 Ч Строку 3.
· К строке 1 добавим: ?1 Ч Строку 2.
В правом столбце получаем решение:
Литература
1)А.Г. Курош- Курс высшей алгебры.
2) Стенли Б. Липпман, Жози Лажойе-Язык программирования C++. Вводный курс.
3) Википедия-свободная энциклопедия.
Размещено на Allbest.ru
Подобные документы
Сущность метода Гаусса при решении систем линейных уравнений. Элементарные преобразования этого метода. Краткое описание среды визуальной разработки Delphi. Описание основных применяемых процедур и алгоритм роботы программы по решению уравнений.
курсовая работа [1,1 M], добавлен 29.08.2010Приведение системы линейных алгебраических уравнений к треугольному виду прямым ходом метода Гаусса. Применение обратного хода метода вращений. Создание алгоритма, блок-схемы и кода программы. Тестовый пример решения уравнения и его проверка в MathCad.
лабораторная работа [164,3 K], добавлен 02.10.2013Постановка задачи, математические и алгоритмические основы решения системы линейных алгебраических уравнений. Решение системы данных уравнений методом Гаусса с выбором главного элемента по столбцу. Функциональные модели и блок-схемы решения задачи.
курсовая работа [428,9 K], добавлен 25.01.2010Сферы использования компьютеров, сущность и языки программирования. Применение модифицированного метода Гаусса и расширенной матрицы для решения системы линейных алгебраических уравнений (СЛАУ). Разработка программы, системные требования для ее работы.
курсовая работа [657,1 K], добавлен 09.01.2014Характеристика методов решений систем линейных алгебраических уравнений, основные виды численных методов и применение программного продукта Delphi 5.0 как наиболее эффективного. Сущность методов Гаусса, Гаусса-Жордана и Якоби, особенности метода Зейделя.
курсовая работа [2,2 M], добавлен 25.06.2010Системы линейных алгебраических уравнений. Код программы для решения систем линейных алгебраических уравнений. Математические и алгоритмические основы решения задачи методом Гаусса. Программная реализация решения. Алгоритмы запоминания коэффициентов.
лабораторная работа [23,5 K], добавлен 23.09.2014Использование метода Зейделя для нахождения корней системы линейных алгебраических уравнений. Суть метода простых итераций. Оценка погрешности нормальной системы. Составление алгоритма, блок-схемы и кода программы. Тестовый пример и проверка в MathCad.
лабораторная работа [174,8 K], добавлен 02.10.2013Системы линейных алгебраических уравнений. Решение систем уравнений графическим способом. Разработка программного кода модуля, реализующего приближенное решение систем линейных уравнений графическим способом. Отладка программного модуля "Метод Гаусса".
курсовая работа [858,5 K], добавлен 01.12.2013Матричная форма записи системы линейных уравнений, последовательность ее решения методом исключений Гаусса. Алгоритмы прямого хода и запоминания коэффициентов. Решение задачи о сглаживании экспериментальных данных с помощью метода наименьших квадратов.
курсовая работа [610,7 K], добавлен 25.06.2012Решение системы линейных уравнений с матричными элементами и свободными членами с использованием метода Гаусса с выбором главного элемента, основанного на приведении матрицы системы к треугольному виду с помощью нахождения элементов главной диагонали.
лабораторная работа [71,1 K], добавлен 10.12.2014