Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
ЧИСЛЕННЫЕ МЕТОДЫ И ОБРАБОТКА ДАННЫХ
Система MATLAB имеет функции, предназначенные для реализации алгоритмов типовых численных методов решения прикладных задач и обработки данных.
Решение систем линейных алгебраических уравнений. Система линейных уравнений обычно решается с помощью операторов правого ‘ / ’ и левого ‘ \ ’ деления:
· выражение X=B/A дает решение ряда систем линейных уравнений AX=B, где A – матрица размером mxn и B – матрица размером nxk; · выражение X=B\A дает решение ряда систем линейных уравнений XA=B, где A – матрица размером mxn и B – матрица размером nxk;
В дальнейших примерах будем использовать две матрицы A и B размером 3x3: матрицу Паскаля –
A = pascal(3) A = 1 1 1 1 2 3 1 3 6 и магическую матрицу –
B = magic(3) B = 8 1 6 3 5 7 4 9 2
а также два вектора: вектор-столбец u = [3; 1; 4] и вектор-строку v = [2 0 -1].
Обычно система уравнений имеет квадратную матрицу A и единственный вектор-столбец правой части b. Вектор решения x = A\b имеет тот же размер, что и вектор b. Например,
x = A\u x = -12
Проверка подтверждает, что произведение A*x равняется вектору u. Если матрицы A и B являются квадратными и имеют одинаковый размер, то решение является квадратной матрицей такого же размера:
X = A\B X = 19 -3 -1 -17 4 13 6 0 -6
В рассмотренных примерах найденное решение совпадает с точным, поскольку определитель матрицы A равен единице, а ее элементы являются целыми числами.
Квадратная матрица A называется сингулярной, если ее столбцы являются линейно зависимыми. Решение системы уравнений с сингулярной матрицей либо не существует, либо является неединственным. Попытка решить систему с сингулярной матрицей приведет к сообщению об ошибке. Если же матрица системы близка к сингулярной, то MATLAB сгенерирует соответствующее предупреждение.
Переопределенные системы уравнений часто возникают в задачах приближения табличной функции, значения которой получены в ходе физических или численных экспериментов. Рассмотрим пример. Пусть значения функции y известны в моменты времени t и задаются таблицей:
Эти данные можно ввести с помощью операторов:
t = [0.3.8 1.1 1.6 2.3] '; y = [.82.72.63.60.55.50] ';
Будем искать приближение табличной функции в виде . Из этой формулы следует, что вектор y разыскивается в виде линейной комбинации вектора с единичными компонентами и вектора с компонентами exp(-t). Неизвестные коэффициенты и находятся по методу наименьших квадратов на основе минимизации второй нормы векторов невязок. Построим матрицу системы и найдем вектор решения:
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 Таким образом, аппроксимирующая функция имеет вид: . Нарисуем график аппроксимирующей кривой вместе с исходными табличными данными:
T = (0: 0.1: 2.5) '; Y = [ones(size(T)) exp(-T)]*c; plot(T, Y, ' - ', t, y, ' o ' )
Из рисунка видно, что табличные данные, представленные на графике кружками, достаточно хорошо аппроксимируются кривой.
Рассмотрим решение системы с недоопределенной матрицей. Решение такой системы не бывает единственным. MATLAB находит частное решение, которое имеет m ненулевых компонент ( m – ранг матрицы), но и оно не является единственным. Частное решение определяется с помощью алгоритма QR факторизации с выбором ведущего элемента по столбцу. Рассмотрим пример:
R = fix(10*rand(2, 4)) R = 6 8 7 3 3 5 4 1 b = fix(10*rand(2, 1)) b = Линейная система Rx = b состоит из двух уравнений относительно четырех неизвестных. Решение такой системы удобно выводить на экран в рациональном формате:
Format rat p = R\b p = 5/7 -11/7 Для того чтобы найти общее решение переопределенной системы, надо к частному решению добавить фундаментальную систему решений. Фундаментальная система решений находится с помощью оператора null:
Z = null(R, ' r ' ) Z = -1/2 -7/6 -1/2 1/2 1 0 0 1 Необязательный параметр ‘r’ отвечает за рациональное представление базисных векторов. Общее решение исходной системы можно представить в следующем виде: x = p + Z*q, где q – произвольный вектор.
|
Последнее изменение этой страницы: 2017-03-17; Просмотров: 508; Нарушение авторского права страницы