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

UptoLike

68
nb=norm(b,inf); % Норма вектора правой части
r = b-A * x; % Расчет невязки начального приближения
p=r;% Направление движения
nr = norm (r,inf); % Норма невязки
resvec (1) = nr; % результирующий вектор невязок
for iter = 1 : maxit
B=dot(r,r);
alpha_k=B/dot(A*p,p); % Коэффициент альфа
alpha(iter)=alpha_k;% для графика alpha
x=x+alpha_k*p; % Новое приближение решения
r = r-alpha_k*A*p; % Расчет невязки нового приближения
nr = norm (r,inf); % Норма невязки
resvec (iter+1) = nr; % Результирующий вектор невязок
relres = nr / nb; % Достигнутая относительная норма невязки
if relres <= tol % Проверка условия окончания процесса
flag = 1;
break;
end
beta_k=dot(r,r)/B; % Коэффициент бета
beta(iter)=beta_k;
p=r+beta_k*p;% Новое направление
end
Решим различными методами систему, приведенную в главной про-
грамме (матрицу и вектор правой части, естественно, можно изменить, но все
рассматриваемые методы работают с положительно определенными матри-
цами). Решать систему будем до относительных кубических норм невязки,
равных 0.001. После запуска главной программы появляется меню (рис. 2.7).
Рис. 2.7. Меню
Выбираем первый пункт: Метод Ричардсона. В командном окне про-
грамма указывает номер эксперимента и предлагает ввести итерационный
параметр. Для рассматриваемой системы оптимальное значение итерацион-
ного параметра равно 0.1774.
Для других матриц итерационный параметр
необходимо подбирать.
Зададим tau=0.17
Эксперимент 1
Метод Ричардсона
Введите требуемую точность решения: 0.001
Введите максимальное число итераций: 1000
Введите итерационный параметр: 0.17
nb=norm(b,inf); % Норма вектора правой части
r = b-A * x; % Расчет невязки начального приближения
p=r;% Направление движения
nr = norm (r,inf); % Норма невязки
resvec (1) = nr; % результирующий вектор невязок
for iter = 1 : maxit
    B=dot(r,r);
    alpha_k=B/dot(A*p,p); % Коэффициент альфа
    alpha(iter)=alpha_k;% для графика alpha
    x=x+alpha_k*p; % Новое приближение решения
    r = r-alpha_k*A*p; % Расчет невязки нового приближения
    nr = norm (r,inf); % Норма невязки
    resvec (iter+1) = nr; % Результирующий вектор невязок
    relres = nr / nb; % Достигнутая относительная норма невязки
    if relres <= tol % Проверка условия окончания процесса
        flag = 1;
        break;
    end
    beta_k=dot(r,r)/B; % Коэффициент бета
    beta(iter)=beta_k;
    p=r+beta_k*p;% Новое направление
end
     Решим различными методами систему, приведенную в главной про-
грамме (матрицу и вектор правой части, естественно, можно изменить, но все
рассматриваемые методы работают с положительно определенными матри-
цами). Решать систему будем до относительных кубических норм невязки,
равных 0.001. После запуска главной программы появляется меню (рис. 2.7).




                                Рис. 2.7. Меню

Выбираем первый пункт: Метод Ричардсона. В командном окне про-
грамма указывает номер эксперимента и предлагает ввести итерационный
параметр. Для рассматриваемой системы оптимальное значение итерацион-
ного параметра равно 0.1774. Для других матриц итерационный параметр
необходимо подбирать. Зададим tau=0.17
Эксперимент 1
Метод Ричардсона
Введите требуемую точность решения: 0.001
Введите максимальное число итераций: 1000
Введите итерационный параметр: 0.17

                                                                        68