Advertisement
Guest User

Untitled

a guest
Nov 26th, 2014
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.79 KB | None | 0 0
  1. function procesar (D,P,Grado)
  2. %  A partir de los valores "x" genera y devuelve una matriz que contiene,
  3. %  los valores obtenidos al evaluar la funcion de grado "Grado"
  4. %  en cada una de los valores de "x".
  5.  
  6. % nota mental: no reinventar la rueda.
  7.  
  8.     % armamos la matriz A
  9.    
  10.     n = length(D);
  11.     A = zeros(n,Grado+1);
  12.     for i=1:n
  13.         for j=1:Grado+1
  14.                 A(i,j)=D(i)^(j-1);
  15.         end;
  16.      end;
  17.      
  18.      % Usamos la notación de barras ya que el valor de la inversa de una
  19.      % matriz es algo "teórico" y rara vez encuentra un resultado
  20.      % satisfactorio en la resolucion de problemas computacionales.
  21.      
  22.      % LU
  23.      
  24.      [L,U] = lu((A'*A));
  25.      b = A'*P;
  26.      y = L\b;
  27.      c = U\y
  28.      
  29.      % calculamos las normas
  30.      
  31.      Norm1LU    = norm(((L*U)*c-y),1)
  32.      Norm2LU    = norm(((L*U)*c-y))
  33.      NormInfLU  = norm(((L*U)*c-y),Inf)
  34.      NormPromLU = (Norm1LU + Norm2LU + NormInfLU)/3
  35.      
  36.      % hallamos el número de condición
  37.      
  38.      CondLu = cond(L*U)
  39.      
  40.      % damos vuelta c para poder evaluarlo
  41.      
  42.      c = flipud(c);
  43.      
  44.      % graficamos
  45.      
  46.      hold on;
  47.      rango = -2400:0.5:3000;
  48.      plot(rango,polyval(c,rango),'b');
  49.      
  50.      % Cholesky
  51.      
  52.      T = chol((A'*A));
  53.      y = T'\b;
  54.      c = T\y
  55.      
  56.      % calculamos las normas
  57.      
  58.      Norm1Chol    = norm(((T'*T)*c-y),1)
  59.      Norm2Chol    = norm(((T'*T)*c-y))
  60.      NormInfChol  = norm(((T'*T)*c-y),Inf)
  61.      NormPromChol = (Norm1Chol + Norm2Chol + NormInfChol)/3
  62.      
  63.      % hallamos el número de condición
  64.      
  65.      CondChol = cond(T'*T)
  66.      
  67.      % damos vuelta c para poder evaluarlo
  68.      
  69.      c = flipud(c);
  70.      
  71.      % graficamos
  72.      rango = -2400:0.5:3000;
  73.      plot(rango,polyval(c,rango),'b');
  74.  
  75.      
  76. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement