Смекни!
smekni.com

Система математических расчетов MATLAB (стр. 8 из 30)

Данные могут быть аппроксимированы при помощи убывающей экспоненциальной функ-ции.

y(t) = c1 + c2 e-t

Это уравнение показывает, что вектор y может быть представлен в виде линейной комбина-ции двух векторов, один из которых является постоянным вектором, содержащим все едини-цы, а второй вектор имеет компоненты e-t. Неизвестные коэффициенты c1 и c2 могут быть найдены подгонкой кривых по методу наименьших квадратов, которая основана на миними-зации суммы квадратов отклонений экспериментальных данных от модели. Мы имеем шесть уравнений с двумя неизвестными, представленными 6х2 матрицей

E = [ones(size(t)) exp(-t)]

E =

1.0000 1.0000

1.0000 0.7408

1.0000 0.4493

1.0000 0.3329

1.0000 0.2019

1.0000 0.1003

Решение методом наименьших квадратов находится при помощи оператора \ :

c = E\y

c =

0.4760

0.3413

Иными словами, подгонка методом наименьших квадратов дает

y(t) = 0.476 + 0.3413 e-t

Следующие выражения оценивают модель при равномерно распределенных моментах време-ни (с шагом 0.1), а затем строят график вместе с результатами экспериментальных данных.

T = (0 : 0.1 : 2.5)';

Y = [ones(size(T)) exp(-T)]*c;

plot(T, Y, '-', t, y, 'o')

Можно видеть, что значения E*c не совсем точно совпадают со значениями эксперименталь-ных данных y, но эти отклонения могут быть сравнимы с ошибками измерений.

Прямоугольная матрица A называется матрицей неполного ранга, если ее столбцы линейно-независимы. Если матрица A имеет неполный ранг, то решение AX = B не является единст-венным. Оператор \ при этом выдает предупреждающее сообщение и определяет основное решение, которое дает минимально возможное число ненулевых решений.

Недоопределенные системы

Недоопределенные системы линейных уравнений содержат больше неизвестных чем урав-нений. Когда они сопровождаются дополнительными ограничениями, то становятся сферой изучения линейного программирования. Сам по себе, оператор \ работает только с системой без ограничений. При этом решение никогда не бывает единственным. MATLAB находит ос-новное решение, которое содержит по меньшей мере m ненулевых компонент (где m - число уравнений), но даже это решение может быть не единственным. Ниже приводится пример, где исходные данные генерируются случайным образом.

R = fix (10*rand(2,4))

R =

6 8 7 3

3 5 4 1

b = fix (10*rand(2,1))

b =

1

2

Система уравнений Rx = b содержит два уравнения с четырьмя неизвестными. Поскольку матрица коэффициентов R содержит небольшие по величине целые числа, целесообразно представить решение в формате rational (в виде отношения двух целых чисел). Частное ре-шение представленное в указанном формате есть:

p = R\b

p =

0

5/7

0

-11/7

Одно из ненулевых решений есть p(2), потому что второй столбец матрицы R имеет наи-большую норму. Вторая ненулевая компонента есть p(4) поскольку четвертый столбец матрицы R становится доминирующим после исключение второго столбца (решение нахо-дится методом QR-факторизации с выбором опорного столбца).

Обратные матрицы и детерминанты

Если матрица А является квадратной и невырожденной, уравнения AX = I и XA = I имеют одинаковое решение X. Это решение называется матрицей обратной к A, обозначается через A-1 и вычисляется при помощи функции inv. Понятие детерминанта (определителя) матрицы полезно при теоретических выкладках и некоторых типах символьных вычислений, но его масштабирование и неизбежные ошибки округления делают его не столь привлекательным при числовых вычислениях. Тем не менее, если это требуется, функция det вычисляет определитель квадратной матрицы. Например,

A = pascal (3)

A =

1 1 1

1 2 3

1 3 6

d = det (A)

X = inv (A)

d =

1

X =

3 -3 1

-3 5 -2

1 -2 1

Опять таки, поскольку A является симметричной матрицей целых чисел и имеет единичный определитель, то же самое справедливо и для обратной матрицы. С другой стороны, для

B = magic(3)

B =

8 1 6

3 5 7

4 9 2

d = det(B)

