龙格现象实验报告

合集下载

数值分析实验报告--实验2--插值法

数值分析实验报告--实验2--插值法

1 / 21数值分析实验二:插值法1 多项式插值的震荡现象1.1 问题描述考虑一个固定的区间上用插值逼近一个函数。

显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。

我们自然关心插值多项式的次数增加时, 是否也更加靠近被逼近的函数。

龙格(Runge )给出一个例子是极著名并富有启发性的。

设区间[-1,1]上函数21()125f x x=+ (1)考虑区间[-1,1]的一个等距划分,分点为n i nix i ,,2,1,0,21 =+-= 则拉格朗日插值多项式为201()()125nn ii iL x l x x ==+∑(2)其中的(),0,1,2,,i l x i n =是n 次拉格朗日插值基函数。

实验要求:(1) 选择不断增大的分点数目n=2, 3 …. ,画出原函数f(x)及插值多项式函数()n L x 在[-1,1]上的图像,比较并分析实验结果。

(2) 选择其他的函数,例如定义在区间[-5,5]上的函数x x g xxx h arctan )(,1)(4=+=重复上述的实验看其结果如何。

(3) 区间[a,b]上切比雪夫点的定义为 (21)cos ,1,2,,1222(1)k b a b ak x k n n π⎛⎫+--=+=+ ⎪+⎝⎭(3)以121,,n x x x +为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果,试分析2 / 21原因。

1.2 算法设计使用Matlab 函数进行实验, 在理解了插值法的基础上,根据拉格朗日插值多项式编写Matlab 脚本,其中把拉格朗日插值部分单独编写为f_lagrange.m 函数,方便调用。

1.3 实验结果1.3.1 f(x)在[-1,1]上的拉格朗日插值函数依次取n=2、3、4、5、6、7、10、15、20,画出原函数和拉格朗日插值函数的图像,如图1所示。

Matlab 脚本文件为Experiment2_1_1fx.m 。

可以看出,当n 较小时,拉格朗日多项式插值的函数图像随着次数n 的增加而更加接近于f(x),即插值效果越来越好。

数值分析上机实验报告

数值分析上机实验报告

数值分析上机实验理学院11级统计01班41108030125鲁庆实验报告一一.实验名称误差与误差估计二.实验目的掌握数值运算的误差估计方法三.数学原理 1.绝对误差(*)e x设某一量的准确值为x ,近似值为x*,则x*与x 之差叫做近似值x*的绝对误差(简称误差),记为*(*)*e e x x x ==- 2.绝对误差限适当小的正数,使|(*)||*|*e x x x ε=-≤则称*ε为近似值 x * 的绝对误差限。

(有时用*x x ε*=±表示近似值x *的精度或准确值的所在范围。

3.相对误差(*)r e x绝对误差与准确值之比*(*)*(*),0r r e x x xe e x x x x-===≠称为x *的相对 误差。

4.相对误差限(*)r x ε若指定一个适当小的正数 (*)r x ε,使|(*)||(*)|(*)||r r e x e x x x ε=≤则称(*)r x ε为近似值 x *的相对误差限。

5.有效数字若近似值x*的绝对误差限是某一位的半个单位,该位到x*的第一位非零数字一共有n 位,则称近似值x*有n 位有效数字,或说x*精确到该位。

6.绝对误差的运算:)()()(2121x x x x εεε+=± )()()(122121x x x x x x εεε+≈22122121+=x x x x x x x )()()(εεε (f(x))()(x)f x εε'≈四.实验内容1. 计算I n=e 1-⎰10nxe x 2dx (n=0,1,...)并估计误差。

解: >> I0 = exp(-1)*quad('(x.^0).*exp(x.^2)',0,1,10^(-10));>> vpa(I0,10) ans =.5380795069>> I1= exp(-1)*quad('(x.^1).*exp(x.^2)',0,1,10^(-10)); >> vpa(I1,10) ans =.3160602794>> I2 = exp(-1)*quad('(x.^2).*exp(x.^2)',0,1,10^(-10)); >> vpa(I2,10) ans =.2309602465>> I3 = exp(-1)*quad('(x.^3).*exp(x.^2)',0,1,10^(-10)); >> vpa(I3,10) ans =.1839397206>> I4 = exp(-1)*quad('(x.^4).*exp(x.^2)',0,1,10^(-10)); >> vpa(I4,10) ans =.1535596302>> I5 = exp(-1)*quad('(x.^5).*exp(x.^2)',0,1,10^(-10)); >> vpa(I5,10) ans =.1321205588>> I6 = exp(-1)*quad('(x.^6).*exp(x.^2)',0,1,10^(-10)); >> vpa(I6,10) ans =.1161009245>> I7 = exp(-1)*quad('(x.^7).*exp(x.^2)',0,1,10^(-10)); >> vpa(I7,10) ans =.1036383235>> I8 = exp(-1)*quad('(x.^8).*exp(x.^2)',0,1,10^(-10)); >> vpa(I8,10) ans =.9364676413e-1>> I9 = exp(-1)*quad('(x.^9).*exp(x.^2)',0,1,10^(-10)); >> vpa(I9,10) ans =.8544670595e-1 2.计算x255的值。

四阶龙格库塔实验报告

四阶龙格库塔实验报告

三、四阶Runge-Kutta 法求解常微分方程一、龙格库塔法的思想根据第九章的知识可知道,Euler 方法的局部截断误差是2()O h ,而当用Euler 方法估计出1,()(1)n n n n y y hf x y +=+ 再用梯形公式111[(,)(,)](2)2n n n n n n h y y f x y f x y +++=++进行校正,即采用改进Euler 方法得出数值解的截断误差为3()O h 。

由Lagrange 微分中值定理'11()()()()()(,())(3)n n n n n y x y x y x x y x hf y ξξξ++=+-=+ 记*(,())k hf y ξξ=,得到*1()()(4)n n y x y x k +=+这样只要给出一种计算*k 的算法,就能得到相应的计算公式。

用这种观点的来分析Euler 方法和改进Euler 方法,Euler 方法的迭代公式可改写为111(,)n n n n y y k k hf x y +=+=改进Euler 方法的预报-校正公式可改写为 1121211()2(,),(,)n n n n n n y y k k k hf x y k hf x h y k +=++==++ Euler 方法实际上是用一个点处的值1k 近似*k ,而改进Euler 方法是用两个点处的值1k ,和2k ,做算术平均值近似*k 自然改进Euler 方法要优于Euler 方法。

因此,可以想到假如在1[,]n n x x +内多预报几个点值i k ,并用他们的加权平均值作为*k 的近似值,则有可能构造出具有更高精度的计算公式,这就是Runge-Kutta 法的基本思想。

二、四阶龙格库塔法由Runge-Kutta 的基本思想,构造四阶Runge-Kutta 法是利用1234,,k k k k 和的加权平均值来近似*k ,因此令1112233441211132211243312213(,)(,)(5)(,)(,)n n n n n n n n n n y y w K w K w K w K K hf x y K hf x h y K K hf x h y K K K hf x h y K K K αβαβγαβγη+=++++⎧⎪=⎪⎪=++⎨⎪=+++⎪⎪=++++⎩使得511()()n n y x y O h ++-=即其总体截断误差为4()O h 。

数值分析实验报告62338

数值分析实验报告62338
s=f(x); t=x-s(1)/s(2); en=t-x; x=t; m(i)=t; i=i+1; end y=[x,i+1,m]; end 牛顿割线法: function y=Secant(x1,x2,e) i=3;
m(1)=x1,m(2)=x2; while abs(x2-x1)>=e
s1=f(x1); s2=f(x2); t=x2—(x2—x1)*s2(1)/(s2(1) -s1(1)); x1=x2; x2=t; m(i)=t; i=i+1; end y=[x2,i+1,m]; end 史蒂芬森迭代法: Function
1
2
3
4
5
图 1.2 不同迭代法下迭代值得收敛情况
二分法收敛效果较差,牛顿迭代法和牛顿割线法相近,史蒂芬森迭代法收敛 次数高于 1,效果最好 3. 不同初值的收敛情况
二分法
2
6
5 1
4
3 0
2
-1
1
0 -2
-1
-2 -3
-3
-4
-4
0
10 20
30
40
0
牛顿迭代法
50
100
150
图 1.3 二分法,牛顿迭代法下不同初值的收敛情况
牛顿割线法 8
史蒂芬森迭代法 2.5
6
2 4
2
1.5
0
-2
1
-4 0.5
-6
-8
0
0
20
40
60
80
0
2
4
6
8
图 1.4 牛顿割线法,史蒂芬森迭代法下不同初值的收敛情况
1. 二分法的五个初始区间分别为

数值积分上机报告拉格朗日差值法

数值积分上机报告拉格朗日差值法

图一:线性插值图解
Lagrange 抛物线插值法算法:
假定插值节点为 x0 , x1 , x2 ,要求二次插值多项式 L2 ( x) ,使它满足 L2 ( xi ) yi , (i 0,1,2) , 几何上 y L2 ( x) 就是通过三点 ( x0 , y0 ), ( x1 , y1 ), ( x2 , y2 ) 的抛物线。为了求出 L2 ( x) 的表达式, 可 采用基函数方法。 l0 ( x) 可 表 示 为 l0 ( x) A( x x1 )( x x2 ) , 由 l0 ( x0 ) 1 可 得 A
1 ,于是 ( x0 x1 )( x0 x2 )
l0 ( x )
( x x0 )( x x2 ) 。 ( x0 x1 )( x0 x2 ) ( x x0 )( x x2 ) ( x x0 )( x x1 ) , l2 ( x ) 。 ( x1 x0 )( x1 x2 ) ( x2 x0 )( x2 x1 )
k
式为: L( x) : y j l j ( x) ,其中每个 l j ( x) 为 Lagrange 基本多项式(或称插值基函数),其表
j 0
k
达式为: l j ( x) :
i 0 ,i j
Байду номын сангаас

( x x j 1 ) ( x x j 1 ) x xi ( x x0 ) ( x xk ) 。Lagrange x j xi ( x j x0 ) ( x j x j 1 ) ( x j x j 1 ) ( x j xk )
六、计算中出现的问题,解决方法及体会
问题 1.在做第一题的时候我们没有使用 for 循环语句,每进行一次二次、三次 Lagrange 插 值多项式的时候都会需要重新编程,导致计算过程累赘并且不明了。 2.由于受 C 语言的影响,在写不等于的时候我们常常写成(!=) ,Matlab 软件无法识 别。

计算方法实验报告newton

计算方法实验报告newton

南昌航空大学实验报告2012年4月22日课程程名称:计算方法 实验名称:Lagrange 和Newton 插值多项式 班级: ____ 姓名:______一、实验目的理解插值的基本原理, 掌握Lagrange 、Newton 插值算法的定义与异同, 观察Lagrange 插值的龙格现象。

二、实验原理1)插值原理已知数据:0011(,),(,),,(,)n n x y x y x y , 根据插值基本定理:n +1个互异的数据点, 可以唯一确定一个满足插值条件的n 次插值多项式。

最简单的两种插值多项式是Lagrange 插值多项式与Newton 插值多项式。

2)Lagrange 插值多项式公式为:()()nn i ii L x l x y ==∑, 其中0()()()nj i j i j j ix x l x x x =≠-=-∏;牛顿插值多项式是拉格朗日插值多项式的另一种等价表示方式, 与Lagrange 插值多项式相比, 当节点数增加时,能充分利用已有的计算数据, 且总计算量小的特点。

