function simpITJcobi clc; clear all;close all; %% разр. случ. симм. матрица с диаг. преобладанием % по строкам величины ro >= 1: |a_ii|>ro*sum_j |a_ij| n = 100; den = 0.2 % из [0,1]. Плотность (доля) ненулевых элементов ro = 1.2 A = sprandsym(n,den); % нули на главной диагонали A, вне диаг. отрицательные числа A = -abs(A - diag(diag(A))); A = A + ro*diag(sum(abs(A),2)); %% тестовая задача x = rand(n,1); b = A*x; %% решаем СЛАУ методом Якоби [y,niter] = JcobiIt(A,b,3*n,1e-6); err = norm(x-y,inf); disp(' n niter err_inf') disp([n niter err]) function [y,niter] = JcobiIt(A,b,maxIter,tol) %% Ит. метод Якоби решения СЛАУ n = numel(b); L = tril(A,-1); % строго нижне-треуг. часть A D = diag(A); % вектор диаг. элементов (не матрица!) U = triu(A,1); % строго верхне-треуг. часть A y0 = b./D; % начальная итерация for niter=1:maxIter y = (b - L*y0 - U*y0)./D; err = norm(y-y0,inf); if err<=tol, break; end y0 = y; end