DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

ПРЯМІ ТА ІТЕРАЦІЙНІ МЕТОДИ РОЗВ’ЯЗУВАННЯ СИСТЕМ ЛІНІЙНИХ АЛГЕБРИЧНИХ РІВНЯНЬ

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” ІКТА кафедра „КОМП’ЮТЕРИЗОВАНІ СИСТЕМИ, АВТОМАТИКА І УПРАВЛІННЯ” ЗВІТ до лабораторної роботи № 2 З КУРСУ “Комп’ютерні методи дослідження систем керування” на тему: „ ПРЯМІ ТА ІТЕРАЦІЙНІ МЕТОДИ РОЗВ’ЯЗУВАННЯ СИСТЕМ ЛІНІЙНИХ АЛГЕБРИЧНИХ РІВНЯНЬ ” Варіант № 3 Мета роботи: вивчити найпоширеніші прямі та ітераційні методи розв’язування систем лінійних алгебричних рівнянь та способи їх застосування для обчислення визначників і обертання матриць. Вхідні дані:  Система №1  де ; ; порядковому № завдання; № групи (наприклад, для КС-21 )   Метод Гауса з вибором головного елемента У методі Гауса при обчисленні елементів матриці  вимагається ділення на головні елементи , , … , . Якщо ж один з головних елементів рівний нулю, то схему єдиного ділення не можливо реалізувати. І навіть, коли усі головні елементи відмінні від нуля, але серед них є близькі до нуля, то тоді похибки суттєво зростають і не є контрольованими. Метод Гауса з вибором головного елемента по рядку. При пошуку головного елемента по рядку місцями міняються не рівняння системи (1.1), як при пошуку по стовпцю, а невідомі  у всіх рівняннях. Наприклад, на першому кроці методу Гауса серед коефіцієнтів  знайдемо максимальний по абсолютному значенню коефіцієнт. Нехай це буде коефіцієнт . Перепишемо систему, переставивши місцями  та  у всіх рівняннях: . (3.3) Від перестановки місцями доданків у рівняннях розв’язок системи не зміниться. На наступному кроці методу Гауса знаходимо максимальний коефіцієнт серед  та знову здійснюємо заміну, і т.д. Після завершення зворотного ходу методу Гауса необхідно знову виконати перестановку , тобто впорядкувати елементи вектора  у тому порядку, який був на самому початку. Загальний алгоритм методу Гауса з вибором головного елемента по рядку для   для    для  рядкові сортування  для   для  ;    Прямий хід: рядкові сортування ,  для  якщо   {; } ; ;  для  якщо  {; ; } інакше {; ; }    для     Оберне-ний хід: для  якщо    Впорядку-вання  Опис алгоритму Задаємо початкові значення вектора . Цей вектор містить інформацію про переміщення невідомих  під час вибору головних елементів. Прямий хід методу. Резервуємо (копіюємо) базові матриці  та  у відповідні матриці  та . Вхідні матриці  та  нам необхідні для кінцевої перевірки результату. Протягом виконання алгоритму ми працюємо з копіями вхідних матриць. Далі в трьох циклах виконується перетворення початкової матриці  до трикутного вигляду матриці  та відповідне перетворення правих частин системи . Зазначимо, що на кожному кроці першого циклу по змінній  виконуємо процедуру рядкового сортування по головним елементам. Тобто, відшукуємо максимальне значення по модулю головного елемента, а потім міняємо місцями стовпці в матрицях  та  (копії матриць  та ). Змінна  визначає номер рядка головного елемента, змінна  використовується як проміжна змінна при заміні значень у елементах матриць  та , а  як проміжна змінна при заміні значень елементів вектора . Обернений хід. Спершу присвоюємо значення для останнього невідомого , а потім в циклі відшукуємо усі решта невідомі. На останньому етапі впорядковуємо значення вектора  у тому порядку, який був на самому початку. Для перевірки вірності роботи алгоритму підставляємо наші знайдені  в систему (1.1). Обчислені ліві частини рівнянь повинні відповідати правим значенням елементів вектора . Список змінних, які використовуються в коді програми, та їх пояснення: A[n][n] – матриця розмірністю 4*4; P[n], inx[n], V[n][n], X[n], Y[n], C[n][n], max, value, z ,p, k, s, b – змінні типу double; B[n] – стовпець вільних членів; l, f, h, w, i, j – змінні типу int; Блок-схема розробленої програми  Остаточна версія програми #include <vcl.h> #pragma hdrstop #include "Unit1.h" #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {} void __fastcall TForm1::Button1Click(TObject *Sender) { int n=4; double A[4][4]={{8.3,2.62+0.2*3,4.1,1.9},{3.92,8.45,7.78-0.2*3,2.46}, {3.77,7.21+0.2*3,8.04,2.28},{2.21,3.65-0.2*3,1.69,6.69}}; double B[4]={-10.65+0.02*21,12.21,15.45-0.02*21,-8.35}; double V[4][4],C[4][4],P[4],X[4],Y[4]; double max,value; int w,z,d; for (int i=0;i<n;i++) { P[i]=B[i]; for (int j=0;j<n;j++) { V[i][j]=A[i][j]; } } for (int k=0;k<n;k++) { max=abs(V[k][k]); w=k; for (int l=k+1;l<n;l++) { if (max<abs(V[k][l])) { max<abs(V[k][l]); w=l; } } z=X[k]; X[k]=X[w]; X[w]=z; for (int d=1;d<n;d++); { if (d<k) { value=C[d][k]; C[d][k]=C[d][w]; C[d][w]=value; } } Y[k]=P[k]/V[k][k]; for (int i=k+1;i<n;i++) {P[i]+=-V[i][k]*Y[k]; for (int j=k+1;j<n;j++) { C[k][j]=V[k][j]/V[k][k]; V[i][j]+=-V[i][k]*C[k][j]; }}} for (int i=0;i<n;i++) X[i]=0; X[n-1]=Y[n-1]; for(int i=n-2;i>=0;i--) {for (int j=i+1;j<n;j++) X[i]+=C[i][j]*X[j]; X[i]=Y[i]-X[i];} Memo1->Lines->Clear(); Memo1->Lines->Add("Rozvyazok systemy X[]"); for (int i=0; i<n; i++) Memo1->Lines->Add(X[i]); Memo1->Lines->Add(""); Memo1->Lines->Add("Perevirka vuvid B[]"); for (int i=0; i<n; i++) Memo1->Lines->Add(B[i]); Memo1->Lines->Add(""); Memo1->Lines->Add("Perevirka vuvid symu A[i][j]*X[j]"); for (int i=0; i<n; i++) Memo1->Lines->Add(A[i][0]*X[0]+A[i][1]*X[1]+A[i][2]*X[2]+A[i][3]*X[3]);} Результати виконання програми  Висновок На цій лабораторні роботі я написав програму для розв’язування систем лінійних алгебричних рівнянь Методом Гауса з вибором головного елемента по рядку.
Антиботан аватар за замовчуванням

28.01.2013 18:08

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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