它的公式为:00100120101011()()[,]()[,,]()()[,,,]()()()n n n N x f x f x x x x f x x x x x x x f x x x x x x x x x -=+-+--+++--- 其中01[,]f x x 、012[,,]f x x x 、 、01[,,,]n f x x x 依次为一阶、二阶、 、n 阶差商。

(3)相关说明:poly 函数 求多项式的系数(由已知根求多项式的系数) 调用格式:Y = poly (V) X1=[1,2]; l1=poly(X1), l1=[ 1 -3 2]poly2sym 函数 将多项式系数向量转为解析式形式 调用格式:poly2sym (C) poly2sym(l1) ans =x^2 - 3*x + 2polyval 函数 给定多项式系数向量,求某点的值 调用格式:Y = polyval(P ,X) polyval(l1,2) ans = 0conv 函数 求多项式相乘后的多项式系数。

数值分析实验报告Hermite插值法、Runge现象,比较Language插值、分段线性插值、分段三次Hermie插值

数值分析实验报告Hermite插值法、Runge现象,比较Language插值、分段线性插值、分段三次Hermie插值

山东师范大学数学科学学院实验报告x 0.1 0.5 1 1.5 2 2.5 3y 0.95 0.84 0.86 1.06 1.5 0.72 1.9y' 1 1.5 2 2.5 3 3.5 4求质点在时刻1.8时的速度,并画出插值多项式的图像。

