Guest User

Untitled

a guest
Oct 19th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.01 KB | None | 0 0
  1. function p=ChebyshevInterp(f,n,xx)
  2. n = n-1; % Number intervals
  3. Xn = cos((pi/(n+1))*(0.5+(0:n))); % Chebyshev Nodes
  4. f_X = f(Xn); % f at Chebyshev nodes,
  5. omega = BaryWeigths(Xn); % Barycentric Weigths.
  6. p = zeros(1,length(xx)); % Setting interpolant
  7. is = ismember(xx,Xn); % Position of a member of Xn at xx.
  8. p(is) = f(xx(is)); % p(x_k) =f(x_k).
  9. xx = setdiff(xx,Xn); % xx \setminus Xn.
  10. A = repmat(Xn',1,100);
  11. A = bsxfun(@minus,xx,A);
  12. A = 1./A;
  13. p(~is)=sum(bsxfun(@times,A,(omega.*f_X)'))...
  14. ./sum(bsxfun(@times,A,omega'));
  15. end
  16.  
  17. function omega=BaryWeigths(X)
  18. n=length(X);
  19. X=X(:); % forced to be a column vector
  20. Omega=repmat(X,1,n); % [X|X|X|...|X]
  21. Omega=bsxfun(@minus,X',Omega); % [x_0-X|x_1-X|...|x_n-X]
  22. Omega=Omega+eye(n); % diagonal filled with 1's
  23. omega=1./prod(Omega); % Barycentric Weigths
  24. end
Add Comment
Please, Sign In to add comment