Прямі та ітераційні методи розв’язування систем лінійних алгебраїчних рівнянь

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
КСС
Факультет:
УІ
Кафедра:
Не вказано

Інформація про роботу

Рік:
2015
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Комп’ютерні методи дослідження систем керування
Група:
СІ-21

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет «Львівська політехніка» Звіт про виконання лабораторної роботи №2 «Прямі та ітераційні методи розв’язування систем лінійних алгебраїчних рівнянь» З курсу «Комп’ютерні методи дослідження систем керування» Мета роботи: вивчити найпоширеніші прямі та ітераційні методи розв’язування систем лінійних алгебричних рівнянь та способи їх застосування для обчислення визначників і обертання матриць. Завдання: 10 Знайти обернену матрицю методом Гауса з вибором головного елемента по стовпцю система №1  Система №1  де ; ; порядковому № завдання; № групи (наприклад, для КС-21 )   Короткі теоретичні відомості: Опис алгоритму Встановлюємо значення для одиничної матриці . У верхньому циклі по змінній  здійснюємо пошук  стовпців оберненої матриці  шляхом розв’язування  систем рівнянь (5.4) методом Гауса. У прямому ході методу Гауса ми замість вектора вільних членів  передаємо методу відповідний стовпець одиничної матриці . Після закінчення роботи методу Гауса здійснюємо присвоєння обчислених значень елементів вектора невідомих  відповідному стовпцю оберненої матриці . Виконуємо перевірку алгоритму. Скалярно помножимо матрицю  на знайдену їй обернену матрицю . У результаті маємо отримати одиничну матрицю  (в межах похибки обчислень). З метою уникнення ситуації, коли головні елементи можуть бути рівними чи близькими нулю необхідно використовувати метод Гауса з вибором головного елемента. У наведеному вище алгоритмі потрібно лише замінити використаний звичайний метод Гауса на метод із повним чи частковим вибором головного елемента (стр. 9, 11, 13). Єдиною модифікацією для них є лише  на початку прямого ходу. Блок-схема алгоритму роботи програми 1 2 3 4 5 6 7 Список ідентифікаторів: const int n=4; - Розмірність матриць double M{{8.3, 2.62, 4.1, 1.9} {3.92, 8.45, 7.78, 2.46} {3.77, 7.21, 8.04, 2.28} {2.21, 3.65, 1.69, 6.69} }, L{-10.65, 12.21, 15.45, -8.35}; - Задані матриці double E[n][n], V[n][n], A[n][n], C[n][n], Invers[n][n]; - Двовимірні матриці double P[n], Y[n]; - Одновимірні матриці int w; - змінна для лічильника одного з циклів double sum, value, max; - змінні для проміжних одинарних значень Остаточна версія програми: Файл MyForm.h const int n=4; double M{{8.3, 2.62, 4.1, 1.9} {3.92, 8.45, 7.78, 2.46} {3.77, 7.21, 8.04, 2.28} {2.21, 3.65, 1.69, 6.69} }, L{-10.65, 12.21, 15.45, -8.35}; double E[n][n], V[n][n], A[n][n], C[n][n], Invers[n][n]; double P[n], Y[n]; int w; double sum, value, max; for (int i=0; i<n; i++) for (int j=0; j<n; j++) { if (i=j; E[i][j]=1) else E[i][j]=0; } for (int b=0; b<n; b++) { for (int i=0; i<n; i++) for (j=0; j<n; j++) { V[i][j]=A[i][j]; P[i]=E[i][j]; } for (k=0; k<n; k++) { max=abs(V[k][k]); w=k; for (int l=k+1, l<n; l++) if (max<V[l][k]; max=ABS(V[l][k]); w=l) value=P[k]; P[k]=P[w]; P[w]=value; for (int d=0; d<n; d++) { value=V[k][d]; V[k][d]=V[w][d]; V[w][d]=value; } Y[k]=P[k]/V[k][k]; for (int i=k+1; i<n; i++) { P[i]=P[i]-V[i][k]*Y[k]; for (int j=k+1; k<n; k++) { C[k][j]=V[k][j]/V[k][k]; V[i][j]=V[i][j]-V[i][k]*C[k][j]; } } } for(int i=0; i<n; i++) for (int j=i+1; j<n; j++) { sum=C[i][j]+x[j]; x[i]=y[i]-sum; } for (int i=0; i<n; i++) { Invers[i][b]=x[i] } } richTextBox1->AppendText( Invers[0][0]); richTextBox1->AppendText( Invers[0][1]); richTextBox1->AppendText( Invers[0][2]); richTextBox1->AppendText( Invers[0][3]); richTextBox1->AppendText( Invers[1][0]); richTextBox1->AppendText( Invers[1][1]); richTextBox1->AppendText( Invers[1][2]); richTextBox1->AppendText( Invers[1][3]); richTextBox1->AppendText( Invers[2][0]); richTextBox1->AppendText( Invers[2][1]); richTextBox1->AppendText( Invers[2][2]); richTextBox1->AppendText( Invers[2][3]); richTextBox1->AppendText( Invers[3][0]); richTextBox1->AppendText( Invers[3][1]); richTextBox1->AppendText( Invers[3][2]); richTextBox1->AppendText( Invers[3][3]); }; } Результат виконання програми  Висновок: В результаті виконання цієї лабораторної роботи я навчився створювати програми WindowsForms у середовищі Microsoft Visual Studio 2015, а також вивчив найпоширеніші прямі та ітераційні методи розв’язування систем лінійних алгебричних рівнянь та способи їх застосування для обчислення визначників і обертання матриць.
Антиботан аватар за замовчуванням

17.12.2015 18:12-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!