1)运用Hermite插值法画出图像,如图4-1,并求质点在时刻1.8时的速度。

>>clear>>clc>>X=[0.1 0.5 1 1.5 2 2.5 3;0.95 0.84 0.86 1.06 1.5 0.72 1.9;1 1.5 2 2.5 3 3.5 4];>> x=0.1:0.01:3;>> H=Hermite1(X,x);>> plot(x,H)>> hold on>> plot(X(1,:),X(2,:),'r*')>> H1_8=Hermite(X,1.8);>> plot(1.8,H1_8,'go')>> legend('插值图像','原始点','目标点');图4-1二、验证高次插值的Runge现象问题分析和算法设计(一)Language插值代码function [Ln] =Lagrange(X,x)%请输入2*n+1矩阵X,X中第一行每个元素都是插值节点,X中第二行每个元素都是插值节点对应的函数值;%第二章P24例一拉格朗日插值n=size(X,2);d=0;for m=1:1:nif x==X(1,m);d=m;breakendend运行结果和总结 运行结果 例:给定函数55,11)(2≤≤-+=x xx f ; (1) 验证表2-10的误差结果(高次插值的Runge 现象);(2) 以0.1为步长分别进行Language 插值、分段线性插值、分段三次Hermite插值,画出三种插值函数以及f(x)的图像,比较三种插值结果。

实验二_拉格朗日插值龙格现象

实验二_拉格朗日插值龙格现象

汕 头 大 学 实 验 报 告学院: 工学院 系: 计算机系 专业: 计算机科学与技术 年级: 2010 姓名: 林金正 学号: 2010101032 完成实验时间: 5月24日一.实验名称:拉格朗日插值的龙格现象二.实验目的:通过matlab 处理,观察拉格朗日插值的龙格现象.三.实验内容:(1)学习matlab 的使用(2)以实验的方式,理解高阶插值的病态性,观察拉格朗日插值的龙格现象。

四.实验时间、地点,设备:实验时间:5月24日实验地点: 宿舍 实验设备:笔记本电脑五,实验任务在区间[-5,5]上取节点数n=11,等距离h=1的节点为插值点,对于函数25()1f x x =+进行拉格朗日插值,把f(x)与插值多项式的曲线花在同一张图上。

六.实验过程拉格朗日插值函数定义:对某个多项式函数,已知有给定的k + 1个取值点:其中对应著自变数的位置,而对应著函数在这个位置的取值。

假设任意两个不同的xj 都互不相同,那麼应用拉格朗日插值公式所得到的拉格朗日插值多项式为:其中每个为拉格朗日基本多项式(或称插值基函数),其表达式为:[3] 拉格朗日基本多项式的特点是在 上取值为1,在其它的点 上取值为0。

1.使用matlab,新建function.m 文件,使用老师所给代码,构建拉格朗日函数.%lagrange.mfunction y=lagrange(x0,y0,x)n=length(x0);m=length(x);for i=1:mz=x(i);s=0;for k=1:nL=1;for j=1:nif j~=kL=L*(z-x0(j))/(x0(k)-x0(j));endends=s+L*y0(k);endy(i)=s;endy;程序解释:(x0,y0):已知点坐标x:所求点的横坐标,y:由(x0,y0)所产生的插值函数,以x 为参数,所的到的值2.再一次新建function.m 文件.构建自定义函数: 25()1f x x=+ %f.mfunction y = f(x)y = 5/(1+x*x);end3.在脚本窗口中输入:>>a = [-10:0.2:10]>>for I = 1:length(a)b(i) = f(a(i))end ;%画出原函数(a,b)>>>>for i = 1:length( c)d(i) = f(c(i))end ;%获取插值坐标(c,d)>>e = [-5:0.2:5]>>z = largange(c,d,e);%获取插值坐标函数(e,z) >>plot(a,b,’r-‘,e,z);%画图过程及插图七:实验所得:这次实验是我初步学会Matlab的使用,学会新建function函数,在matlab命令窗口敲入一些基础的命令,同时更深刻地了解了拉格朗日插值的龙格现象。

数值分析实验报告-插值、三次样条

数值分析实验报告-插值、三次样条

实验报告:牛顿差值多项式&三次样条问题:在区间[-1,1]上分别取n=10、20用两组等距节点对龙格函数21()25f x x作多项式插值及三次样条插值,对每个n 值,分别画出插值函数及()f x 的图形。

实验目的:通过编程实现牛顿插值方法和三次样条方法,加深对多项式插值的理解。

应用所编程序解决实际算例。

实验要求:1. 认真分析问题,深刻理解相关理论知识并能熟练应用; 2. 编写相关程序并进行实验; 3. 调试程序,得到最终结果; 4. 分析解释实验结果; 5. 按照要求完成实验报告。

实验原理:详见《数值分析 第5版》第二章相关内容。

实验内容:(1)牛顿插值多项式1.1 当n=10时:在Matlab 下编写代码完成计算和画图。

结果如下:代码:clear allclcx1=-1:0.2:1;y1=1./(1+25.*x1.^2);n=length(x1);f=y1(:);for j=2:nfor i=n:-1:jf(i)=(f(i)-f(i-1))/(x1(i)-x1(i-j+1));endendsyms F x p;F(1)=1;p(1)=y1(1);for i=2:nF(i)=F(i-1)*(x-x1(i-1));p(i)=f(i)*F(i);endsyms PP=sum(p);P10=vpa(expand(P),5);x0=-1:0.001:1;y0=subs(P,x,x0);y2=subs(1/(1+25*x^2),x,x0);plot(x0,y0,x0,y2)grid onxlabel('x')ylabel('y')P10即我们所求的牛顿插值多项式,其结果为:P10(x)=-220.94*x^10+494.91*x^8-9.5065e-14*x^7-381.43*x^6-8.504e-14*x^5+123.36* x^4+2.0202e-14*x^3-16.855*x^2-6.6594e-16*x+1.0并且这里也能得到该牛顿插值多项式的在[-1,1]上的图形,并和原函数进行对比(见Fig.1)。

数值分析实验报告

数值分析实验报告

数值分析实验报告数值分析实验报告姓名:张献鹏学号:173511038专业:冶金工程班级:重冶二班目录1拉格朗日插值 (1)11.1问题背景.....................................................................................................11.2数学模型.....................................................................................................1.3计算方法1.....................................................................................................21.4数值分析.....................................................................................................2复化辛普森求积公式 (2)2.1问题背景2.....................................................................................................32.2数学模型.....................................................................................................32.3计算方法.....................................................................................................2.4数值分析5.....................................................................................................3矩阵的 LU 分解 (6)63.1问题背景.....................................................................................................3.2数学模型6.....................................................................................................3.2.1理论基础 (6)3.2.2实例 (7)73.3计算方法.....................................................................................................3.4小组元的误差 (8)4二分法求方程的根 (9)94.1问题背景.....................................................................................................94.2数学模型.....................................................................................................4.3计算方法9.....................................................................................................4.4二分法的收敛性 (11)5雅可比迭代求解方程组 (11)115.1问题背景...................................................................................................5.2数学模型11...................................................................................................5.2.1理论基础 (11)5.2.2实例 (12)5.3计算方法 (12)5.4收敛性分析 (13)6Romberg 求积法 (14)6.1问题背景 (14)6.2数学模型: (14)6.2.1理论基础 (14)6.2.2实例 (14)6.3计算方法 (15)6.4误差分析 (16)7幂法 (16)7.1问题背景 (16)7.2数学模型 (16)7.2.1理论基础 (16)7.2.2实例 (17)7.3计算方法 (17)7.4误差分析 (18)8改进欧拉法 (18)8.1问题背景 (18)8.2数学模型 (19)8.2.1理论基础 (19)8.2.2实例 (19)8.3数学模型 (19)8.4误差分析 (21)1拉格朗日插值1.1问题背景1f ( x)2, 5 x 5 求拉格朗日插值。

数值计算方法实验报告

数值计算方法实验报告

数值分析实验报告实验一、解线性方程组的直接方法——梯形电阻电路问题利用追赶法求解三对角方程组的方法,解决梯形电阻电路问题:电路中的各个电流{1i ,2i ,…,8i }须满足下列线性方程组:R V i i =- 22 210 252321=-+-i i i 0 252 432=-+-i i i 0 252 543=-+-i i i 0 252 654=-+-i i i 0 252 765=-+-i i i 0 252 876=-+-i i i 052 87=+-i i设V 220=V ,Ω=27R ,运用追赶法,求各段电路的电流量。

问题分析:上述方程组可用矩阵表示为:⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--------------00000001481.8522520000002520000002520000002520000002520000002520000002287654321i i i i i i i i问题转化为求解A x b =,8阶方阵A 满足顺序主子式(1,2...7)0i A i =≠,因此矩阵A存在唯一的Doolittle 分解,可以采用解三对角矩阵的追赶法!追赶法a=[0 -2 -2 -2 -2 -2 -2 -2]; b=[2 5 5 5 5 5 5 5];c=[-2 -2 -2 -2 -2 -2 -2 0]; d=[220/27 0 0 0 0 0 0 0];Matlab 程序function x= zhuiganfa( a,b,c,d )%追赶法实现要求:|b1|>|C1|>0,|bi|>=|ai|+|ci| n=length(b); u=ones(1,n); L=ones(1,n); y=ones(1,n); u(1)=b(1); y(1)=d(1); for i=2:nL(i)=a(i)/u(i-1);u(i)=b(i)-c(i-1)*L(i); y(i)=d(i)-y(i-1)*L(i); endx(n)=y(n)/u(n); for k=n-1:-1:1x(k)=(y(k)-c(k)*x(k+1))/u(k); end endMATLAB 命令窗口输入:a=[0 -2 -2 -2 -2 -2 -2 -2]; b=[2 5 5 5 5 5 5 5];c=[-2 -2 -2 -2 -2 -2 -2 0] d=[220/27 0 0 0 0 0 0 0];x= zhuiganfa(a,b,c,d )运行结果为:x =8.1478 4.0737 2.0365 1.0175 0.5073 0.2506 0.1194 0.0477存在问题根据电路分析中的所讲到的回路电流法,可以列出8个以回路电流为独立变量的方程,课本上给出的第八个回路电流方程存在问题,正确的应该是78240i i -+=;或者可以根据电路并联分流的知识,同样可以确定78240i i -+=。

计算方法 实验报告 拉格朗日 龙贝格 龙格库塔

计算方法 实验报告 拉格朗日 龙贝格  龙格库塔
agrange.c,romberg.c和runge.c三个子文件包含(#include)在了main.c中,所以,要查看运行结果,老师只需直接用win-tc打开main.c,运行即可。感谢使用!
主界面:
/*lagrange.c*/
float real_value(float x) /*由被插值函数计算真实值*/
c=getchar();
if(c=='N'||c=='n') break;
}
}
/*romberg.c*/
double function(double x) /*被积函数*/
{
return 4.0/(1+(x)*(x));
}
double t(double a,double b,int m) /*计算T1*/
实验二(龙贝格公式)
§公式
§算法描述
§流程图
§运行结果
§结果分析:Romberg积分法是在积分步长逐步折半的过程中,用低精度求积公式的组合得到更高精度求积公式的一种方法,它算法简单,且收敛加速效果极其显著。
实验三(四阶龙格库塔)
§公式
k1=h*f(xn,yn);
k2=h*f(xn+h/2,yn+k1/2);
T1=t(a,b,0);
T2=T1/2.0+t(a,b,1);
S1=(4*T2-T1)/3.0;
T1=T2;
T2=T1/2.0+t(a,b,2);
S2=(4*T2-T1)/3.0;
C1=(16*S2-S1)/15.0;
T1=T2;
T2=T1/2.0+t(a,b,3);
S1=S2;
S2=(4*T2-T1)/3.0;

