Runge现象的研究
[ ] =a a0 , a1,, an T ∈ Rn+1
1
=V
1
x0 x1
x0n x1n
∈
R ( n +1)×( n +1)
1
xn
xnn
[ ] =y y0 , y1,, yn T ∈ Rn+1
DOI: 10.12677/aam.2019.88175
Received: August 6th, 2019; accepted: August 21st, 2019; published: August 28th, 2019
Abstract
Firstly, this paper explains the Runge phenomenon generated by high-order polynomial interpolation, and proves that the interpolation polynomial divergence is obtained by calculating the systematic error. Secondly, taking the Runge function, inverse trigonometric function and fractional function as examples, the interpolation polynomial of the function is obtained by using the equally spaced Newton interpolation, and then the interpolation residual function expression is obtained, and then the midpoint of adjacent two nodes is calculated. The error at the location determines that the above three functions have generated the Runge phenomenon. Thirdly, the three algorithms of Chebyshev node, piecewise linear interpolation and cubic spline interpolation are introduced and verified, which can avoid the Runge phenomenon. Finally, the approximation performance index is proposed, and based on the optimal polynomial construction coefficient and order double determination method, the algorithm has excellent function approximation effect while avoiding the Runge phenomenon.
( ) Rn
(x)
=f
( x) −
pn
(x)
=( n
∏ 1 n ) +1 ! j=0
x − x(jn)
f (n+1) (ξ )
DOI: 10.12677/aam.2019.88175
1503
应用数学进展
佘嘉博,谭艳祥
{ 值区间 [a,b] 中的插值节点,ξ
为 [a,b] 区间中一点。Runge
g
(
x
)
=
1
x + x4
Figure 3. Fractional function equidistant node Langrage interpolation 图 3. 分式函数等距节点 Langrage 插值
3. Runge 现象产生的原因
Runge 现象是由系统误差造成的。一般的插值余项公式为:
现象说的是,对
f
(x)
=
1 1+ x2
在区间 [−5,5] 上进行 n 次多项式插值,当 n → ∞ 时,pn ( x) 不趋近于 f ( x) 。更确切的说,当 x < xc ≈ 3.63
时,pn ( x) → f ( x) ,max Rn ( x) → 0 ,当 xc < x < 5 时,pn ( x) 不趋近于 f ( x) ,max Rn ( x) 不趋近于 0。
函数的逼近插值多项式。但是,当矩阵 V 的维数偏大时,求矩阵的逆将产生巨大的计算量。所以,为简
化计算,可通过 Lagrange 插值法构建插值多项式。设 Lagrange 插值的多项式为:
∑ pn ( x) =
( ) 0
k =0
yk
Ln,k
x
其中:
n
∏( x − xi )
i=0
( ) Ln,k
x
= i≠k n
文章引用: 佘嘉博, 谭艳祥. Runge 现象的研究[J]. 应用数学进展, 2019, 8(8): 1500-1510. DOI: 10.12677/aam.2019.88175
佘嘉博,谭艳祥
数产生了Runge现象。第三,介绍并验证了采用切比雪夫节点、分段线性插值和三次样条插值三个常用的 算法,能够避免上述函数产生Runge现象。最后,创新性地提出逼近性能指标,并基于最优多项式构造系 数与阶次双确定法,该算法在避免Runge现象的同时具有优异的函数逼近效果,且运行速度有极大提升。
yi )
xi
=−1 +
2i
n,
yi
=R ( xi
),i
=0,1, , n
其中 n 为插值多项式的阶次。则可构造逼近 Runge 函数的插值多项式,记为:
( ) pn
x=
an xn
+
an −1 x n −1
++
a0
其中 a ≠ 0 且满足 pn ( xi ) = yi 。为了确定其系数,从而确定式 pn ( x) ,首先定义系数列向量 a、插值输入
Open Access
1. 引言
在数值方法领域中,常常需要理由插值法对函数进行逼近,多项式插值法是常用的方法之一,不过, 对于某些函数而言,多项式插值法的逼近效果不佳,这是因为产生了 Runge 现象。Runge 现象是指,对 于 Runge 函数,在区间[-1,1]内,等距选取插值点并采用插值多项式进行逼近,逼近多项式在区间的两端 会产生振荡现象,且插值多项式的阶次越高,振荡现象就越明显,从而造成极大的逼近误差。因此,通 常认为,Runge 函数不能使用等距节点的高次多项式插值进行函数逼近。为良好地逼近 Runge 函数,解 决 Runge 现象,通常使用切比雪夫节点代替等距插值点(使逼近误差随插值多项式的阶次的增大而减少)、 分段线性插值和低次样条插值代替多项式插值、放弃个别点以及系数与阶次双确定法,避免龙格现象[1]。
∏( xk − xi )
i=0
i≠k
实际上,Lagrange 插值法所构建的多项式和通过公式 a = V −1 y 确定的多项式是相同的。不过这两种
构建的插值多项式在区间[−1,1]内都不能很好的逼近 Runge 函数。当阶次为 n 的 Lagrange 插值多项式逼
近 Runge 函数时,其效果如图所示。从图中可知,在区间两侧插值多项式曲线产生振荡十分明显,且这
z)
dξ
其中 CT
是区域
T
的边界,区域
T
应满足
f
在
T
中解析且所有插值节点都在
T
中。(注意, f
(x)
1 = 1+ x2
的
奇点为 ±i 故区域不能包含 ±i 。)
化简,得到
f
(n)
(ξ
)
=
1 2πi
∫
C
wn wn
(z) (ξ )
f ξ
(ξ )
−z
dξ
所以现在的关键就是通过分析函数 wn ( z ) 在 n → ∞ 时的性态,选择一个围道,来估计积分的值。 wn ( z ) = rn 的图像如图 4。
Advances in Applied Mathematics 应用数学进展, 2019, 8(8), 1500-1510 Published Online August 2019 in Hans. /journal/aam https:///10.12677/aam.2019.88175
1501
应用数学进展
佘嘉博,谭艳祥
根据以上定义,由式可得方程Va = y 。由于矩阵 V 的行列式不为零,即矩阵 V 可逆,该方程有惟一解
[2]:
a = V −1 y
其中上标−1 表示的是矩阵的逆。通过公式 a = V −1 y 可确定系数列向量 a,即式 pn ( x) ,进而构造出 Runge
2. 分析 Runge 现象
20 世纪初,数学家龙格指出,对于连续函数:
R
(
x
)
=
1
+
1 25
x
2
在区间[−1,1]内,不应采用基于等距节点的高次插值多项式对该函数进行逼近。在本文中,称式上式
为 Runge 函数。为更好地解释 Runge 现象,在区间[−1,1]内取 n +1 个等距插值节点
{ } ( xi ,
种振荡随插值多项式阶次增加而变得严重,这种现象被称为 Runge 现象。具体如图 1~3 所示[3]。
R
(
x
)
=
1
+
大学物理 塞曼效应实验
实验 七 塞曼效应实验英国物理学家法拉第(M .Faraday)在1862年做了他最后的一个实验,即研究磁场对光源的影响的实验。
当时由于磁场不强,分光仪器的分辨率也不大,所以没有观测到在磁场作用下光源所发出的光的变化。
34年后,1896年荷兰物理学家塞曼(P .Zeeman)在莱顿大学重做这个实验,他在电磁铁的磁极间将食盐(NaCl)放入火焰中燃烧发出的钠光,用3米凹面光栅(473条/毫米)摄谱仪去观察钠的两条黄线。
他发现在磁场的作用下,谱线变宽(如果磁场再强些或摄谱仪的分辨率再高些,就能看到谱线分裂),这一现象称为塞曼效应。
当时原子结构的量子理论尚未产生,洛仑兹用经典的电子理论对这一现象进行了理论计算,得出所谓正常塞曼效应的结果,即当光源在外磁场的作用下,一条谱线将分裂成三条(垂直于磁场方向观察)和二条(平行于磁场方向观察)偏振化的分谱线。
当实验条件进一步改善以后,发现多数光谱线并不遵从正常塞曼效应的规律,而具有更为复杂的塞曼分裂。
这现象在以后的30年间一直困扰着物理学界,从而被称为反常塞曼效应。
1925年乌仑贝克和古兹米特为了解释反常塞曼效应和光谱线的双线结构,提出了电子自旋的假设。
应用这一假设能很好地解释反常塞曼效应。
也可以说:反常塞曼效应是电子自旋假设的有力根据之一。
普列斯顿(Preston)对塞曼效应实验的结果进行了深入研究,1898年发表了普列斯顿定则。
即同一类型的线系,具有相同的塞曼分裂。
龙格(Runge)和帕邢(Paschen)也进行了大量的实验研究,1907年发表了龙格定则。
即将所有塞曼分裂的图象,都可用正常塞曼效应所分裂的大小(做为一个洛仑兹单位)的有理分数来表示(见附注一)从他归纳钩结果中可以一目了然地看到所有塞曼分裂的图象和规律。
综上所述。
反常塞曼效应的研究推动了量子理论的发展和实验手段的进步,近年来在原子吸收光谱分析中用它来扣除背景,以提高分析的精度。
该实验证实了原子具有磁矩、自旋磁矩和空间量子化,迄今仍是研究原子能级结构的重要手段之一。
计算方法 1.3 分段线性插值
x x x x i 1 i ˆ S ( x ) y y , x x x 1 i i 1 i i 1 x x x x i i 1 i 1 i 于是, S1 ( x ) 是在 [ a , b ] 上是连续函数。
x [xj , xj ] 1 x [xj, xj 1] 其他
2)在插值节点 x 0 上,插值基为:
2 ( x x ) l ( x ) x [ x ,x ] 0 0 0 1 B ( x ) 0 0 其他 3)在插值节点 x n 上,插值基为:
2 ( x x ) l ( x ) n n B ( x ) n 0
1
左,右连接起来!
x
j1
xj
x
j1
2 2 H ( x ) 1 2 l ( x ) l ( x ) y 1 2 l ( x ) l ( x ) y 3 j 1 j j j j 1 j 1 2 2 ( x x ) l ( x ) y ( x x ) l ( x ) y j j j j 1j 1 j 1
k axb
提示:类似于前面的误差估计。 几点说明:
1)只要节点间距充分小,插值法总能获得所要求的精度。 2)局部性。如果修改某个数据,则插值曲线仅在某个局部范围内受影响。
插值节点 x 上,取值为 0 .即 k,k j 1 lj (x k ) 0 k j k j
2 )在每个小区间 [x 上,插值基 lj (x )都是线性函数 . i, x i 1]
基于以上两方面,我们观察
1
右 左
x
j1
参数三次埃尔米特插值实例分析
2
公式推导
参数三次曲线,简称 PC 曲线,表示为: ������(t) = ������0 + ������1 t + ������2 ������ 2 + ������3 ������ 3 , ������ ∈ [0,1] 确定四个系数矢量的方法是给定曲线两端点及其切矢。 对函数中参数 t 求导,得: ������������ ������′ (������) = = ������1 + 2������2 ������ + 3������3 ������ 2 ������������ 用������ = 0,1代入以上两式,得: ������0 = ������(0) ������0 + ������1 + ������2 + ������3 = ������(1) ������1 = ������′ (0) ������1 + 2������2 + 3������3 = ������′ (1) 写成矩阵形式: ������(0) 1 0 0 0 ������0 ������ ������(1) 1 1 1 1 1 [ ] [������ ] = ′ ������ (0) 0 1 0 0 2 ������ 0 1 2 3 3 [������′ (1)] 于是可得: ������0 1 0 0 0 ������(0) ������1 0 0 1 0 ������(1) [������ ] = [ ] 2 −3 3 −2 −1 ������′ (0) ������3 2 −2 1 1 [������′ (1)] 将上式代入函数方程,得: 1 0 0 0 ������(0) 0 0 1 0 ������(1) ������(t) = [1 ������ ������ 2 ������ 3 ] [ ] −3 3 −2 −1 ������′ (0) 2 −2 1 1 [������′ (1)] 上式即与标量形式的三次埃尔米特插值相对应的参数形式,即定义在区间������ ∈ [0,1]
计算方法大作业1 克服Runge现象
x3
x2
x
1
S1 ( x)
-0.34685
0.2086
0.073964
0.038462
S2 (x)
S (xi 0 ) S x(i 0 )
S
'
(xi
0) S
xi' (
0 )i
S
'
'
x(i
0)S
xi' ' (
0)
1 ,n2, . . . , 1
(1)
这里共有了 3n-3 个条件,再加上条件(2)中的 n+1 个插值条件,共有 4n-2 个条件,
因此还需要 2 个方程才能确定 S (x) .通常可在区间[a, b]的端点 a x0,b xn 上各加一个边
dn1
1
2
Mn
dn
(6)
2 1
2
2
2
1 M1 d1
M2
d2
n 1
2
n
1
M
n
1
dn1
n
n 2 M n dn
由式(1)内点拼接条件,可得
i M i1 2M i i M i1 d j i 1, 2,..., n 1
(3) (4)
其中
i
hi 1 hi1
, hi
i
hi hi 1
数值分析Runge现象计算实验
数值分析实验报告(02)一、实验目的通过上机绘制Runge 函数图像,理解高次插值的病态性质。
二、实验内容在区间[-1,1]上分别取n=10,n=20用两组等距节点对龙格(Runge)函数21()125f x x =+作多项式插值,对每个n 值分别画出()f x 和插值函数的图形。
三、编程思路(相关背景知识、算法步骤、流程图、伪代码)四、程序代码(Matlab 或C 语言的程序代码)function yt=Untitled8(x,y,xt)%UNTITLED5 ´Ë´¦ÏÔʾÓйش˺¯ÊýµÄÕªÒª% ´Ë´¦ÏÔʾÏêϸ˵Ã÷n=length(x);ny=length(y);if n~=nyerror('²åÖµ½ÚµãxÓ뺯ÊýÖµy²»Ò»ÖÂ');endm=length(xt);yt=zeros(1,m);for k=1:nlk=ones(1,m);for j=1:nif j~=klk=lk.*(xt-x(j))/(x(k)-x(j));endend ;yt=yt+y(k)*lk;endn=input('n=');x=linspace(-1,1,n);y=1./(1+25.*x.^2);xf=linspace(-1,1,100);yf=1./(1+25.*xf.^2)xl=xf;yl=Untitled8(x,y,xf);plot(xf,yf,'-b',xl,yl,'-r')五、数值结果及分析(数值运行结果及对结果的分析)当n=10时当n=20六、实验体会(计算中出现的问题,解决方法,实验体会)出现符号错误,代码函数变量不明重新输入,查询错误,找到并改正编码需要认真仔细,一定要头脑清晰,避免出现一些低级错误。
数值分析实验报告--实验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),即插值效果越来越好。
数值分析实验报告--Runge现象的产生和克服
数值分析实验报告(四)题目:Runge现象的产生和克服学院:机电工程学院(二专业)专业:机械设计制造及其自动化班级:1008108班姓名:***学号:**********号Runge现象的产生和克服摘要:对于多项式插值运算,随着插值阶数的逐渐增多,如果带入离散点过于密集,使得定义域中的“边缘区域”,没有有效的点,将导致插值函数的边缘区域大幅度的偏离函数的真值,该现象称之为“Runge现象”。
0 前言(目的与意义):了解Runge现象,体会插值运算的不准确性,以及其差值带来的误差甚至是错误。
1 数学背景:插值运算的误差公式:|w n (x)||R n (x)|<M n+1(n+1)!M n+1=max{f(n+1)(x i)}于是,如果函数的n+1阶导数一旦很大,则会出现函数的误差很大的情况。
2 程序及代码:(1)lagrange多项式插值函数syms f x p dp lx L;f=1/(1+25*x^2);N=input('请输入插值节点数N=');xx=-1:2/N:1;p=1; L=0;ff=zeros(1,length(xx));for i=1:(N+1)x=xx(i);ff(i)=eval(f);syms x;p=p*(x-xx(i));enddp=diff(p);for j=1:(N+1)x=xx(j);k=eval(dp);syms x;lx=p/((x-xx(j))*k);L=L+lx*ff(j);endaa=[-0.96:0.1:-0.06,0,0.06:0.1:0.96];for i=1:length(aa)x=aa(i);S(i)=eval(L);fff(i)=eval(f);ende=0;for i=1:length(aa)e=e+(S(i)-fff(i))^2;ende=sqrt(e/(20*21));fprintf('插值偏差为e=%.6f\n',e)ezplot(f,[-1,1])hold onezplot(L,[-1,1])hold onplot(xx,ff,'*')hold onplot(aa,S,'o')hold off(2)分段线性插值函数syms f x p lx;f=1/(1+25*x^2);N=input('请输入插值节点数N=');xx=-1:2/N:1;p=1; L=0;ff=zeros(1,length(xx));for i=1:(N+1)x=xx(i);ff(i)=eval(f);endsyms xfor i=1:Nfor j=1:(N+1)if j==ilx(i,j)=(x-xx(i+1))/(xx(i)-xx(i+1)); else if j==i+1lx(i,j)=(x-xx(i))/(xx(i+1)-xx(i)); elselx(i,j)=0;endendendendp=lx*ff';aa=[-0.96:0.1:-0.06,0,0.06:0.1:0.96];for i=1:length(aa)x=aa(i);for j=1:N+1if x<xx(j)breakendendS(i)=eval(p(j-1));fff(i)=eval(f);ende=0;for i=1:length(aa)e=e+(S(i)-fff(i))^2;ende=sqrt(e/(20*21));fprintf('插值偏差为e=%.6f\n',e)ezplot(f,[-1,1])hold onxxx=(-1:0.01:1);for i=1:length(xxx)x=xxx(i);for j=1:N+1if x<xx(j)breakendendSS(i)=eval(p(j-1));endplot(xxx,SS,'r')hold onplot(xx,ff,'*')hold onplot(aa,S,'o')hold off(3):三转角插值法函数syms f x df s s1 s2 s3 s4;f=1/(1+25*x^2);df=diff(f);N=input('请输入插值节点数N=');h=2/N;xx=-1:2/N:1;p=1; L=0;ff=zeros(1,length(xx));for i=1:(N+1)x=xx(i);ff(i)=eval(f);dff(i)=eval(df);endsyms xfor i=1:Ns1=(x-xx(i+1))^2*(h+2*(x-xx(i)))*ff(i)/h^3; s2=(x-xx(i))^2*(h+2*(xx(i+1)-x))*ff(i+1)/h^3; s3=(x-xx(i+1))^2*(x-xx(i))*dff(i)/h^2;s4=(x-xx(i))^2*(x-xx(i+1))*dff(i+1)/h^2;s(i)=s1+s2+s3+s4;endaa=[-0.96:0.1:-0.06,0,0.06:0.1:0.96]; for i=1:length(aa)x=aa(i);for j=1:N+1if x<xx(j)breakendendS(i)=eval(s(j-1));fff(i)=eval(f);ende=0;for i=1:length(aa)e=e+(S(i)-fff(i))^2;ende=sqrt(e/(20*21));fprintf('插值偏差为e=%.6f\n',e) ezplot(f,[-1,1])hold onxxx=(-1:0.01:1);for i=1:length(xxx)x=xxx(i);for j=1:N+1if x<xx(j)breakendendSS(i)=eval(s(j-1));endplot(xxx,SS,'r')hold onplot(xx,ff,'*')hold onplot(aa,S,'o')hold off(4).三弯矩插值法函数:syms f x ddf s;f=1/(1+25*x^2);ddf=diff(diff(f));N=input('请输入插值节点数N=');h=2/N;xx=-1:2/N:1;p=1; L=0;ff=zeros(1,length(xx));for i=1:(N+1)x=xx(i);ff(i)=eval(f);ddff(i)=eval(ddf);endsyms xfor i=1:NA=(ff(i+1)-ff(i))/h-h*(ddff(i+1)-ddff(i))/6;B=ff(i)-h^2*ddff(i)/6;s(i)=(xx(i+1)-x)^3*ddff(i)/(6*h)+(x-xx(i))^3*ddff(i+1)/(6*h)+A*(x-xx(i))+B; endaa=[-0.96:0.1:-0.06,0,0.06:0.1:0.96];for i=1:length(aa)x=aa(i);for j=1:N+1if x<xx(j)breakendendS(i)=eval(s(j-1));fff(i)=eval(f);ende=0;for i=1:length(aa)e=e+(S(i)-fff(i))^2;ende=sqrt(e/(20*21));fprintf('插值偏差为e=%.6f\n',e)ezplot(f,[-1,1])hold onxxx=(-1:0.01:1);for i=1:length(xxx)x=xxx(i);for j=1:N+1if x<xx(j)breakendendSS(i)=eval(s(j-1));endplot(xxx,SS,'r')hold onplot(xx,ff,'*')hold onplot(aa,S,'o')hold off3 总结与评价:函数的Runge现象可以通过三转角插值和三弯矩插值来解决,而且对于三转角和三弯矩插值来说,带入的数据越多,其插值效果越好4 实验结果:图1:观察Runge现象图2:分段线性插值图3:三转角插值:图4:三弯矩插值:。
分段线性插值法
《数值分析》实验报告实验序号:实验五 实验名称: 分段线性插值法1、 实验目的:随着插值节点的增加,插值多项式的插值多项式的次数也增加,而对于高次的插值容易带来剧烈的震荡,带来数值的不稳定(Runge 现象)。
为了既要增加插值的节点,减小插值的区间,以便更好的逼近插值函数,又要不增加插值多项式的次数以减少误差,可采用分段线性插值。
2、 实验内容:求一个函数ϕ(x )用来近似函数f (x ),用分段线性插值的方法来求解近似函数ϕ(x )并画出近似函数图像及原函数图像。
设在区间[a,b]上,给定n+1个插值节点b x x x x a n =<<<<=...210和相应的函数值n y y y ,...,,10,求一个插值函数)(x ϕ,满足以下条件:(1)),...,2,1,0()(n j y x j j ==ϕ; (2) )(x ϕ在每一个小区间[1,+j j x x ]上是线性函数。
对于给定函数11-,2511)(2≤≤+=x x x f 。
在区间[]11-,上画出f (x )和分段线性插值函数)(x ϕ的函数图像。
1. 分段线性插值的算法思想:分段线性插值需要在每个插值节点上构造分段线性插值基函数)(x l j ,然后再作它们的线性组合。
分段线性插值基函数的特点是在对应的插值节点上函数值取 1,其它节点上函数值取0。
插值基函数如下:⎪⎩⎪⎨⎧≤≤--=其它 ,0,)(101010x x x x x x x x l ⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧≤<--≤≤--=+++---其它 ,0,,)(111111j j j j j j j j j j j x x x x x x x x x x x x x x x l⎪⎩⎪⎨⎧≤≤--=---其它 ,0,)(111n n n n n n x x x x x x x x l 设在节点a ≤x0<x1<…≤b=f(xi),(i=0,1,2,…,n)求折线函数L (x )满足:(1) L(x)∈C[a,b](2) L(x[i]=y[i])(3) L(x)在每个小区间(x[i],x[i+1])上是线性插值函数¢(x )叫做区间[a,b]上对数据(x[j],y[j])(j=0,1,2,…,n)的分段区间函数。
第4节 分段插值多项式
L10 ( x )
从图中可见,在 x=0 附近 L10(x) 对 f(x) 有较好的近 似,而点x 距零点越远,近似效果越差,以至于完全失 真。实际上,当n→∞ 时,在|x|<0.36…. 范围内, L10(x) 收敛于f(x),而在这个区间外, L10(x) 是不收敛的。这个现 象被称为Runge(龙格)现象。 Runge现象表明,为减小近似误差,盲目地提高插 值多项式次数是不可取的,实际上,很少采用高于7次 的插值多项式。因此,只能通过缩小插值区间的办法 达到减小误差的目的,这就是下面要讨论的低次分段 插值多项式。
若记 M max M i ,h max hi , 则对任一 x ∈[a,b] 都有
1 i n
1 i n
R( x ) f ( x ) S ( x ) max Ri ( x )
1 i n
1 2 M 2 max M i max hi h 1 i n 8 1 i n 8
则在小区间[x i-1 , xi ] 上有四个插值条件: yi-1=f(xi-1), yi=f (xi) ,
y ’i-1=f ’(xi-1), yi’=f ’(xi) , 故能构造一个三次多项式 Hi(x) 并称其为三次埃尔米 特(Hermite)插值多项式。
这时,在整个[a,b]上可以用分段三次Hermite插值多项 式来逼近f(x) 。
S i ( x ) y i 1
f ( i ) ( x xi 1 )( x xi ) 误差为: Ri ( x ) f ( x ) S i ( x ) 2!
x xi x x i 1 yi , x i 1 x i x i x i 1
非线性方程求解数值分析上机实验报告
实验报告一题目:非线性方程求解摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。
本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。
前言:(目的和意义)掌握二分法与Newton法的基本原理和应用。
数学原理:对于一个非线性方程的数值解法很多。
在此介绍两种最常见的方法:二分法和Newton 法。
对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b)<0,且f(x)在[a,b]内仅有一个实根x*,取区间中点c,若,则c恰为其根,否则根据f(a)f(c)<0是否成立判断根在区间[a,c]和[c,b]中的哪一个,从而得出新区间,仍称为[a,b]。
重复运行计算,直至满足精度为止。
这就是二分法的计算思想。
Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式产生逼近解x*的迭代数列{x k},这就是Newton法的思想。
当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。
另外,若将该迭代公式改进为其中r为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。
程序设计:本实验采用Matlab的M文件编写。
其中待求解的方程写成function的方式,如下function y=f(x);y=-x*x-sin(x);写成如上形式即可,下面给出主程序。
二分法源程序:clear%%%给定求解区间b=1.5;a=0;%%%误差R=1;k=0;%迭代次数初值while (R>5e-6) ;c=(a+b)/2;if f12(a)*f12(c)>0;a=c;elseb=c;endR=b-a;%求出误差k=k+1;endx=c%给出解Newton法及改进的Newton法源程序:clear%%%% 输入函数f=input('请输入需要求解函数>>','s')%%%求解f(x)的导数df=diff(f);%%%改进常数或重根数miu=2;%%%初始值x0x0=input('input initial value x0>>');k=0;%迭代次数max=100;%最大迭代次数R=eval(subs(f,'x0','x'));%求解f(x0),以确定初值x0时否就是解while (abs(R)>1e-8)x1=x0-miu*eval(subs(f,'x0','x'))/eval(subs(df,'x0','x'));R=x1-x0;x0=x1;k=k+1;if (eval(subs(f,'x0','x'))<1e-10);breakendif k>max;%如果迭代次数大于给定值,认为迭代不收敛,重新输入初值ss=input('maybe result is error,choose a new x0,y/n?>>','s');if strcmp(ss,'y')x0=input('input initial value x0>>');k=0;elsebreakendendendk;%给出迭代次数x=x0;%给出解结果分析和讨论:1.用二分法计算方程在[1,2]内的根。
