评估给定间隔内的函数以进行绘图

时间:2015-07-23 01:59:05

标签: matlab matlab-figure

我应该使用一个逐点评估这个多项式的函数在给定的区间[a,b]上绘制一个拉格朗日多项式:

function y = evalLagrangePolynomial(X, k, x)

n = numel(X);
y = 1;

for i=1:n
    if i ~= k
        y = y * (x - X(i)) / (X(k) - X(i));
    end
end
end

然而,我有点困惑如何解决这个问题;这种情况有一些原生的matlab函数吗?

1 个答案:

答案 0 :(得分:1)

我不知道原生功能,但是,这是我写的。

XY = sortrows(rand(10, 2));
X = XY(:,1);
Y = XY(:,2);
x = linspace(0, 1, 100);
y = LagrangePolynomial(X, Y, x);
plot(x, y, '-', X, Y, 'o')

LagrangePoly

使用功能

function y = LagrangePolynomial(X, Y, x)
    if isscalar(x)
        l = GenerateLagrangePolynomial(X, x)';
        y = sum(l .* Y);
    else
        y = arrayfun(@(w) LagrangePolynomial(X, Y, w), x);
    end
end

function l = GenerateLagrangePolynomial(X, x)
    [X, ~] = meshgrid(X, ones(size(X)));
    lPreprod = (x - X') ./ (X - X');

    lPreprod(isinf(lPreprod)) = 1;
    l = prod(lPreprod, 1);
end