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

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

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

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

Рік:
2012
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Інші
Група:
СІ-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:53

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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