Вычислительные методы линейной алгебры. Горбаченко В.И - 88 стр.

UptoLike

88
% с заданной точностью получен за число итераций, не более
% заданного, flag=0 в противном случае
% инициализация параметров
flag=0;
X=Y/norm(Y); % Масштабированный вектор
for k=1:max_it
Y=A*X;
if k>=2
lambda_s=lambda;
end
lambda=dot(Y,X)/dot(X,X);
X=Y/norm(Y);% нормализация Y
% проверка условия окончания
if k>=2
if abs(lambda-lambda_s)/abs(lambda)<=tol
flag=1;
break
end
end
end
Функция sp_min вычисления минимального собственного значения и
соответствующего собственного вектора имеет вид:
function [lambda,X,k,flag]=sp_min(A,Y,tol,max_it)
% Функция вычисления минимального собственного значения
% и соответствующего собственного вектора симметричной положительно
% определенной матрицы с использованием метода скалярных произведений
% Вход - A - матрица n x n
% - tol - допустимая погрешность
% - max_it - максимальное число итераций
% Выход - lambda_min - минимальное собственное значение
% - X_min - соответствующий собственный вектор
% - flag - признак достижения результата: flag=1 - результат
% с заданной точностью получен за число итераций, не более
% заданного, flag=0 в противном случае
% инициализация параметров
flag=0;
X=Y/norm(Y); % Масштабированный вектор
for k=1:max_it
Y=A\X;
if k>=2
lambda_s=lambda;
end
lambda=dot(Y,X)/dot(X,X);
X=Y/norm(Y);% нормализация Y
% проверка условия окончания
if k>=2
if abs(lambda-lambda_s)/abs(lambda)<=tol
flag=1;
lambda=1/lambda;
break
end
end
end
%            с заданной точностью получен за число итераций, не более
%            заданного, flag=0 в противном случае
% инициализация параметров
flag=0;
X=Y/norm(Y); % Масштабированный вектор
for k=1:max_it
    Y=A*X;
    if k>=2
        lambda_s=lambda;
    end
    lambda=dot(Y,X)/dot(X,X);
    X=Y/norm(Y);% нормализация Y
    % проверка условия окончания
    if k>=2
        if abs(lambda-lambda_s)/abs(lambda)<=tol
            flag=1;
            break
        end
    end
end

    Функция sp_min вычисления минимального собственного значения и
соответствующего собственного вектора имеет вид:
function [lambda,X,k,flag]=sp_min(A,Y,tol,max_it)
% Функция вычисления минимального собственного значения
% и соответствующего собственного вектора симметричной положительно
% определенной матрицы с использованием метода скалярных произведений
% Вход     - A - матрица n x n
%          - tol - допустимая погрешность
%          - max_it - максимальное число итераций
% Выход    - lambda_min - минимальное собственное значение
%          - X_min - соответствующий собственный вектор
%          - flag - признак достижения результата: flag=1 - результат
%            с заданной точностью получен за число итераций, не более
%            заданного, flag=0 в противном случае
% инициализация параметров

flag=0;
X=Y/norm(Y); % Масштабированный вектор
for k=1:max_it
    Y=A\X;
    if k>=2
        lambda_s=lambda;
    end
    lambda=dot(Y,X)/dot(X,X);
    X=Y/norm(Y);% нормализация Y
    % проверка условия окончания
    if k>=2
        if abs(lambda-lambda_s)/abs(lambda)<=tol
            flag=1;
            lambda=1/lambda;
            break
        end
    end
end


                                                                        88