MATLAB Answers

# Possible to "expand" function handle?

5 ビュー (過去 30 日間)
dm 2012 年 2 月 18 日
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

サインインしてコメントする。

### 採用された回答

Walter Roberson 2012 年 2 月 18 日
Sorry, no it is not.
##### 2 件のコメント表示非表示 1 件の古いコメント
Walter Roberson 2012 年 2 月 19 日
You may wish to consider using symbolic expressions instead.

サインインしてコメントする。

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!