Иллюстрированный самоучитель по Matlab

         

Элементарные средства решения СЛУ


Решение систем линейных уравнений (СЛУ) относится к самой массовой области применения матричных методов, описанных в уроках 10-12. В этом разделе вы найдете ответы на вопросы, каким образом применяются указанные методы и какие дополнительные функции имеет система MATLAB для решения систем линейных уравнений.

Как известно, обычная СЛУ имеет вид:

а

11

X

1

, а

12

,X

2

..., а

1n

X

n

=b

1



Здесь а

11

, а,

2

,...,

а

пп

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

x

1

, х

2

,..., х

п

неизвестные, образующие вектор X, и b

1

, b

2

,..., b

п

.свободные члены (действительные или комплексные), образующие вектор В. Эта система может быть представлена в матричном виде как АХ=В, где А — матрица коэффициентов уравнений, X — искомый вектор неизвестных и В — вектор свободных членов. В зависимости от вида матрицы А и ее характерных особенностей MATLAB позволяет реализовать различные методы решения.

Для реализации различных алгоритмов решения СЛУ и связанных с ними матричных операций применяются следующие операторы:

+,-,*,/, \, *, ' .

Как отмечалось ранее, MATLAB имеет два различных типа арифметических операций — поэлементные и для массивов (векторов и матриц) в целом. Матричные арифметические операции определяются

правилами линейной алгебры.

Арифметические операции сложения и вычитания над массивами выполняются поэлементно. Знак точки «.» отличает операции над элементами массивов от

матричных операций. Однако, поскольку операции сложения и вычитания одинаковы для матрицы и элементов массива, знаки «.+» и «.-» не используются. Рассмотрим другие операторы и выполняемые ими операции.

* — матричное умножение;

С = А*В — линейное алгебраическое произведение матриц А и В:

Для случая нескалярных А и В число столбцов матрицы А должно равняться числу строк матрицы В. Скаляр может умножаться на матрицу любого размера.


 / —

правое

деление. Выражение Х=В/ А дает решение ряда систем линейных уравнений АХ=В, где А — матрица размера

тхп

и В — матрица размера

nxk;

 \ —

левое

деление. Выражение Х=В\А дает решение ряда систем линейных уравнений ХА=В, где А — матрица размера

тхп

и В — матрица размера

nxk.

Если А — квадратная матрица, то А\В — примерно то же самое, что и inv(A)*B, в остальных случаях возможны варианты, отмеченные ниже.

Если А — матрица размера

пхп,

а В — вектор-столбец с

п

компонентами или матрица с несколькими подобными столбцами, тогда Х=А\В — решение уравнения АХ=В, которое находится хорошо известным методом исключения Гаусса.

Если А — матрица размера

тхп

и

тхп,

а В представляет собой вектор-столбец с m компонентами или матрицу с несколькими такими столбцами, тогда система оказывается недоопределенной или переопределенной и решается на основе минимизации второй нормы невязок.

Ранг

k

матрицы А находится на основе QR-разложения (урок 11) с выбором ведущего элемента. Полученное решение X будет иметь не больше чем

k

ненулевых компонентов на столбец. Если

k<n,

то решение, как правило, не будет совпадать с pinv(A)*B, которое имеет наименьшую норму невязок ||Х||.

^



возведение матрицы в степень. Х

А

р — это X в степени р, если р — скаляр. Если р — целое число, то степень матрицы вычисляется путем умножения X на себя р раз. Если р — целое отрицательное число, то X сначала инвертируется. Для других значений р вычисляются собственные значения и собственные векторы, так что если [V.D]=eig(X), то X*p=V*D.

A

p/V. Если X — скаляр и Р — матрица, то Х

А

Р — это скаляр X, возведенный в матричную степень Р. Если X и Р — матрицы, то Х

Л

Р становится некорректной операцией и система выдает сообщение об ошибке. Возможный вариант решения матричного уравнения АХ=В с применением оператора

^

можно представить как Х=В*А

^

-1.

 ' — транспонирование матрицы, то есть замена строк столбцами и наоборот. Например, А' — транспонированная матрица А. Для комплексных матриц транспонирование дополняется комплексным сопряжением. Транспонирование при решении СЛУ полезно, если в матрице А переставлены местами столбцы и строки.



При записи СЛУ в матричной форме необходимо следить за правильностью записи матрицы А и вектора В. Пример (в виде m-файла):





























А-[2  1



0



1:





1    -3



2



4;





-5    0



-1



-7:





1    -6



2



6]:





В=[8  9



-5



0]:





Х1=В/А









Х2=В*А

^

-1









X3=B*inv(A)













Эта программа выдает результаты решения тремя способами:

X1 =

3.0000 -4.0000-1.00001.0000

Х2 =

3.0000 -4.0000-1.00001.0000

X3 =

3.0000 -4.0000-1.00001.0000

Как и следовало ожидать, результаты оказываются одинаковыми для всех трех методов. При решении систем линейных уравнений, особенно с разреженной матрицей коэффициентов, полезно применение функций colmmd (colamd), symmmd (symamd), описанных ранее в уроке 12.


Содержание раздела