试验二 插值法(含实验报告格式)

更新时间:2023-11-15 10:55:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

试验二 插值法

一、

实验目的

(1) 学会Lagrange 插值和牛顿插值等基本插值方法; (2) 讨论插值的Runge现象,掌握分段线性插值方法;

(3) 学会Matlab提供的插值函数的使用方法,会用这些函数解决实际问题。 二、

实验要求

(1) 按照题目要求完成实验内容; (2) 写出相应的Matlab 程序;

(3) 给出实验结果(可以用表格展示实验结果); (4) 分析和讨论实验结果并提出可能的优化实验。 (5) 写出实验报告。 三、

实验步骤

1、用编好的Lagrange 插值法程序计算书本P66 的例1、用牛顿插值法计算P77的例1。

2、已知函数在下列各点的值为:

xi f(xi) 试用

4

0.2 0.98 0.4 0.92 0.6 0.81 0.8 0.64 1.0 0.38 次牛顿插值多项式P4(x)对数据进行插值,根据

,画出图形。 ,10}

{(xi,yi),xi?0.2?0.08i,i?0,1,2,3、在区间[-1,1]上分别取n?10,2用两组等距节点对龙格函数

f(x)?1,(?1?x?1)作多项式和线性插值,对不同n值,分别画出插值函数及

1?25x2f(x)的图形。

3、下列数据点的插值

x y 0 0 1 1 4 2 9 3 16 4 25 5 36 6 49 7 64 8 可以得到平方根函数的近似,在区间[0,64]上作图。 (1) 用这9个点作8次多项式插值L8(x)。

附:试验报告格式样本(正式报告这行可删除)

佛山科学技术学院

实 验 报 告

课程名称 数值分析 实验项目 插值法

专业班级 姓 名 学 号 指导教师 黄国顺 成 绩 日 期 月 日

一、实验目的

1、学会Lagrange 插值、牛顿插值和 分段线性插值等基本插值方法;

2、讨论插值的Runge现象,掌握分段线性插值方法

3、学会Matlab提供的插值函数的使用方法,会用这些函数解决实际问题。

二、实验原理

1、拉格朗日插值多项式 2、牛顿插值多项式 3、分段线性插值

三、实验步骤

1、用MATLAB编写独立的拉格朗日插值多项式函数

2、用MATLAB编写独立的牛顿插值多项式函数

3、利用编写好的函数计算本章书本P66 的例1、用牛顿插值法计算P77的例1。 4、利用编写好的函数计算实验步骤中要求的各道题。(注意:这里需将要做得的题目抄下来,仅以上机实习题2为例:)

2、在区间[-1,1]上分别取n?10,2用两组等距节点对龙格函数

f(x)?1,(?1?x?1)作多项式和线性插值,对不同n值,分别画出插值函数及

1?25x2f(x)的图形。

程序:

(1)画龙格函数

f(x)?11?25x2的图形的matlab代码

a=-1;b=1;n=100;h=(b-a)/n; >> x=a:h:b;y=1./(1+25.*x.^2); >> plot(x,y,'k')

function yi=Lagrange(x, y, xi) % Lagrange 插值多项式,其中 % x --- 向量,全部的插值节点 % y --- 向量,插值节点处的函数值 % xi --- 标量,自变量x % yi --- xi 处的函数估计值

n=length(x); m=length(y); if n~=m

error('The lengths of X and Y must be equal'); return; end

p=zeros(1,n); for k=1:n

t=ones(1,n); for j=1:n if j~=k

if abs(x(k)-x(j))

error('the DATA is error!'); return; end

t(j)=(xi-x(j))/(x(k)-x(j)); end end

p(k)=prod(t); end

yi=sum(y.*p);

(2)龙格函数的Lagrange()插值函数画图源程序 function Runge(n) % Runge现象

% n --- 等距离节点

a=-1; b=1; h=(b-a)/n;

x=[a:h:b]; y=1./(1+25.*x.^2);

xx=[a:0.01:b]; yy=1./(1+25.*xx.^2); m=length(xx); z=zeros(1,m); for i=1:m

z(i)=Lagrange(x, y, xx(i)); end

hold on

plot(x,y,'o');plot(xx,z,'r-'); hold off

例如:编写一个基本牛顿插值函数 (其变种有等距离牛顿插值函数) function yi=New_Int(x, y, xi) % Newton 基本插值公式,其中

% x --- 向量,全部的插值节点,按行输入 % y --- 向量,插值节点处的函数值,按行输入 % xi --- 标量,自变量x % yi --- xi 处的函数估计值 n=length(x); m=length(y); if n~=m

error('The lengths of X and Y must be equal'); return; end

% 计算均差表Y Y=zeros(n); Y(:,1)=y';

% Y(:,1)表示矩阵中第一列的元素 for k=1:n-1 for i=1:n-k

if abs(x(i+k)-x(i))

error('the DATA is error!'); return; end

Y(i,k+1)=(Y(i+1,k)-Y(i,k))/(x(i+k)-x(i)); end end

% 计算Newton插值公式 N(xi) yi=0; for i=1:n z=1; for k=1:i-1 z=z*(xi-x(k)); end

yi=yi+Y(1,i)*z; end

function Runge_line(n)

% 用分段线性函数近似函数 1/(1+x^2) % n --- 等分给间数

a=-5; b=5; h=(b-a)/n; x=[a:h:b]; y=1./(1+x.^2);

xx=[a:0.01:b]; yy=1./(1+xx.^2); m=length(xx); z=zeros(1,m); for i=1:m

z(i)=line_int_wise(x,y,xx(i)); end

plot(x, y, 'ro', xx, yy, 'k:', xx, z,'k-');

四、实验结果

10.90.80.70.60.50.40.30.20.10-1-0.50x0.51y

图一 龙格函数的图形

调用Runge(10)得到的图像如下

21.510.50-0.5-1-0.500.51

图二:Runge(10)的图形

Runge(12)的图像如下:

10.50-0.5-1-1.5-2-2.5-3-3.5-4-1-0.500.51

图三 Runge(12)的图形

Runge(20)的图像如:

100-10-20-30-40-50-60-1-0.500.51

图四Runge(20)的图形

五、讨论分析

(对上述算例的计算结果进行比较分析,自己补充)

六、改进实验建议

这里可以写学生自己不同的实验方法和代码,强调学生自主学习和创新,鼓励大家上网搜索资料,参考和消化不同的源程序并转化为自己的东西,做得好平时成绩有分

加。例如:研究拉格朗日插值函数与MATLAB程序的interp1()函数,画出它们的分段线性

插值。

本文来源:https://www.bwwdw.com/article/dwjv.html

Top