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