Moler). Початкове призначення системи MATLAB складалося саме в тому, щоб створити діалогову середовище для роботи з пакетами програм лінійної алгебри. p align="justify"> Незважаючи на гадану завершеність, цей розділ розвивається і в даний час в напрямку створення нових операцій: для роботи з парами матриць (приведення пари матриць до форми Шура, рекуррентное сингулярне розкладання пари прямокутних матриць), рішення матричних поліномів і поліноміальних матричних рівнянь.
Розглянемо функції системи MATLAB, які підтримують роботу з матрицями, в такій послідовності: характеристики матриць, рішення систем лінійних рівнянь, обчислення власних значень і сингулярних чисел, обчислення функцій від матриць, робота з алгебраїчними поліномами. p>
Обчислення власних значень і сингулярних чисел
В· EIG, CDF2RDF <# "justify"> алгебраїчний програмний алгоритм mathlab
4.1 Програми на мові С + +
1. Пошук власних чисел і векторів симетричної матриці
/***************************************** *************************
Алгоритм шукає власні пари симетричної матриці, приводячи її до трехдіагональной і використовуючи QL/QR алгоритм.
Вхідні параметри: - симетрична матриця, задана верхнім або нижнім трикутником. Масив з нумерацією елементів [0 .. N-1, 0 .. N-1] - розмір матріциформат храненіяфлаг, пові щающую, чи потрібні власні вектори.
Якщо ZNeeded:
* дорівнює 0, то власні вектори не повертаються
* дорівнює 1, то власні вектори повертаються
Вихідні параметри: - власні числа в порядку зростання.
Масив з нумерацією елементів [0 .. N-1]. - якщо ZNeeded:
* дорівнює 0, що не модифікується
* дорівнює 1, містить власні вектори
Масив з нумерацією елементів [0 .. N-1, 0 .. N-1], при цьому
власні вектори зберігаються в стовпцях матриці.
Результат:, якщо алгоритм зійшовся, якщо алгоритм не зійшовся (рідкісний випадок)
****************************************** ************************/
# include
# include "sevd.h"
bool smatrixevd (ap :: real_2d_array a, n, zneeded, isupper, :: real_1d_array & d, :: real_2d_array & z)
{result; :: real_1d_array tau;
ap :: real_1d_array e;
ap :: ap_error :: make_assertion (zneeded == 0 | | zneeded == 1, "SMatrixEVD: incorrect ZNeeded"); (a, n, isupper, tau, d, e); (zneeded == 1)
{(a, n, isupper, tau, z);
} = smatrixtdevd (d, e, n, zneeded, z); result;
} <...