Материалы сайта
Это интересно
Исследование систем линейных уравнений неполного ранга
Белорусский государственный университет информатики и радиоэлектроники Факультет компьютерных сетей и систем Кафедра Информатики Курсовой проект По курсу: Линейная алгебра и аналитическая геометрия Тема: “ Исследование систем линейных уравнений неполного ранга и минимальным по Евклидовой норме решением” Выполнил: Студент гр. 952 001 Лабкович О. А. Проверил Борзенков А. В. Минск 2000 Пусть задана система m линейных алгебраических уравнений с n неизвестными общего вида (СЛАУ) в матричной форме: A*X = B где |[pic] |[pic] |[pic] | 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) приведём к виду: [pic] Необходимо отметить, что коэффициенты [pic] и [pic] полученной матрицы, отличаются от исходных коэффициентов расширенной матрицы. То есть получены новые – основная матрица системы [pic]и вектор-столбец свободных коэффициентов [pic]. Перемножив каждую строку матрицы [pic] на вектор X получим: [pic] [pic] [pic] [pic] Тогда вектор-решения состоит из следующих компонент [pic] , где k = 1..m Заменим [pic]на коэффициенты [pic], j = 1 .. n-m. Общее решение СЛАУ имеет вид [pic] Подставляя различные числовые значения вместо [pic]можно получить бесконечное множество частных решений. Теперь из множества полученных решений необходимо выделить минимальное по Евклидовой норме, то есть найти соответствующие значения [pic]. Евклидова норма: [pic]. Составим функцию [pic]. Нахождение решения минимального по норме эквивалентно нахождению значений компонентов вектора- решений[pic] в точке минимума функции F. По необходимому признаку экстремума функции нескольких переменных и в силу выпуклости функции вниз минимум функции соответствует условиям: [pic] Т.к. функция является положительно определенной квадратичной функцией, то частные производные по всем переменным являются линейными функциями от этих переменных: [pic] Таким образом условием минимума функции [pic] является решение системы линейных уравнений: i = 1..n-m |[pic] |( |[pic] | Построим матричную форму этой системы: [pic] [pic] [pic] |[pic] |[pic] | | |[pic] | |[pic] | | Решая эту систему получим искомое значение коэффициентов [pic]при которых вектор-решений X минимален по Евклидовой норме. В MatLab: C = E \ D; Откуда вектор минимального по норме решения равен [pic] , где k = 1..m.