I've written a function that returns a function handle to a Lagrange polynomial L(x):
function L = lagrange(xv,yv)% make sure xv and yv are row vectors
xv = xv(:);yv = yv(:);% check for equal dimensions
if size(xv) ~= size(yv) error('xv and yv must be of same dimensions');end% number of points
n = length(xv);% initialize to zero
L = @(x)0;for k = 1:n l = @(x)1; % initialize k'th basis polynomial
for m = 1:n if k ~= m % if k different from m, calculate basis
l = @(x)(l(x).*(x-xv(m))/(xv(k)-xv(m))); end end L = @(x)(L(x)+yv(k).*l(x)); % perform linear combination
end
It seems to work as I want it to (calling L(4), or whatever, produces the correct result), but if I type L in the command line, Matlab prints "L = @(x)(L(x)+yv(k).*l(x))".
Is it possible to get the complete function printed out? I.e., if my yv vector stems from the function x^3, then the Lagrange polynomial should be 6x^2-11x+6, but I can't figure out how to get this printed out; is it posible?
best regards
dm
Best Answer