X = inv(B)

d =

-360

X =

0.1472 -0.1444 0.0639

-0.0611 0.0222 0.1056

-0.0194 0.1889 -0.1028

Внимательное изучение элементов матрицы X, или использование формата rational , показы-вает, что они являются целыми числами, разделенными на 360.

Если матрица A является квадратной и несингулярной, то, пренебрегая ошибками округле-ния, выражение X = inv(A)*B теоретически означает то же, что и X = A\B , а Y = B*inv(A) теоретически есть то же, что и Y = B/A. Однако вычисления включающие операторы \ и / более предпочтительны, поскольку требуют меньше рабочего времени, меньшей памяти и имеют лучшие свойства с точки зрения определения ошибок.

Псевдообратные матрицы

Прямоугольные матрицы не имеют детерминантов и обратных матриц. Для таких матриц по крайней мере одно из уравнений AX = I или XA = I не имеет решения. Частично данный про-бел восполняется так называемой псевдообратной матрицей Мура-Пенроуза, или просто псевдообратной матрицей, которая вычисляется при помощи функции pinv. На практике необходимость в этой операции встречается довольно редко. Желающие могут всегда обра-титься к соответствующим справочным пособиям.

Степени матриц и матричные экспоненты

Положительные целые степени

Если А есть некоторая квадратная матрица, а р – положительное целое число, то A^p эквива-лентно умножению A на себя р раз.

X = A^2

X =

3 6 10

6 14 25

10 25 46

Отрицательные и дробные степени

Если А является квадратной и невырожденной, то A^(-p) эквивалентно умножению inv(A) на себя p раз.

Y = B^(-3)

Y =

0.0053 -0.0068 0.0018

-0.0034 0.0001 0.0036

-0.0016 0.0070 -0.0051

Дробные степени, например A^(2/3), также допускаются; результаты при этом зависят от ра-спределения собственных значений матрицы А.

Поэлементное возведение в степень

Оператор .^ (с точкой !) осуществляет поэлементное возведение в степень. Например,

X = A.^2

A =

1 1 1

1 4 9

1 9 36

Вычисление корня квадратного из матрицы и матричной экспоненты

Для невырожденных квадратных матриц А функция sqrtm вычисляет главное значение квад-ратного корня , т.е. если X = sqrtm(A) , то X*X = A . Буква m в sqrtm означает, что выпол-няется матричная операция. Это отличает данную функцию от sqrt(A), которая, подобно A.^(1/2) (обратите внимание на точку !), выполняет операцию извленчения корня поэлемен-тно.

Система обыкновенных линейных дифференциальных уравнений первого порядка может быть записана в виде

dx/dt = Ax

где x = x(t) есть векторная функция от t, а A есть постоянная матрица не зависящая от t.

Решение данной системы может быть выражено в виде матричной экспоненты.

x(t) = Atx(0)

Функция expm(A) вычисляет матричную экспоненту. Рассмотрим пример системы диффере-нциальных уравнений со следующей 3х3 матрицей коэффициентов

A =

0 -6 -1

6 2 -16

-5 20 -10

и начальными условиями x(0)

x0 = [ 1 1 1]’.

Использование матричной экспоненты для вычисления решения дифференциального уравне-ния в 101 точке с шагом 0.01 на интервале 0 ≤ t ≤ 1 записывается в виде

X = [ ];

for t = 0 : 0.01 : 1

X = [X expm(t*A)*x0];

end

Трехмерный график решения в фазовом пространстве может быть получен при помощи спе-циальной функции

plot3(X(1,:), X(2,:), X(3,:), '-o')

Решение имеет вид спиральной функции сходящейся к началу координат (см. рис. ниже). Та-кое решение обусловлено комплексными собственными значениями матрицы коэффициен-тов А.

Собственные значения и собственные векторы

Собственным значением и собственным вектором квадратной матрицы А называются ска-ляр λ и вектор v, удовлетворяющие условию

Av = λv

Диагональная декомпозиция

Имея диагональную матрицу Λ, составленную из собственных значений λ матрицы А и мат-рицу V , составленную из соответствующих собственных векторов v, можно записать

AV = VΛ

Если матрица V несингулярная, на основании данного выражения получаем спектральное разложение матрицы А

А = VΛV-1