Praktická cvičení z Numerické matematiky

Soustavy lineárních a nelineárních algebraických rovnic - 2. týden


  • Prostá iterační metoda
  •   U = [ 0.5 0.1 0.3; -0.2 0.4 -0.2; 0.1 0.2 0.3];
      V = [ 0.8 ; 0; 0.55 ];
      norm(U, 1)
      norm(U, 2)
      norm(U, Inf)
    
      [u,v] = eig(U);
    
      X = V; % pocatecni podminka
    
      % jedna iterace (opakujeme)
      X = U * X + V
    

  • Prostá iterační metoda - cyklus
  •   for i = 1:40, X = U * X + V; end
    

  • Příklad 2.5: Prostá iterační metoda pro velké matice
  •   n = 20; pom = ones(n - 1, 1);
      U = -diag(pom, 1) / 2 - diag(pom, -1) / 2;
      V = ones(n, 1);
    
      [z, lam] = eig(U);
    
      norm(U, 1)
      norm(U, 2)
      norm(U, Inf)
    
      X = V; % pocatecni podminka
    
      % opakujeme
      X = U * X + V; 
    

  • Příklad 2.6: Prostá iterační metoda pro velké matice
  • n = 5; 
    e = ones(n,1) / 4; 
    B = full(spdiags([-e 0 -e ], [-1:1], n, n)); 
    A = []; for i = 1:n, A = blkdiag(A, B); end,
    pom = diag(ones(n*(n-1),1), -n) / 4;
    A = A - pom - pom';
    spy(A)
    
    U = A;
    V = ones(n, 1);
    
    [z, lam] = eig(U);
    
    norm(U, 1)
    norm(U, 2)
    norm(U, Inf)
    
    X = V; % pocatecni podminka
    
    % opakujeme
    X = U * X + V;