Матричный метод решения систем линейных уравнений

Крамеровская система. СЛАУ А*Х=В будет крамеровской если r = R = n = m, det(a)≠0 единственное решение такой системы задаётся формулой , что в обозначениях Matlab записывается как :

Пример:

Решить систему уравнений:

В данном случае

Тогда решение будет иметь вид:

A=[2 1 -3;1 -1 2; 7 5 1];

>> B=[1;18;3];

>> D=[A B];

>> rank(A)

ans = 3

>> rank(D)

ans = 3

% система совметна имеет единственное решение

>> X=inv(A)*B

X =

6.71111111111111

-9.02222222222222

1.13333333333333

% Или используем левое матричное деление

>> X=AB

X =

6.71111111111111

-9.02222222222222

1.13333333333333

% Проверка

>> A*X

ans =

1.00000000000000

18.00000000000000

3.00000000000000

 

Неопределённая система. В случае если ранг системы меньше числа неизвестных, то система имеет бесконечное множество решений. Общее решение такой системы может быть записано в виде , где Х0- частное решение неоднородной системы А*Х=В; У – общее решение однородной системы А*Х=0.

Некоторое частное решение неоднородной системы можно найти с помощью левого матричного деления . При выполнении этой операции, если матрица А вырожденная программа выдает предупреждение, что результаты могут быть неточными.

Наибольший интерес представляет нормальное частное решение неоднородной системы. Оно может быть получено с помощью псевдообратной матрицы по формуле.

Общее решение однородной системы А*Х=0 находят по схеме:

>>Yn=null(A.'r') % ортонормированный базис общего решения

>> syms t1 t2...tk % вводим символьные переменные t1,t2,…,tk, где к – число столбцов ортонормированного базиса

 

>> Y=Yn(:,1)*t1+Yn(:,2)*t2+...+Yn(:,k)*tk % общее решение однородной системы

>> X=X0+Y % общее решение неопределённой системы

При конкретных значениях t получаем частное решение системы. Производим проверку .

 

Решение систем линейных уравнений с помощью функции

Функция в случае решения систем уравнений имеет вид:

где:

Каждое уравнение системы берется в одинарные кавычки и отделяется от предыдущего запятой.

Перед функцией необходимо с помощью функции определить символьные переменные.

Пример:

Пусть необходимо решить следующую систему уравнений:

Программа решения системы уравнений имеет вид:

После нажатия клавиши получим ответ в следующем виде:

 

Программа задачу решила, но не выдала значения неизвестных . Для их получения необходимо воспользоваться командой , где - имя неизвестного. В нашем случае решение будет иметь вид:

Mat lab сама подбирает наиболее эффективный метод и решает систему. Использование знака является самым простым способом решения, однако, даже при таком простом подходе возможны существенные затруднения.

 

Элементы векторной алгебры

Функции для вычисления скалярное произведение векторов dot(a,b) или sum(a.*b), где а и b – вектора.

Функция для вычисления векторного произведения векторов cross(a,b). Если один вектор представлен в виде строки, другой в виде столбца - cross(a,b´).

Функция для вычисления смешанного произведения векторов det([a;b;c]), где а, b и c– вектора.