Описание тестовых задач
12 Курсовая работа «Численные методы в экономике» Тема: «Итерационный метод решения проблемы собственных значений»
Новосибирск, 2010 Введение
В данной курсовой работе рассмотрен итерационный метод решения проблемы собственных значений. Сходимость итерационного процесса может быть очень медленной. Причиной этого является наличие нелинейного элементарного делителя, соответствующего первому собственному числу. Другая причина – это близость второго собственного числа к первому. В этом случае можно ускорить сходимость несколькими методами. Одним из них является метод скалярных произведений, который рассмотрен в данной работе. В методе скалярных произведений число итераций, необходимых для определения максимального собственного числа матрицы, с данной точностью, сокращается почти вдвое. математический итерационный метод программный Математическая постановка задачи
Этот метод особенно удобен в применении к симметричной матрице, однако попробуем изложить его без этого предположения. В основе метода лежат последовательности итераций вектора Y0 матрицами A и A’, транспонированной с А. Эти последовательности имеют следующий вид:
Y0, Y1=A*Y0, Y2=A2*Y0, …, Yk=Ak*Y0, … (1) Y0, Y’1=A’*Y0, Y’2=A’2*Y0, …, Y’k=A’k*Y0, … (2)
Пусть b1, …, bn координаты вектора Y0 в базисе X’1, …, X’n, a1, …, an координаты Y0 в базисе X1, …, Xn. При этом предположим, что базисы выбраны так, что система векторов X1, X2, …, Xn и X’1, …, X’n удовлетворяет условиям ортогональности и нормированности. Образуем скалярное произведение (Y’k, Yk):
(Y’k, Yk)=(A’k*Y0, Ak*Y0)=(Y0, A2k*Y0)=(b1*X’1+ … +bn*X’n, a1*l2k1*X1+ … + + an*l2kn*Xn)
Далее в силу свойств ортогональности и нормированности системы векторов имеем:
(Y’k, Yk)=a1*b1*l2k1+ … + an*bn*l2kn (3).
Аналогично:
(Y’k-1, Yk)=a1*b1*l2k-11+ … + an*bn*l2k-1n (4).
Можно видеть, что из равенств (3) и (4) получаем: (Y’k, Yk)/(Y’k-1, Yk) = l1 + O(l2/l1)2k.
Из этой оценки видно, что образование скалярного произведения сокращает число шагов итераций, нужных для определения максимального собственного l1, с данной точностью, почти вдвое. Однако при этом требуется дополнительное вычисление последовательности (2). Следует отметить, что в случае симметричной матрицы, последовательности (1) и (2) совпадают, и поэтому в этом случае применение метода скалярного произведения особенно целесообразно. Начиная с некоторого шага итерации, нужно вычислять соответствующие скалярные произведения и определять l1 через их отношения.
Описание программного обеспечения
Программа, реализующая рассматриваемый метод, разработана в среде МаtLab, предназначенной для выполнения математических операций. Она состоит из головной программы и 2х подпрограмм, вызываемых из основной программы. Головная программа (main.m) В основной программе задается начальное приближение yn, начальное значение собственного вектора L1 и значение допустимой ошибки ed. Текст программы: clc %очистка экрана yn=[1; 1; 1; 1]; %задание начального приближения собственного вектора L1= -5.5251;%начальное значение собственного числа матрицы ed=0.00001; %значение допустимой ошибки trace=1; %установка режима вывода на экран [mout, Lout, yout]= sobstv ('fun', yn, L1, ed, trace);%вызов функции, реализующей метод скалярных произведений plot (mout, Lout) %вывод графика значений собственного числа заданной матрицы за время итерационного процесса pause; plot (mout, yout)%вывод графика значений собственного вектора, соответствующего собственному числу Подпрограмма sobstv.m В данной подпрограмме происходит вычисление максимального собственного числа и соответствующего ему собственного вектора. Значение собственного числа на каждом шаге заносится в L, результат умножения матрицы а на заданный вектор заносится в yn. Время выполнения итераций равно t, количество итераций – m . Текст программы:
function [mout, Lout, yout]=sobstv (fun, yn, L1, ed, trace); a=feval(fun);%вызов матрицы, описанной в файле с именем matrsp m=0; %обнуление счетчика итераций Lout=L1; mout=m; yout=yn'; L=0; %присваивание начального значения решения if trace clc, yn, m, L1% вывод значения решений на данном этапе end t0=fix(clock); %задание начальной точки отсчета времени выполнения итераций while (abs (L1-L)>ed) %задание цикла yn1=yn; yn=a*yn; L=L1; L1=(yn'*yn)/(yn1'*yn); %вычисление собственного числа y=yn/sqrt (yn'*yn);%вычисление собственного вектора if trace home, y, m, L1%вывод текущих значений на экран end %на данном этапе итераций m=m+1;%увеличение счетчика итераций Lout=[Lout; L1]; %формирование выходных параметров mout=[mout; m]; yout=[yout; y']; end t1=fix(clock); %значение конечного момента времени t=t1-t0%время выполнения итераций pause; Подпрограмма fun.m В этой подпрограмме задается матрица a . Текст программы: function a=fun %Изменяемая пользователем часть a=[1.255 1.340 -1.316 0; 1.340 2.526 0 0.516; -1.316 0 -1.743 4.628; 0 0.516 4.628 0.552];
Описание тестовых задач
В данной работе спроектирована программа, реализующая метод скалярного произведения для нахождения максимального собственного числа матрицы. Для проверки предлагается нахождение собственных чисел (векторов) симметричной матрицы. При этом исследуется влияние вектора начального приближения к решению и значения допустимой ошибки на время вычислений и число итераций. Найдем собственные значения исходной матрицы, используя функцию eig. Получим
L1= -5.5251 0.2841 3.4399 4.3911
12
Популярное: Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (140)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |