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

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

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

Рік:
2009
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Інші
Група:
СІ-22

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

Міністерство освіти та науки України Національний університет “Львівська політехніка” Звіт до лабораторної роботи № 2 ПРЯМІ ТА ІТЕРАЦІЙНІ МЕТОДИ РОЗВ’ЯЗУВАННЯ СИСТЕМ ЛІНІЙНИХ АЛГЕБРИЧНИХ РІВНЯНЬ з курсу “Комп’ютерні методи дослідження систем керування” Мета роботи: вивчити найпоширеніші прямі та ітераційні методи розв’язування систем лінійних алгебричних рівнянь та способи їх застосування для обчислення визначників і обертання матриць. Загальний алгоритм методу Гауса з вибором головного елемента по стовпцю для    для  стовпцеві сортування  для   для  ;    Прямий хід: стовпцеві сортування ;  для  якщо   {; } ; ;  для  ; ;     для     Оберне-ний хід: Опис алгоритму Прямий хід методу. Резервуємо (копіюємо) базові матриці  та  у відповідні матриці  та . Вхідні матриці  та  нам необхідні для кінцевої перевірки результату. Протягом виконання алгоритму ми працюємо з копіями вхідних матриць. Далі в трьох циклах виконується перетворення початкової матриці  до трикутного вигляду матриці  та відповідне перетворення правих частин системи . Зазначимо, що на кожному кроці першого циклу по змінній  виконуємо процедуру стовпцевого сортування по головним елементам. Тобто, відшукуємо максимальне значення по модулю головного елемента, а потім міняємо місцями рядки в матриці  та  (копії матриці  та ). Змінна  визначає номер рядка головного елемента, а  використовується як проміжна змінна. Обернений хід. Спершу присвоюємо значення для останнього невідомого , а потім в циклі відшукуємо усі решта невідомі. Для перевірки вірності роботи алгоритму підставляємо наші знайдені  в систему (1.1). Обчислені ліві частини рівнянь повинні відповідати правим значенням елементів вектора . Завдання до лабораторної роботи. Варіант номер 2. 2 Розв’язати систему рівнянь методом Гауса з вибором головного елемента по стовпцю система №1  Система №1  Список ідентифікаторів констант, змінних, функцій, методів, використаних у програмі, та їх пояснення. #include <vcl.h> - бібліотека візуальних компонентів; A[][],B[] – матриці з вхідними данними; V[][],P[] – матрицы для математичних перетворень; X[] – розв’язок системи; C[] – отримана трикутна матриця; I,j,k,l,d,w,value – проміжні змінні для використання у циклах і пере присвоєннях; max – максимальний елемент; Остаточна версія програми. #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*2,4.1,1.9},{3.92,8.45,7.78-0.2*2,2.46}, {3.77,7.21+0.2*2,8.04,2.28},{2.21,3.65-0.2*2,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; 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[l][k])) { max=abs(V[l][k]); w=l; } } value=P[k]; P[k]=P[w]; P[w]=value; for (int d=1;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]+=-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]); Memo1->Lines->Add("Vuvid C[]"); for (int i=0; i<n;i++) for(int j=0; j<n;j++) Memo1->Lines->Add(C[i][j]);} Результати роботи програми: / Висновок: программа написана на лабораторних заняттях може використовуватися для розв’зку систем лінійних рівнянь. Саме метод Гауса з вибором головного елемента по стовпцю найкраще підходить для використання на практиці.
Антиботан аватар за замовчуванням

30.11.2012 00:11-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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