《计算方法》实验报告材料

《计算方法》实验报告材料
double ChaShang(int n,vector<double>&X,vector<double>&Y);
double Newton(double x,vector<double>&X,vector<double>&Y);
int main(){
char a='n';
do{
int n;
cout<<"请输入插值点个数:"<<endl;
for(int i=0;i<N;i++){
X[i]=p;
Y[i]=1/(1+p*p);
p=p+c;
}
cout<<"请输入要求值x的值:"<<endl;
double x;
cin>>x;
double result=fenduan(N,X,Y,x,c);
cout<<"由分段线性插值法得出结果: "<<result<<endl;
cin>>n;
vector<double>X(n,0);
vector<double>Y(n,0);
cout<<"请输入插值点对应的值及函数值(Xi,Yi):"<<endl;
for(int i=0;i<n;i++){
cin>>X[i]>>Y[i];
}
cout<<"请输入要求值x的值:"<<endl;

龙格现象的发生、防止和插值效果的比较

龙格现象的发生、防止和插值效果的比较

深圳大学实验报告
实验课程名称:计算机数值方法
实验项目名称:龙格现象的发生、防止和插值效果的比较学院:计算机与软件专业:计算机科学与技术报告人:学号:班级:
指导教师:李炎然
实验时间:2010.7.1
实验报告提交时间:2010.7.10
教务处制
实验报告包含内容
一、实验要求
对区间[a,b]作等距划分:x i =a+ih,(i=0,…,n),h=(b-a)/n
对下列任一函数按给定方案进行插值,计算其在点u i= (x i+1+ x i)/2上的值,并给出插值函数的图形。

其中:
1) y = 1 / (1+x2),x∈ [-5,5]
2) y = x / (1+x) ; x∈ [-5,5]
方案I 分别取n=10,20作Lagrange(拉格朗日)插值
方案II 分别取n=10,20作分段线性插值
方案III分别取n=10,20作I型三次Spline(样条)插值
将计算结果参考表1的形式排列。

对照函数的准确值,观察同一方案、不同的n
的计算结果的变化状态,不同方案结果的精度比较,有无Runge(龙格)现象发生。

取6位小数计算。

表1
二、实验结果
y = 1 / (1+x2) n=10
y = 1 / (1+x2) n=20
n=10
n=20
三、实验结论
本次实验,我了解到为什么龙格现象会发生、如何防止龙格现象的以及不同插值方法效果的。

注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。

2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。

实验报告

实验报告

实验实验题一实验题1 水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的一个荒岛上,发现那里有一大堆椰子。

由于旅途的颠簸,大家都很疲倦,很快就入睡了。

第一个水手醒来后,把椰子平分成五堆,将多余的一只给了猴子,他私藏了一堆后便又去睡了。

第二、第三、第四、第五个水手也陆续起来,和第一个水手一样,把椰子分成五堆,恰好一只给猴子,私藏一堆,再去入睡。

天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一只再给猴子。

试问原来共有几只椰子?试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题。

实验题2 设,。

(1)从I0尽可能精确的近似值出发,利用递推公式:计算从I1到I20的近似值:(2)从I30较粗糙的估计值出发,用递推公式:计算从I1到I20的近似值:(3)分析所得结果的可靠性以及出现这种现象的原因。

实验题3 递推计算的稳定性计算积分其中a为参数,分别对a =0.05及a =15按下列两种方案计算,列出其可靠性进行分析比较,说明原因。

方案I 用递推公式递推初值可由积分直接得。

方案II 用递推公式根据估计式或取递推初值为或计算中取n =13开始。

实验课题4 三种求ln2的算法比较按下列三种方案构造逼近ln2的数列,用以求出ln2的近似值,要求精度。

观察和比较三种计算方案的收敛速度。

方案I 利用级数设则可取。

方案II 对方案I中的数据,按下列公式生成新数列。

称为数列的埃特金(Aitken)外推数列。

可以证明。

因此可取。

方案III 利用级数设则可取。

实验课题5 值的计算下面给出了三种求的近似值的计算方案,试比较它们的收敛速度和精度。

方案I 利用逼近单位圆半周长的方法。

单位圆半周长的值为,图1所示为一单位半圆,设为将半圆弧分成等份得以的角,其对应的弦线长度是。

则这样的弦线之和为(1-5)P n就是单位圆半周长的一个近似值由三角公式知(1-6)记,则由式(1-5),(1-6)可建立如下迭代公式(1-7)(1-8)则P n就是的逼近值。

数值分析实验报告-插值、三次样条

数值分析实验报告-插值、三次样条

实验报告:牛顿差值多项式&三次样条... . (1)问题:在区间[-1,1]上分别取n=10、20用两组等距节点对龙格函数f (x)---作多项式插25 x 2值及三次样条插值对每个n值,分别画出插值函数矽(x)的图形。

实验目的:通过编程实现牛顿插值方法和三次样条方法,加深对多项式插值的理解。

应用所编程序解决实际算例。

实验要求:1.认真分析问题,深刻理解相关理论知识并能熟练应用;2.编写相关程序并进行实验;3.调试程序,得到最终结果;4.分析解释实验结果;5.按照要求完成实验报告。

实验原理:详见《数值分析第5版》第二章相关容。

实验容:(1)牛顿插值多项式1.1 当 n=10 时:在Matlab下编写代码完成计算和画图。

结果如下:代码:clear allclcx1=-1:0.2:1;y1=1./(1+25.*x1.八2);n=length(x1);f=y1(:);for j=2:nfor i=n:-1:jf(i) = (f(i)-f(i-1))/(x1(i)-x1(i-j+1));endendsyms F x p;F(1)=1;p(1)=y1(1);for i=2:nF(i)=F(i-1)*(x-x1(i-1));p(i)=f(i)*F(i);endsyms PP=sum(p);P10=vpa(expand(P),5);x0=-1:0.001:1;y0=subs(P,x,x0);y2=subs(1/(1+25火x八2),x,x0);plot(x0,y0,x0,y2)grid onxlabel('x')ylabel('y')P10即我们所求的牛顿插值多项式,其结果为:P10(x )=-220.94*x A10+494.91*x A8-9.5065e-14*x A7-381.43*x A6-8.504e-14*x A5+123.36*x A4+2.0202e-14*x A3-16.855*x A2-6.6594e-16*x+1.0并且这里也能得到该牛顿插值多项式的在[-1,1]上的图形,并和原函数进行对比(见Fig.1)。

龙格现象

龙格现象

差值里的龙格现象实验临床八年1004张馨予2204100412 一.实验任务:由书上例子2.2和2.3表明适当的提高多项式的次数,有可能提高插值的精度,但是绝对不可能由此认为插值多项的次数越高越好。

此次试验的任务便是验证差值多项式里的龙格现象。

二.算法设计:对函数f(x)=1/(1+25*x*x),(-1<=x<=1).先以xi=-1+2/5i(i=0,1,2,…,5)为节点做五次插值多项式P5(x),再以xi=-1+1/5i(i=0,1,…,10)为节点做十次插值多项式P10(x),并将曲线f(x)=1/(1+25*x*x),y=P5(x),y=P10(x),在区间[-1,1]上,描绘在同一个坐标系。

程序设计,对于插值法,首先计算lagrange差值基本函数lk(x)。

再写出满足差值条件的n次插值多项式Ln(x)=yl(x)的总和。

三.计算机程序:1.求5个点对应y值的m文件function y=flongge2x=-1:0.4:1for i=1:length(x)y(i)=1/(1+25*x(i)*x(i));enddisp(y)2.求10个点对应y值的函数文件function y=flongge2x=-1:0.2:1for i=1:length(x)y(i)=1/(1+25*x(i)*x(i));enddisp(y)3. 差值里的龙格现象function f=Language(x,y,x0)syms t;if(length(x)==length(y))n=length(x);elsedisp('xand y are not of the same demision');return;endf=0.0;for(i=1:n)l=y(i);for(j=1:i-1)l=l*(t-x(j))/(x(i)-x(j));end;for(j=i+1:n)l=l*(t-x(j))/(x(i)-x(j));end;f=f+l;f=simplify(f);if(i==n)if(nargin==3)f=subs(f,'t',x0)elsef=collect(f);f=vpa(f,6);endendend并在命令编辑器里输入x y 矩阵,以及f=Language(x,y)4.龙格总图的m文件functiontu=longgezongtufplot('-220.940*t^10+494.907*t^8-381.433*t^6+123.360*t^4-16.8552*t^2+1.',[-1,1] ),holdon;fplot('1/(1+25*x*x)',[-1,1]), hold on;fplot('1.20199*t^4-1.73079*t^2+.567309',[-1,1],1e-4),grid四.调试以及运行结果1.在命令编辑器里输入flongge2,得到十个点的对应y值:(截的图)2.输入f,得到五个点对应的y值:3.在命令编辑器里输入x矩阵,和y矩阵,以及f=Language(x,y),就会得到对应的两个差值公式:y=-220.940*t^10+494.907*t^8-381.433*t^6+123.360*t^4-16.8552*t^2+1.y=1.20199*t^4-1.73079*t^2+.567309根据这两个公式编出可以输出图的程序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、a=1时,1)取n=4,作出f(x)和插值多项式的曲线图;
2)取n=10,作出f(x)和插值多项式的曲线图;
2、a=0.25时,1)取n=4,作出f(x)和插值多项式的曲线图;
2)取n=10,作出f(x)和插值多项式出什么结论?




拉格朗日插值的调用函数
y0=5./(1+x0.^2);
x=[-5:0.1:5];
y=lagrange(x0,y0,x);
y1=5./(1+x.^2);
plot(x,y,'--r')
holdon
plot(x,y1,'-b')
holdoff
2、a=0.25时,
1)取n=4
x0=[-5:2:5];
y0=5./(0.25*0.25+x0.^2);
数值计算实验报告(四)
实验名称:观察龙格(Runge)现象实验姓名班级:
学号:实验日期:周次:实验地点:




.观察拉格朗日插值的龙格(Runge)现象.




对于函数 进行拉格朗日插值,取不同的节点数n,在区间[-5,5]上取等距间隔的节点为插值点,把f(x)和插值多项式的曲线画在同一张图上进行比较。(a可以取任意值)具体步骤:
y1=5./(1+x.^2);
plot(x,y,'--r')
holdon
plot(x,y1,'-b')
holdoff






a=1时,
1)取n=4
a=1时,
2)取n=10
a=0.25时,
1)取n=4
a=0.25时,
2)取n=10
上述现象和定理告诉我们,并不是插值多项式的次数越高(即插值节点越多)精度越高,从数值计算上可解释为高次插值多项式的计算会带来舍入误差的增大,从而引起计算失真。因此,实际应用做插值时一般只用一次、二次最多用三次插值多项式。
functiony=lagrange(x0,y0,x)
n=length(x0);m=length(x);
fori=1:m
z=x(i);
L=0.0;
forj=1:n
T=1.0;
fork=1:n
ifk~=j
T=T*(z-x0(k))/(x0(j)-x0(k));
end
end
L=T*y0(j)+L;
end
那么如何提高插值精度呢?采用分段插值是一种办法。




y(i)=L;
end
a=1时,
1)取n=4
x0=[-5:2:5];
y0=5./(1+x0.^2);
x=[-5:0.1:5];
y=lagrange(x0,y0,x);
y1=5./(1+x.^2);
plot(x,y,'--r')
holdon
plot(x,y1,'-b')
holdoff
2)取n=10
x0=[-5:1:5];
x=[-5:0.1:5];
y=lagrange(x0,y0,x);
y1=5./(1+x.^2);
plot(x,y,'--r')
holdon
plot(x,y1,'-b')
holdoff
2)取n=10
x0=[-5:1:5];
y0=5./(0.25*0.25+x0.^2);
x=[-5:0.1:5];
y=lagrange(x0,y0,x);
相关文档
最新文档