Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function procesar (D,P,Grado)
- % Recibe un vector D de distancias del radio base
- % Recibe un vector P de potencia en el punto D
- % Recibe el grado del polinomio que se desea crear
- % nota mental: no reinventar la rueda.
- % armamos la matriz A
- n = length(D);
- A = zeros(n,Grado+1);
- for i=1:n
- for j=1:Grado+1
- A(i,j)=D(i)^(j-1);
- end;
- end;
- % Usamos la notación de barras ya que el valor de la inversa de una
- % matriz es algo "teórico" y rara vez encuentra un resultado
- % satisfactorio en la resolucion de problemas computacionales.
- % LU
- [L,U] = lu((A'*A));
- b = A'*P;
- y = L\b;
- c = U\y
- % calculamos las normas
- Norm1LU = norm(((L*U)*c-y),1)
- Norm2LU = norm(((L*U)*c-y))
- NormInfLU = norm(((L*U)*c-y),Inf)
- NormPromLU = (Norm1LU + Norm2LU + NormInfLU)/3
- % hallamos el número de condición
- CondLu = cond(L*U)
- % damos vuelta c para poder evaluarlo
- c = flipud(c);
- % graficamos
- hold on;
- rango = -2400:0.5:3000;
- plot(rango,polyval(c,rango),'b');
- % Cholesky
- T = chol((A'*A));
- y = T'\b;
- c = T\y
- % calculamos las normas
- Norm1Chol = norm(((T'*T)*c-y),1)
- Norm2Chol = norm(((T'*T)*c-y))
- NormInfChol = norm(((T'*T)*c-y),Inf)
- NormPromChol = (Norm1Chol + Norm2Chol + NormInfChol)/3
- % hallamos el número de condición
- CondChol = cond(T'*T)
- % damos vuelta c para poder evaluarlo
- c = flipud(c);
- % graficamos
- rango = -2400:0.5:3000;
- plot(rango,polyval(c,rango),'b');
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement