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

UptoLike

61
%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 3 % Метод Зейделя
H=H+1;
fprintf(1,'\nЭксперимент %u\n', H)
disp('Метод Зейделя')
tol = input('Введите требуемую точность решения: ');
maxit = input('Введите максимальное число итераций: ');
[x,flag,relres,iter,resvec] = seidel(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Достигнута относительная норма невязки
%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 4 % Метод последовательной верхней релаксации (SOR)
H=H+1;
fprintf(1,'\nЭксперимент %u\n', H)
disp('Метод последовательной верхней релаксации (SOR)')
tol = input('Введите
требуемую точность решения: ');
maxit = input('Введите максимальное число итераций: ');
omega=input('Введите коэффициент релаксации=');
[x,flag,relres,iter,resvec] = sor(A,b,tol,maxit,x0,omega);
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('Решение SOR-методом');
x
figure;
% График изменения относительной нормы невязки
semilogy (0:iter, resvec / norm (b,inf))
grid on;
       %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 3 % Метод Зейделя
    H=H+1;
    fprintf(1,'\nЭксперимент %u\n', H)
    disp('Метод Зейделя')
    tol = input('Введите требуемую точность решения: ');
    maxit = input('Введите максимальное число итераций: ');
    [x,flag,relres,iter,resvec] = seidel(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Достигнута относительная норма невязки …
        %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 4 % Метод последовательной верхней релаксации (SOR)
    H=H+1;
    fprintf(1,'\nЭксперимент %u\n', H)
    disp('Метод последовательной верхней релаксации (SOR)')
    tol = input('Введите требуемую точность решения: ');
    maxit = input('Введите максимальное число итераций: ');
    omega=input('Введите коэффициент релаксации=');
    [x,flag,relres,iter,resvec] = sor(A,b,tol,maxit,x0,omega);
    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('Решение SOR-методом');
        x
        figure;
        % График изменения относительной нормы невязки
        semilogy (0:iter, resvec / norm (b,inf))
        grid on;

                                                                 61