ВУЗ:
Составители:
Рубрика:
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
Страницы
- « первая
- ‹ предыдущая
- …
- 86
- 87
- 88
- 89
- 90
- …
- следующая ›
- последняя »