%% Demo for interpolation of ln(x)on interval [-5:5] x = [-5:-1:5]; %% 画图用点 z = @(x) 1 + x.^2; m = @(x) 1 ./ z(x); X1 = [-5:10/5:5]; Y1 = m(X1); %% 5次多项式的插值点 y1 = Lagrange(X1,Y1,5,x); X2 = [-5:10/10:5]; Y2 = m(X2); %% 10次多项式的插值点 y2 = Lagrange(X2,Y2,10,x); X3 = [-5:10/20:5]; Y3 = m(X3); %% 20次多项式的插值点 y3 = Lagrange(X3,Y3,20,x); plot(x,m(x),'r',x,y1,'b',x,y2,'m',x,y3,'c'); legend('1/(1+X^2)','L_5(x)','L_{10}(x)','L_{20}(x)'); %% Larange Interpolation % 输入: X 插值点 % Y 插值点函数值 % n 插值次数 % x 逼近点 % y 逼近值 function y = Lagrange(X,Y,n,x) if n >= length(X) fprintf('错误:插值点不够\n'); return end m = length(x); y = zeros(m,1); for k = 0 : n for i = 1:m y(i) = y(i) + Y(k+1)*prod(x(i)-X([1:k,k+2:end]))/prod(X(k+1)-X([1:k,k+2:end])); end end end警告: 忽略额外的图例条目。 > 位置:legend>process_inputs (第 592 行) 位置: legend>make_legend (第 319 行) 位置: legend (第 263 行) 位置: LagrangeInterp (第 12 行) 怎么修改错误
时间: 2023-12-16 08:03:01 浏览: 51
Phase-based-Frame-Interpolation:帧插值
在 LagrangeInterp 函数中,当 n >= length(X) 时,会输出错误信息并返回。因此,可以考虑修改插值点的数量,使得 n < length(X),或者修改 n 的值,使得 n < length(X)。
例如,可以将 X1、Y1、X2、Y2、X3、Y3 中的步长减小,以减少插值点数量。或者可以将 LagrangeInterp 函数中的 n 的值减小,以减少插值次数。
另外,警告信息是由于 legend 函数的输入参数不正确,可以检查 legend 函数的输入参数是否有误。
阅读全文