【发布时间】:2016-10-18 20:21:12
【问题描述】:
这是我必须解决的问题:
编写一个程序来评估和绘制
x在-5和5之间的u(x) = 1/(1+x^2)的拉格朗日插值Iu(x)。对5,7,9,11,13,15点插值(5、7、9 等数据点在 -5 和 5 之间,包括 -5 和 5)执行此操作。您的结果应该同时显示函数和插值。
这是我目前想出的代码:
int_pts = [5,7,9,11,13,15]; %various values for no. of point interpolants
n = length(int_pts);
u = @(x) 1./(1+x.^2); %the function we are interested in
numer = 1;
denom = 1; %set initial values of numerator and denominator
for k = 1 : n
L = zeros( 1,int_pts(k) ); %create an array to store Lagrange polynomials
x = [-5 : 10/(int_pts(k)-1) : 5]; %create a list of x values
udata = u(x); %create a list of corresponding values of u(x)
for i = 1 : int_pts(k)
if (i ~= k)
denom = x(k) - x(i);
syms z;
numer = symfun( z - x(i) , z);
break
end
numer = numer * numer;
denom = denom * denom;
L(i) = numer / denom;
end
end
我认为我走在正确的轨道上,但我真的开始纠结于如何提取数据并很好地绘制所有内容。我到处搜索,但大多数代码似乎只想输出某些数字的拉格朗日多项式的值,即 P(2)=...
【问题讨论】:
标签: matlab interpolation