function [x_koz, k, hiba1]= Jacobi_iteracio(A, b, x0, k_max, d_min);
  %{
  
        [x_koz, k, hiba1]= Jacobi_iteracio(A, b, x0, k_max, d_min)
  
      Az A*x = b lineáris egyenletrendszer közelítõ megoldása az
      
        x_(k+1) = B*x_k + c 
        
      Jacobi-iterációval.
      
      Az iteráció akkor áll le, ha
           ||x_(k+1) - x_k|| < d_min  vagy k > k_max
    
      Bemenõ paraméterek
      
       A, b       az egyenletrendszer együttható-mátrixa és jobboldala
       x0         kezdõvektor
       k_max      az iterációs lépések maximális száma    
       d_min      az elsõ pontossági kritérium
    
      Kimenõ paraméterek
       x_koz     az utolsó kiszámolt közelítés 
       k         a végrehajtott iterációs lépések száma
       hiba1     a két utolsó közelítés különbségének normája
   %} 
 
    %% Az input paraméterek  ellenõrzése
    if nargin != 5
      error('Jacobi_iteráció: Hibás az input paraméterek száma')
    endif
    
    [nA, mA]  =  size(A);
    [nb, mb]  =  size(b);
    
    
    if  nA != mA || nA != nb || mb != 1 || !all(size(x0) == size(b))
      error('Jacobi_iteráció: Hibás az input paraméterek dimenziója!')
    elseif !isnumeric(A) || !isnumeric(b) || !isnumeric(x0) | ...
           !isnumeric(k_max) || !isnumeric(d_min) | ...
           !isscalar(k_max)  || !isscalar(d_min)
      error('Jacobi_iteráció: Hibás az input paraméterek típusa!')       
    endif
    
    %% a Jacobi-iteráció B mátrixának kiszámolása:
    D	= diag(diag(A));    %% az A diagonálisából álló D mátrix
    B	= -inv(D)*(A-D);    %% lehetne: D\(D-A)

    %% a Jacobi-iteráció c vektorának kiszámolása:
    c	= inv(D)*b;       %% lehetne: D\b
    
    %% A kódban föltesszük, hogy legalább egyszer lefut a while ciklus
    x_koz  =  x0;
    hiba1  = inf;
    k      =   1;
    
    while (k <= k_max) && (hiba1 >= d_min)
        x_new = B*x_koz + c;
        hiba1 = norm(x_new - x_koz, 'inf');
        k     = k + 1;
        x_koz = x_new;
    endwhile
    
    if k == k_max+1
        warning(" Az iteráció valószínûleg nem konvergált!")
        k = k -1;
    endif
endfunction
