Главная Учебники - Разные Лекции (разные) - часть 51
|
Белорусский государственный университет информатики и радиоэлектроники Курсовой проект По курсу: Линейная алгебра и аналитическая геометрия Тема: “ Исследование систем линейных уравнений неполного ранга и минимальным по Евклидовой норме решением” Лабкович О. А. Борзенков А. В. Пусть задана система m линейных алгебраических уравнений с n неизвестными общего вида (СЛАУ) в матричной форме: A*X = B где A – основная матрица системы (или матрица коэффициентов при неизвестных) X – вектор-столбец решений системы (вектор неизвестных) B – вектор свободных коэффициентов Решением системы такого вида называется всякий n – компонентный вектор-столбец X, обращающий матричное уравнение в тождество (равенство). Найдём решение с помощью метода последовательных исключений Жордана-Гаусса, который заключается в последовательном исключении неизвестных. Дополнительно выделим из множества решений вектор-решения минимальный по Евклидовой норме. В MatLab стандартная функция rref(A), …/matlab/toolbox/matlab/matfun/rref.m, приводит матрицу A к треугольному виду на основе классического метода исключения Гаусса с частичным выбором ведущего элемента. В данной функции реализуется следующий код: который, не меняя местами столбцы матрицы системы, приводит матрицу к диагональному виду, работая только со строками(таким образом, использование этой функции не приведетк ошибкам). % Loop over the entire matrix. % Перебор каждого элемента матрицы i = 1; j = 1; jb = []; while (i <= m) & (j <= n) % Find value and index of largest element in the remainder of column j. % Найти значение и индекс самого большого элемента в остатке от колонки j. [p,k] = max(abs(A(i:m,j))); k = k+i-1; if (p <= tol) % The column is negligible, zero it out. % Если остаток колонки незначителен, то обнуление остатка и переход на следующую иттерацию. A(i:m,j) = zeros(m-i+1,1); j = j + 1; else % Remember column index % Запоминание индекса колонки jb = [jb j]; % Swap i-th and k-th rows. % Поменияем месками i-ую и j-ую строки. A([i k],j:n) = A([k i],j:n); % Divide the pivot row by the pivot element. % Деление элементов текущей строки на текущий элемент A(i,j:n) = A(i,j:n)/A(i,j); % Subtract multiples of the pivot row from all the other rows. % Вычесть элементы текущей строки из всех других строк, начиная с j-го элемента. for k = [1:i-1 i+1:m] A(k,j:n) = A(k,j:n) - A(k,j)*A(i,j:n); end i = i + 1; j = j + 1; end end Для этого, с помощью элементарных преобразований над строками и перестановки столбцов расширенную матрицу системы A|B (матрица, образованная добавлением столбца свободных коэффициентов B к основной матрице системы A) приведём к виду: Необходимо отметить, что коэффициенты Тогда вектор-решения состоит из следующих компонент Заменим Подставляя различные числовые значения вместо Теперь из множества полученных решений необходимо выделить минимальное по Евклидовой норме, то есть найти соответствующие значения Евклидова норма: Т.к. функция является положительно определенной квадратичной функцией, то частные производные по всем переменным являются линейными функциями от этих переменных: Таким образом условием минимума функции i = 1..n-m Построим матричную форму этой системы: Решая эту систему получим искомое значение коэффициентов В MatLab: C = E \ D; Откуда вектор минимального по норме решения равен Пример1 (Ex1.m) Вектор решения Норма вектора решений Невязка Пример 10. Расширенная матрица системы: Получили диагональную матрицу. Откуда При Для нахождения минимальных решений составим функцию и найдём её производную: Тогда Пример 2. Расширенная матрица системы: Получили диагональную матрицу. Откуда общее решение При Для нахождения минимальных решений составим функцию и найдём её частные производные: Тогда
| |||||||||||||||||||