- 83
- 0
- 约2.51千字
- 约 7页
- 2020-12-17 发布于浙江
- 举报
专业 序号 姓名 日期
实验1 Lagrange 插值多项式
【实验目的】
1.掌握用MATLAB计算拉格朗日插值方法,改变节点的数目,对插值结果进行初步分析;
2.掌握用MATLAB的插值方法并通过实例学习用插值解决实际问题。
3. 观察Runge现象的演示。
输入n,【程序设计】
输入n,
输入x,令y=0对i=0,1......,n 执行
输入x,令y=0
对i=0,1......,n
t=1对j==0,1......,nIf ji y=y+ 执行 end end
t=1对j==0,1......,n
If ji
y=y+
输出x,y,结束
输出x,y,结束
【实验内容】
Lagrange 插值多项式
按照 P74 图4-4 的方法编 Lagrange 插值多项式
function y = mylagpoly(X,Y,x)
X,Y 采样点
x 自变量(向量)
y 多项式的函数值
要特别注意大小写,x,y 和 t 都是向量
【程序如下】:
% exp4_2.m --- Runge现象的演示(内含 L 和 N 插值多项式)
function try_Runge
% 见 P84
f = inline(1./(1+25*x.^2)); % 定义函数
n = 11;
X = linspace(-1,1,n); % n 等分( n+1 个点),插值点横坐标
Y = f(X); % 插值点纵坐标
x = -1 : 0.01 : 1; % 加细 x
y = mylagpoly(X,Y,x)
plot(x,f(x),r,X,Y,o,x,y,b)
title(Runge现象) % 加标题
legend(y=1/(1+25*x^2),插值点 ,等分的10次插值多项式,0) % 加标签
function y = mylagpoly(X,Y,x)
n = length(X);
y = zeros(size(x));
for i = 1:n
t=1;
for j = 1:n
if j ~= i
t = t.*((x-X(j))/(X(i)-X(j))); % 注意这里是点乘,字母与书上不同,此时t变成向量了
end
end
y=y+ t.*Y(i);
end
【运行结果如下】:
【结果分析】:
拉格朗日插值实验通过离散的点来构造一个函数来逼近原来的函数,理论上应该是点越多,构造函数应该会越来越逼近原函数,但是却发生了Range现象,所以在利用拉格朗日插值法来构造函数来逼近原函数时,应该选择适当的点来逼近原函数,但即使如此,依然不能有效的避免Range现象。
实验2 Newton 插值多项式
【实验目的】
1.掌握用MATLAB计算牛顿插值方法,改变节点的数目,对插值结果进行初步分析;
2.掌握用MATLAB的牛顿插值方法并通过实例学习用插值解决实际问题。
3. 观察Runge现象的演示。
【程序设计】
对i=0,1......,n输入n, 执行
对i=0,1......,n
输入n,
对i=n-1,.....,0输入x, 执行 end
对i=n-1,.....,0
输入x,
输出x,y,结束
输出x,y,结束
【程序如下】:
function try_Runge
% 见 P84
f = inline(1./(1+25*x.^2)); % 定义函数
n = 11;
X = linspace(-1,1,n); % n 等分( n+1 个点),插值点横坐标
Y = f(X); % 插值点纵坐标
x = -1 : 0.01 : 1;% 加细 x
y=interp_new(X,Y,x);
% 作图 (见P84图4-6)
plot(x,f(x),r,X,Y,o,x,y,b)
title(Runge现象) % 加标题
legend(y=1/(1+25*x^2),插值点 ,等分的10次插值多项式,0
原创力文档

文档评论(0)