Advertisement
Guest User

Untitled

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