ВУЗ:
Составители:
Рубрика:
67
%ПЕРЕДАВАЕМЫЕ ЗНАЧЕНИЯ
% A,b - Матрица, вектор правой части (соответственно)
% tol - требуемая точность (относительно нормы невязки)
% tau - итерационный параметр
% maxit - Максимальное число итераций
% x0 - Начальное приближение
%ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
% x - вектор решения
% flag - признак достижения решения (flag = 1, если достигнута точность tol
% в пределах числа итераций maxit; flag = 0, если за число итераций
% maxit точность tol не достигнута)
% relres - достигнутая относительная норма невязки
% iter - Число проделанных итераций
% resvec - Вектор полученных невязок
% t - вектор значений итерационного параметра на каждой итерации
x = x0;
flag = 0;
nb=norm(b,inf); % Норма вектора правой части
r = b - A * x; % Расчет невязки начального приближения
nr = norm (r,inf); % Норма невязки
resvec (1) = nr; % результирующий вектор невязок
for iter = 1 : maxit
% Уточнение решения
tau=dot(A*r,r)/dot(A*r,A*r); % Вычисление итерационного параметра
t(iter)=tau;% результирующий вектор итерационного параметра
x = x + tau * r; %Вычисление нового приближения
r = b - A * x; % Расчет невязки нового приближения
nr = norm (r,inf); % Норма невязки
resvec (iter+1) = nr; % результирующий вектор невязок
relres = nr / nb; %Достигнутая относительная норма невязки
if relres <= tol % Проверка условия окончания процесса
flag = 1;
break;
end
end
В функции con_grad, реализующей двучленные формулы явного ме-
тода сопряженных градиентов, используются два дополнительных выходных
параметра:
alpha и beta – векторы значений итерационных параметров
α
и
β на каждой итерации. Функция имеет вид:
function [x,flag,relres,iter,resvec,alpha,beta] = con_grad(A,b,tol,maxit,x0)
% Явный метод сопряженных градиентов (двучленные формулы)
%ПЕРЕДАВАЕМЫЕ ЗНАЧЕНИЯ
% A,b - Матрица, вектор правой части (соответственно)
% tol - требуемая точность (относительно нормы невязки)
% tau - итерационный параметр
% maxit - Максимальное число итераций
% x0 - Начальное приближение
%ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
% x - вектор решения
% flag - признак достижения решения (flag = 1, если достигнута точность tol
% в пределах числа итераций maxit; flag = 0, если за число итераций
% maxit точность tol не достигнута)
% relres - достигнутая относительная норма невязки
% iter - Число проделанных итераций
% resvec - Вектор полученных невязок
% alpha, beta - векторы значений итерационных параметров на каждой итерации
x = x0;
flag = 0;
N=length(b);
%ПЕРЕДАВАЕМЫЕ ЗНАЧЕНИЯ
% A,b - Матрица, вектор правой части (соответственно)
% tol - требуемая точность (относительно нормы невязки)
% tau - итерационный параметр
% maxit - Максимальное число итераций
% x0 - Начальное приближение
%ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
% x - вектор решения
% flag - признак достижения решения (flag = 1, если достигнута точность tol
% в пределах числа итераций maxit; flag = 0, если за число итераций
% maxit точность tol не достигнута)
% relres - достигнутая относительная норма невязки
% iter - Число проделанных итераций
% resvec - Вектор полученных невязок
% t - вектор значений итерационного параметра на каждой итерации
x = x0;
flag = 0;
nb=norm(b,inf); % Норма вектора правой части
r = b - A * x; % Расчет невязки начального приближения
nr = norm (r,inf); % Норма невязки
resvec (1) = nr; % результирующий вектор невязок
for iter = 1 : maxit
% Уточнение решения
tau=dot(A*r,r)/dot(A*r,A*r); % Вычисление итерационного параметра
t(iter)=tau;% результирующий вектор итерационного параметра
x = x + tau * r; %Вычисление нового приближения
r = b - A * x; % Расчет невязки нового приближения
nr = norm (r,inf); % Норма невязки
resvec (iter+1) = nr; % результирующий вектор невязок
relres = nr / nb; %Достигнутая относительная норма невязки
if relres <= tol % Проверка условия окончания процесса
flag = 1;
break;
end
end
В функции con_grad, реализующей двучленные формулы явного ме-
тода сопряженных градиентов, используются два дополнительных выходных
параметра: alpha и beta – векторы значений итерационных параметров α
и β на каждой итерации. Функция имеет вид:
function [x,flag,relres,iter,resvec,alpha,beta] = con_grad(A,b,tol,maxit,x0)
% Явный метод сопряженных градиентов (двучленные формулы)
%ПЕРЕДАВАЕМЫЕ ЗНАЧЕНИЯ
% A,b - Матрица, вектор правой части (соответственно)
% tol - требуемая точность (относительно нормы невязки)
% tau - итерационный параметр
% maxit - Максимальное число итераций
% x0 - Начальное приближение
%ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
% x - вектор решения
% flag - признак достижения решения (flag = 1, если достигнута точность tol
% в пределах числа итераций maxit; flag = 0, если за число итераций
% maxit точность tol не достигнута)
% relres - достигнутая относительная норма невязки
% iter - Число проделанных итераций
% resvec - Вектор полученных невязок
% alpha, beta - векторы значений итерационных параметров на каждой итерации
x = x0;
flag = 0;
N=length(b);
67
Страницы
- « первая
- ‹ предыдущая
- …
- 65
- 66
- 67
- 68
- 69
- …
- следующая ›
- последняя »
