ВУЗ:
Составители:
Рубрика:
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
- …
- следующая ›
- последняя »