ВУЗ:
Составители:
Рубрика:
60
вычисляется коэффициент
β
, что нашло отражение при построении соответ-
ствующего графика.
function iter(A,b,x0)
% Функция выбора метода решения, запроса исходных данных, обработки вывода
% результатов.
% Выводится номер эксперимента с каким-либо методом.
% Графическое окно с результатами эксперимента имеет тот же номер.
H=0; % номер эксперимента
while 1
p=menu('Решение СЛАУ итерационными методами', 'Метод Ричардсона',…
'Метод Якоби','Метод Зейделя','SOR-метод',…
'Метод минимальных невязок','Метод сопряженных градиентов',…
'
Выход');
switch p
case 1 % Метод Ричардсона
H=H+1;
fprintf(1,'\nЭксперимент %u\n', H)
disp('Метод Ричардсона')
tol = input('Введите требуемую точность решения: ');
maxit = input('Введите максимальное число итераций: ');
% для матрицы из sam3_01 оптимальное значение
% итерационного параметра равно 0.1774
tau = input ('Введите итерационный параметр: ');
[x,flag,relres,iter,resvec] = richardson(A,b,tol,maxit,x0, tau);
if flag == 0 % Решение не достигнуто
disp ('Решение не достигнуто')
fprintf(1, '\nДостигнута относительная норма невязки …
%e за %u итераций\n', relres, iter)
end
if flag == 1 % Решение достигнуто
disp ('Решение достигнуто')
fprintf(1, '\nДостигнута
относительная норма невязки …
%e за %u итераций\n', relres, iter)
disp('Решение методом Ричардсона');
x
figure;
% График изменения относительной нормы невязки
semilogy(0:iter, resvec / norm (b,inf))
grid on;
title('Метод Ричардсона')% заголовок окна
xlabel ('Номер итерации');
ylabel ('Относительная норма невязки');
end
disp('Нажмите Enter')
pause
case 2 % Метод Якоби
H=H+1;
fprintf(1,'\nЭксперимент %u\n', H)
disp('Метод Якоби')
tol = input('Введите требуемую точность решения: ');
maxit = input('Введите максимальное число итераций: ');
[x,flag,relres,iter,resvec] = jacobi(A,b,tol,maxit,x0);
if flag == 0 % Решение не достигнуто
disp ('Решение не достигнуто
')
fprintf(1, '\nДостигнута относительная норма невязки …
%e за %u итераций\n', relres, iter)
end
if flag == 1 % Решение достигнуто
disp ('Решение достигнуто')
fprintf(1, '\nДостигнута относительная норма невязки …
вычисляется коэффициент β , что нашло отражение при построении соответ-
ствующего графика.
function iter(A,b,x0)
% Функция выбора метода решения, запроса исходных данных, обработки вывода
% результатов.
% Выводится номер эксперимента с каким-либо методом.
% Графическое окно с результатами эксперимента имеет тот же номер.
H=0; % номер эксперимента
while 1
p=menu('Решение СЛАУ итерационными методами', 'Метод Ричардсона',…
'Метод Якоби','Метод Зейделя','SOR-метод',…
'Метод минимальных невязок','Метод сопряженных градиентов',…
'Выход');
switch p
case 1 % Метод Ричардсона
H=H+1;
fprintf(1,'\nЭксперимент %u\n', H)
disp('Метод Ричардсона')
tol = input('Введите требуемую точность решения: ');
maxit = input('Введите максимальное число итераций: ');
% для матрицы из sam3_01 оптимальное значение
% итерационного параметра равно 0.1774
tau = input ('Введите итерационный параметр: ');
[x,flag,relres,iter,resvec] = richardson(A,b,tol,maxit,x0, tau);
if flag == 0 % Решение не достигнуто
disp ('Решение не достигнуто')
fprintf(1, '\nДостигнута относительная норма невязки …
%e за %u итераций\n', relres, iter)
end
if flag == 1 % Решение достигнуто
disp ('Решение достигнуто')
fprintf(1, '\nДостигнута относительная норма невязки …
%e за %u итераций\n', relres, iter)
disp('Решение методом Ричардсона');
x
figure;
% График изменения относительной нормы невязки
semilogy(0:iter, resvec / norm (b,inf))
grid on;
title('Метод Ричардсона')% заголовок окна
xlabel ('Номер итерации');
ylabel ('Относительная норма невязки');
end
disp('Нажмите Enter')
pause
case 2 % Метод Якоби
H=H+1;
fprintf(1,'\nЭксперимент %u\n', H)
disp('Метод Якоби')
tol = input('Введите требуемую точность решения: ');
maxit = input('Введите максимальное число итераций: ');
[x,flag,relres,iter,resvec] = jacobi(A,b,tol,maxit,x0);
if flag == 0 % Решение не достигнуто
disp ('Решение не достигнуто')
fprintf(1, '\nДостигнута относительная норма невязки …
%e за %u итераций\n', relres, iter)
end
if flag == 1 % Решение достигнуто
disp ('Решение достигнуто')
fprintf(1, '\nДостигнута относительная норма невязки …
60
Страницы
- « первая
- ‹ предыдущая
- …
- 58
- 59
- 60
- 61
- 62
- …
- следующая ›
- последняя »
