Praktická cvičení z Numerické matematiky

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


  • Norma vektoru a maticové normy

  • Normy vektoru spočteme příkazem norm
      x = [ 2; -1; 0];
    
      norm(x, 1)
      norm(x, 2)
      norm(x, inf)
    
    Maticové normy také
      A = [ 1 2 3 ; 4 5 6; 7 8 9];
      norm(A, 1)
      norm(A, Inf)
      % take normu spektralni
      norm(A, 2)  
    
    Frobeniovu normu pak např.
      norm(A, 'fro')
      sqrt(sum(sum(A.*A)))
    
    Vlastní čísla a spektrální poloměr matice
      lambda = eig(A);
      max(abs(eig(A)))
    
    Vlastní čísla a vlastní vektory
      [u,lam] = eig(A);
    

  • Pozitivní definitnost matice
  • Pro malé symetrické matice se pozitivní definitnost ověří např. přes vlastní čísla
      A = [ 2 1 1 ; 1 5 1; 1 1 9];
      eig(A)
    

  • Příklad 1.7: Číslo podmíněnnosti a jeho geometrická interpretace
  •   A = [ 2 -1;  -1  2];
      
      b  = [ -0.1; 0.1 ];
      b1 = b + (1e-5) * [ 1; 1];
    
      x  = A \ b;
      x1 = A \ b1;
    
    Číslo podmínněnosti, druhý vztah jen pro symetrické matice
      cond(A)
      max(eig(A)) / min(eig(A))
    
    Geometrická interpretace normy matice
      A = [ 2 -1;  -1  2];
      phi = (0:1e-2:(2*pi))'; 
      xy = [cos(phi), sin(phi)]';
      Axy = A * xy;
      plot(xy(1, :), xy(2, :), 'k-', Axy(1,:), Axy(2, :), 'b');
    

  • Příklad 1.8: Velké matice, třídiagonální
  •   n = 10; pom = ones(n -1, 1);
      A = 2 * diag(ones(n, 1)) - diag(pom, 1) - diag(pom, -1); 
    
      [u,lam] = eig(A);
      
      % zobrazeni 3. vlastniho vektoru 
      plot( u(:,3) )
    
    nebo
    n=10;
    e=ones(n,1); A = full(spdiags([-e 2*e -e ], [-1:1], n, n))
    
    spy(A)
    

  • Příklad 1.9:
  • Vytvoreni matice
    n =5; 
    e=ones(n,1); 
    B = full(spdiags([-e 4*e -e ], [-1:1], n, n)); 
    E = diag(-e);
    A = []; for i = 1:n, A = blkdiag(A, B); end,
    A = A - diag(ones(n*(n-1),1), -n) - diag(ones(n*(n-1),1), n);
    spy(A)