Портал освітньо-інформаційних послуг «Студентська консультація»

  
Телефон +3 8(066) 185-39-18
Телефон +3 8(093) 202-63-01
 (093) 202-63-01
 studscon@gmail.com
 facebook.com/studcons

<script>

  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){

  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),

  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)

  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

 

  ga('create', 'UA-53007750-1', 'auto');

  ga('send', 'pageview');

 

</script>

Розробка програми для алгоритму знаходження власних векторів і власних значень методом обертань Якобі

Тип роботи: 
Курсова робота
К-сть сторінок: 
26
Мова: 
Українська
Оцінка: 

justify;">Розгортання вікового визначника.

Як відомо, віковим визначником матриці А = [aij] називається визначник вигляду
D () = det (A – E) =   (1)
Прирівнюючи цей визначник до нуля, одержуємо характеристичне рівняння
D () = 0
Якщо потрібно знайти все коріння характеристичного рівняння, то доцільно заздалегідь обчислити визначник (1).
Розгортаючи визначник (1), одержуємо поліном n-го степеня
  (2)
Де  
є сума усіх діагональних мінорів першого порядку матриці А.  
є сума всього діагонального мінору другого порядку матриці А;
- сума всіх діагональних мінорів третього порядку матриці А і т. д. Нарешті
n = det A.
Легко переконатися, що число діагональних мінорів k-го порядку матриці А дорівнює
  (k = 1, 2, …, n).
Звідси одержуємо, що безпосереднє обчислення коефіцієнтів характеристичного полінома (2) еквівалентно обчисленню визначників різних порядків. Остання задача, взагалі кажучи, технічно важко здійснена для скільки-небудь великих значень n. Тому створені спеціальні методи розгортання вікових визначників (методи обертання Якобі, А. М. Данілевського, Леверье, метод невизначених коефіцієнтів, метод інтерполяції та ін.).
 
2.2. Знаходження власних векторів і власних значень матриць. Метод обертання Якобі
 
Метод обертань Якобі застосовується тільки для симетричних матриць   (  =  ) і вирішує повну проблему власних значень і власних векторів таких матриць. Він заснований на знаходженні за допомогою ітераційних процедур матриці U в перетворенні подібності
Λ =  , а оскільки для симетричних матриць А матриця перетворення подібності   є ортогональною (  = ), то Λ =  , де Λ – діагональна матриця з власними значеннями на головній діагоналі
Нехай дана симетрична матриця А. Потрібно для неї обчислити з точністю ε всі власні значення і відповідні їм власні вектори. Алгоритм методу обертання наступний:
Нехай відома матриця  на k-й ітерації, при цьому для k = 0  = А.
Вибирається максимальний по модулю недіагональні елемент  матриці  .
Ставиться завдання знайти таку ортогональную матрицю  , щоб в результаті перетворення подібності   =  відбулося обнулення елемента  матриці  . В якості ортогональної матриці вибирається матриця обертання, що має наступний вигляд:
У матриці обертання на перетині i – го рядка і j – го стовпця знаходиться елемент   де  - кут обертання, що підлягає визначенню. Симетрично щодо головної діагоналі (j -й рядок, i -й стовпець) розташований елемент  . Діагональні елементи  дорівнюють відповідно    ; інші діагональні елементи   інші елементи у матриці обертання U (к) дорівнюють нулю.
Кут обертання   визначається з умови :
 ,
причому якщо  
Будується матриця  ,   = ,
в якій елемент  .
В якості критерію закінчення ітераційного процесу використовується умова малості суми квадратів поза діагональних елементів:
Якщо   то ітераційний процес:
  = 
триває. Якщо  , то ітераційний процес зупиняється, і в
якості шуканих власних значень приймаються    
     . Координатними стовпчиками власних векторів матриці А в одиничному базисі будуть стовпці матриці
 , тобто  
причому ці власні вектори будуть ортогональні між собою, тобто
.
 
2.3. Засоби формування інтерфейсу користувача
 
В додатку Б показаний код консольної програми для взаємодії з користувачем. Користувач вводить розмірність матриці (N). Після чого вводятся значення матриці. Коли значення введені перевіряється функцією (isSimmetrial) чи матриця симетрична. Якщо вона не симетрична програма почне роботу спочатку і запропонує ввести дані знову. Якщо ж матриця симетрична програма за допомогою функції (wrachenie) знайде власні вектори та власні значення та видасть їх на екран.
 
3. Текст програми алгоритму методу обертання Якобі
 
using System;
using System. Collections. Generic;
using System. Linq;
using System. Text;
using System. Threading. Tasks;
 
namespace yacobi_sharp
{
class Program
{
static void Main (string[] args)
{
int i, j;
int size;
double precision;
Console. Write («Метод обертання Якобi. «) ;
error1:
Console. Write («\nВведiть розмiрнiсть матрицi (NxN) N = «) ;
size = int. Parse (Console. ReadLine ()) ;
double[, ] coefficients = new double[size, size];
double[, ] solution = new double[size, size];
Console. Write («\nВведiть елементи матрицi: \n») ;
 
for (i = 0; i < size; i++)
{
for (j = 0; j < size; j++)
{
solution[i, j] = 0;
}
solution[i, i] = 1;
}
for (i = 0; i < size; i++)
{
for (j = 0; j < size; j++)
{
Console. Write («A[{0}][{1}]: «, i + 1, j + 1) ;
coefficients[i, j] = double. Parse (Console. ReadLine ()) ; ;
}
}
Console. Write («Сформована матриця: \n») ;
for (i = 0; i < size; i++)
{
for (j = 0;
Фото Капча