Недоопределенные системы
0.3413
0.4760
1.0000 0.1003
1.0000 0.2019
1.0000 0.3329
1.0000 0.4493
1.0000 0.7408
1.0000 1.0000
2.3 0.50
1.6 0.55
1.1 0.60
0.8 0.63
0.3 0.72
0.0 0.82
T y
Переопределенные системы
6 0 -6
19 -3 -1
Квадратные системы
Наиболее часто встречающейся ситуацией является квадратная матрица коэффициентовA и одномерный вектор-столбец b справа,т.е. Ax = b. Решение x = A\bимеет при этом тот же ра-змер, что и вектор b. Например,
x = A\u
x =
-12
где матрица Аесть приведенная выше матрица Паскаля. Легко удостовериться, чтоA*xв точности равно вектору u(численные значения этого вектора даны выше).
ЕслиAиBявляются квадратными и имеют одинаковый размер, то X = A\Bимеет тот же ра-змер, например
X = A\B
X =
-17 4 13
Легко убедиться, что A*Xв точности равно B.
Оба этих примера имеют точное решение в виде целых чисел. Это связано с тем, что в каче-стве матрицы коэффициентов была выбрана матрица Паскаля pascal(3), чей детерминант равен единице. Далее будут рассмотрены примеры влияния ошибок округления, возникаю-щих в более реальных системах.
Квадратная матрица A является сингулярной, если ее столбцы не являются линейно незави-симыми. Если A– сингулярна, то решение AX = Bили не существует, или не является един-ственным. Оператор \ , A\B, выдает предупреждающее сообщение, если матрица A близка к сингулярной и сообщение об ошибке, если определено равенство нулю детерминанта матри-цы А.
Переопределенные системы совместных линейных уравнений часто встречаются в задачах аппроксимации экспериментальных данных при помощи различных эмпирических кривых. Рассмотрим следующий гипотетический пример. Величина yизмеряется при различных зна-чениях времениt, что дает следующие результаты
Эти данные могут быть введены в MATLAB при помощи выражений:
t = [0 .3 .8 1.1 1.6 2.3]';
y = [0.82 0.72 0.63 0.60 0.55 0.50]';
Данные могут быть аппроксимированы при помощи убывающей экспоненциальной функ-ции.
y(t) = c1 + c2 e-t
Это уравнение показывает, что вектор yможет быть представлен в виде линейной комбина-ции двух векторов, один из которых является постоянным вектором, содержащим все едини-цы, а второй вектор имеет компоненты e-t. Неизвестные коэффициенты c1 иc2 могут быть найдены подгонкой кривых по методу наименьших квадратов,которая основана на миними-зации суммы квадратов отклонений экспериментальных данных от модели. Мы имеем шесть уравнений с двумя неизвестными, представленными 6х2 матрицей
E = [ones(size(t)) exp(-t)]
E =
Решение методом наименьших квадратов находится при помощи оператора \ :
c = E\y
c =
Иными словами, подгонка методом наименьших квадратов дает
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 =