Застосування методу Крилова для знаходження власних векторів матриці

Метод Крилова, як і метод Данилевського, дає можливість достатньо просто знайти власні вектора матриці, якщо коефіцієнти характеристичного полінома та його коріння визначені. Продемонструємо це і для простоти обмежимося випадком, коли характеристичний многочлен  матриці , має різні корені .

Отже, нехай  — вектори, використовувані в методі Крилова для знаходження коефіцієнтів . Розкладаючи вектор за власними векторами матриці отримаємо:

Де  — деякі коефіцієнти.

Звідси, враховуючи, що , отримаємо:

Нехай,  — довільна система многочленів. Тоді, складаючи лінійну комбінацію векторів з коефіцієнтами з (3) та в силу співвідношень (1) і (2), знаходимо:

Далее

Пошук власних векторів матриці методом Данилевського

Розглянутий в параграфі Пошук власних значень матриці метод Данилевського дає можливість визначати не тільки всі власні значення матриці , а і всі її власні вектори, при умові, що відповідні їм власні значення являються відомими. Покажемо, яким чином це реалізується. Отже, нехай  — власне значення матриці , а отже, і власне значення подібної їй матриці Фробеніуса .

Знайдемо власний вектор матриці , який відповідає власному значенню . Для цього, запишемо лінійне рівняння наступного вигляду: . Звідси або у матрично-векторній формі:

Перемноживши матриці, отримаємо систему для визначення координат власного вектора :

Система (3) — однорідна. Рішення її може бути знайдене в такий спосіб. Покладемо . Тоді, починаючи з останнього рівняння, послідовно отримаємо:

Далее

Пошук компонент сильної зв'язності орієнтованого графа в середовищі програмування delphi

Delphi-програма, для заданого орієнтованого графа, виводить всі компоненти сильної зв'язності (нагадаємо, що компонентою сильної зв'язності орієнтованого графа, називається така підмножина його вершин, що будь-які дві вершини цієї підмножини, досяжні одна з одної). У програмі передбачено візуальне формування графа за допомогою миші. Для цього, на головній формі міститься графічний редактор (компонент типу TImage) та дві кнопки типу TSpeedButton («Додати вершину» і «Додати ребро»). Підготовка проекту до нового прикладу здійснюється з допомогою кнопки «Видалити граф» (компонент типу TButton). При натисканні на кнопку «Пошук компонент сильної зв'язності» (також компонент типу TButton) власне і запускається алгоритм пошуку сильно зв'язних компонент заданого графа. Результат виконання алгоритму відображається в області виводу результатів (компонент типу TStatusBar).

Зауваження: більш детальна інформація про призначенння кожного з елементів головної форми проекту та процес побудови орієнтованого графа міститься за посиланням Топологічне сортування вершин орієнтованого графа.

Далі, перейдемо до практики, тобто, застосуємо розглядуваний в даному параграфі delphi-проекту для розв'язку задачі, яка полягає у відшуканні всіх компонент сильної зв'язності орієнтованого графа наступного вигляду:

Орієнтований граф

Для цього, запустивши проект та скориставшись графічним редактором і відповідними кнопками панелі задач («Додати вершину», «Додати ребро»), побудуємо вершини вищевказаного графа та поєднаємо їх відповідними орієнтованими ребрами.

Далее

Топологічне сортування вершин орієнтованого графа в середовищі програмування delphi

В даному параграфі розглянемо delphi-проект, який використовуючи алгоритм обходу орієнтованого графа в глибину, виконує топологічне сортування всіх його вершин. Нагадаємо, що під топологічним сортуванням орієнтованого графа розуміють такий лінійний порядок його вершин, при якому всі його ребра йдуть зліва направо. Очевидно, що якщо в графі містяться цикли, то такого порядку не існує.

Головна форма розглядуваного проекту складається з панелі інструментів та графічного редактора.

Головне вікно проекту "Топологічне сортування вершин орієнтованого графа"

Розглянемо призначення кожного з цих едементів більш детально.

Далее

Знаходження компонент сильної зв'язності орієнтованого графа

Компонентою сильної зв'язності орієнтованого графа називається максимальна множина його вершин, в якій існують шляхи з будь-якої вершини в будь-яку іншу. Так наприклад, граф , зображений на рисунку що міститься нижче, складається з чотирьох компонент сильної зв'язності: , , і .

komponenty_sylnoi_zvjaznosti_grafa110

Орієнтований граф та його компоненти сильної зв'язності

Як видно з рисунка, кожна вершина орієнтованого графа  належить певній компоненті сильної зв'язності, але деякі ребра можуть не належати жодній з них. Такі ребра з'єднують вершини з різних компонент.

Далее

Редагування та навігація по записах набору даних використовуючи компонент TDBNavigator

Переміщення, або навігація по записах набору даних, може здійснюватися кількома шляхами. Наприклад, в компонентах TDBGrid та TDBCtrlGrid, які відображають відразу кілька записів, можна використовувати клавіші вертикального переміщення курсору або вертикальну смугу прокрутки. Але що робити, якщо на формі знаходяться компоненти, що відображають одне поле тільки поточного запису набору даних (TDBEdit, TDBMemo, TDBComboBox та інші)? Очевидно, що в такому випадку на формі повинні бути розміщені додаткові елементи управління, що відповідають за переміщення по записах.

Навігація та редагування набору даниз використовуючи компонент TDBNavigator

Для вирішення зазначених завдань і призначений delphi-компонент TDBNavigator, який являє собою сукупність керуючих кнопок, які реалізують операції навігації по набору даних, а також, модифікації та видалення записів цілком.

Далее

Перевірка орієнтованого графа на ациклічність в середовищі програмування delphi

Програму розроблено в середовищі програмування Delphi, основним призначенням якої є перевірка орієнтованого графа на ациклічність. Нагадаємо, що орієнтований граф називається ациклічним, якщо в ньому відсутні орієнтовані цикли, тобто шляхи, що починається і закінчується в одній і тій же вершині. Відмітимо, що в якості методу, використовується алгоритм обходу в глибину.

Орієнтований граф в програмі задається у вигляді вершин (пронумеровані точки) та орієнтованих ребер (прямі лінії з заданим напрямком). Для цього на головній формі передбачено графічний редактор (компонент типу TImage) та дві кнопки типу TSpeedButton («Додати вершину» і «Додати ребро»). Підготовка проекту до нового прикладу здійснюється з допомогою кнопки «Видалити граф» (компонент типу TButton). При натисканні на кнопку «Перевірити орієнтований граф на наявність циклів» (також компонент типу TButton) власне і запускається алгоритм пошуку циклів в орієнтованому графі.

Вихідні дані програми — побудова дерева обходу в глибину та вивід у компонентів TMemo послідовності вершин орієнтованого циклу, якщо він існує.

Далее

Наступна сторінка »