Решение системы линейных алгебраических уравнений методом Гаусса-Жордана

Разработка системы линейных алгебраических уравнений. Постановка задачи в матричной форме. Сущность метода Гаусса—Жордана (метода полного исключения неизвестных). Описание его алгоритма и пример текста программы. Анализ результатов системы уравнений.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 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


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.