插值法部分习题
- 格式:doc
- 大小:108.00 KB
- 文档页数:7
埃尔米特插值多项式练习题埃尔米特插值多项式练习题埃尔米特插值多项式是一种用于逼近函数的方法,它不仅可以通过给定的函数值来逼近函数的值,还可以通过给定的导数值来逼近函数的导数值。
在数值计算和插值问题中,埃尔米特插值多项式是一种非常有用的工具。
假设我们有一个函数f(x),我们想要通过给定的函数值和导数值来逼近这个函数。
埃尔米特插值多项式可以通过以下步骤来求解:1. 首先,我们需要确定插值点。
插值点是我们已知的函数值和导数值的点。
通常,我们选择一组等距的插值点,以便于计算。
2. 接下来,我们需要构建拉格朗日插值多项式。
拉格朗日插值多项式是通过给定的函数值来逼近函数的值的多项式。
它可以通过以下公式来计算:L(x) = Σ [ f(xi) * Li(x) ] (i=0 to n)其中,Li(x)是拉格朗日基函数,它可以通过以下公式来计算:Li(x) = Π [ (x - xj) / (xi - xj) ] (j=0 to n, j ≠ i)这样,我们就可以得到拉格朗日插值多项式L(x)。
3. 接下来,我们需要构建埃尔米特插值多项式。
埃尔米特插值多项式是通过给定的函数值和导数值来逼近函数的多项式。
它可以通过以下公式来计算:H(x) = Σ [ f(xi) * Hi(x) + f'(xi) * Hi'(x) ] (i=0 to n)其中,Hi(x)是埃尔米特基函数,它可以通过以下公式来计算:Hi(x) = [ 1 - 2 * (x - xi) * Li'(xi) ] * (Li(x))^2Hi'(x)是埃尔米特基函数的导数,它可以通过以下公式来计算:Hi'(x) = (x - xi) * (Li(x))^2这样,我们就可以得到埃尔米特插值多项式H(x)。
通过以上步骤,我们可以得到一个逼近函数f(x)的埃尔米特插值多项式H(x)。
这个多项式可以在给定的插值点上非常精确地逼近函数的值和导数值。
插值法例题计算过程
【实用版】
目录
1.插值法的概念和应用
2.插值法例题的解题步骤
3.插值法在财务管理中的应用
4.结论
正文
一、插值法的概念和应用
插值法是一种数学方法,通过已知的数据点来预测或计算未知数据点的值。
在财务管理中,插值法常用于计算资金时间价值、债券收益率和股票期权价格等。
插值法的主要优点是能够提高计算精度,弥补单纯使用线性插值法的不足。
二、插值法例题的解题步骤
以下是一个关于插值法计算的例题:
已知某项目的投资额为 100,000 元,预期收益分别为:当利率为 10% 时,收益为 12,176.5 元;当利率为 12% 时,收益为 116,530 元。
假设利率为 i 时,收益为 120,000 元,求 i 的值。
解:我们可以使用插值法来解决这个问题。
首先,根据题意列出方程:(i-12%)/(10%-12%) = (120,000-116,530)/(121,765-116,530)化简得:
(i-12%)/(-2%) = 3,465/4,930
解这个方程,得到 i 的值为 11.76%。
三、插值法在财务管理中的应用
在财务管理中,插值法常用于计算资金的时间价值、债券的收益率和股票期权的价格等。
例如,在计算债券的收益率时,我们可以通过已知的债券价格和到期收益来预测债券的收益率。
四、结论
总之,插值法是一种重要的数学方法,它在财务管理中有广泛的应用。
第四、五讲作业题参考答案一、填空题1、拉格朗日插值基函数在节点上的取值是( 0或1 )。
2、当1,1,2x =-,时()034f x =-,,,则()f x 的二次插值多项式为 (2527633x x +- )。
3、由下列数据所确定的唯一插值多项式的次数为( 2次 )。
4、根据插值的定义,函数()x f x e -=在[0,1]上的近似一次多项式1()P x =( 1(1)1e x --+ ),误差估计为( 18 )。
5、在做曲线拟合时,对于拟合函数x y ax b =+,引入变量变换y =( 1y),x =(1x)来线性化数据点后,做线性拟合y a bx =+。
6、在做曲线拟合时,对于拟合函数Ax y Ce =,引入变量变换( ln()Y y = )、X x =和B C e =来线性化数据点后,做线性拟合Y AX B =+。
7、设3()1f x x x =+-,则差商[0,1,2,3]f =( 1 )。
8、在做曲线拟合时,对于拟合函数()A f x Cx =,可使用变量变换(ln Y y =)(ln X x = )和B C e =来线性化数据点后,做线性拟合Y AX B =+。
9、设(1)1,(0)0,(1)1,(2)5,()f f f f f x -====则的三次牛顿插值多项式为( 321166x x x +-),其误差估计式为(4()(1)(1)(2),(1,2)24f x x x x ξξ+--∈-) 10、三次样条插值函数()S x 满足:()S x 在区间[,]a b 内二阶连续可导,(),,0,1,2,,,k k k k S x y x y k n ==(已知)且满足()S x 在每一个子区间1[,]k k x x +上是( 三次多项式 )。
11、1()[a,b]()f x L x =函数在上的一次(线性)插值函数(公式)( ()()x b x af a f b a b b a--+-- ),1()R x =( 1()()(),2f x a x b a b ξξ''--≤≤ )。
一、填空题:1. 满足()a a f x x =,()b b f x x =,()c c f x x =的拉格朗日插值余项为 。
答:()()()()()3!a b c f R x x x x x x x ξ'''=---2.已知函数()f x 的函数值()()()()()0,2,3,5,6f f f f f ,以及均差如下 ()()()()()00,0,24,0,2,35,0,2,3,51,0,2,3,5,60f f f f f ===== 那么由这些数据构造的牛顿插值多项式的最高次幂的系数是 答: 1二、选择题1. 通过点()()0011,,,x y x y 的拉格朗日插值基函数()()01,l x l x 满足( ) A .()00l x =0,()110l x = B . ()00l x =0,()111l x = C .()00l x =1,()110l x = D . ()00l x =1,()111l x = 答:D2.. 已知等距节点的插值型求积公式()()352kkk f x dx A f x =≈∑⎰,那么3kk A==∑( )A .1 B. 2 C. 3 D. 4 答:C3.过点(x 0,y 0), (x 1,y 1),…,(x 5,y 5)的插值多项式P(x)是( )次的多项式。
(A). 6 (B).5 (C).4 (D).3. 答:B 三、证明题1. 设 f (x) = (x-1) (x-2) .证明对任意的x 有: f [1, 2, x)]= 1证明:f [1, 2] = [f (1) – f (2)]/ (1 – 2) = [0 – 0]/ (-1) = 0, 对任意的x 有F[2, x] = [f (2) – f (x)]/ (2 – x) = [0 – (x-1) (x-2)]/ (2 – x) = (x-1),所以 f [1, 2, x] = [f (1, 2) - f (2, x)]/ (1 – x) = [0 - (x-1)]/ (1 – x) = 12.设在上具有二阶连续导数,且,求证:解:由,则在的线性插值多项式为:,于是由,可得:3. 试利用差分性质证明:证明:记:可以证明:, 又: 故:. 四、计算题: 1..已知数值表试用二次插值计算()0.57681f 的近似值,计算过程保留五位小数。
1、已知 f (x )=ln x 的数值表如下,分别用线性及二次 Lagrange 插值法计算f (0.54) 的近似值,并估计误差。
解:(1)线性插值法:因为()ln f x x = 时递增函数,所以取0.5和0.6为插值节点。
则线性插值多项式为:0011()()()()f x F x f l x f l x ==+0.540.60.540.5(0.54)(0.54)(0.5)(0.6)0.50.60.60.50.6930.6(0.510)0.40.6198f F f f --≈=+-- =-⨯+-⨯=-截断误差:101011()''()()(),(,)2R x f x x x x x x ξξ=--∈ 121(0.54)0.0012R ξ=11(0.5,0.6)110.0012(0.54)0.00120.360.25,0.0032(0.54)0.0048R R ξ∈∴⨯<<⨯<<即 (2)二次lagrange 插值法:A :若取0.4,0.5和0.6为插值点,0120.916,0.693,0.510f f f =-=-=-012(0.540.5)(0.540.6)0.12(0.40.5)(0.40.6)(0.540.4)(0.540.6)0.84(0.50.4)(0.50.6)(0.540.4)(0.540.5)0.28(0.60.4)(0.60.5)l l l --==-----==----==--001122(0.54)(0.54)(0.54)(0.54)(0.54)0.615f F f l f l f l ≈=++=-截断误差:20121()'''()()()()3!R x f x x x x x x ξ=---则231(0.54)0.000112R ξ=333233[0.4,0.6],()111,0.60.4110.000112(0.54)0.0001120.40.6f x R ξξ∈∴<<-⨯<<-⨯递增;即20.00175(0.54)0.000519R -<<-B :若取0.5,0.6和0.7为插值点,0120.693,0.510,0.357f f f =-=-=-012(0.540.6)(0.540.7)0.48(0.50.6)(0.50.7)(0.540.5)(0.540.7)0.64(0.60.5)(0.60.7)(0.540.5)(0.540.6)0.12(0.70.5)(0.70.6)l l l --==----==----==---001122(0.54)(0.54)(0.54)(0.54)(0.54)0.6162f F f l f l f l ≈=++=-截断误差:20121()'''()()()()3!R x f x x x x x x ξ=--- 则231(0.54)0.000128R ξ=333233[0.5,0.7],()111,0.70.5110.000128(0.54)0.0001280.70.5f x R ξξ∈∴<<⨯<<⨯递增;即20.000373(0.54)0.001024R <<2、已知f(x)=e -x 的一组数据见下表,用抛物插值法计算e -2.1的近似值。
第3章函数近似方法(习题及答案)§3.1插值法【3.1.1】已知sin()x 在030,45,60的值分别为1/2,分别用一次插值和二次插值求0sin(50)近似值。
【3.1.2】误差函数的数据表:x 0.460.470.480.49…f(x)0.48465550.49374520.50274980.5116683…利用二次插值计算:(1)(0.472)f ;(2)()0.5,?f x x ==【3.1.3】【3.1.4】已知列表函数x -101y-15-5-3给出二次插值函数【解】0(0)(1)1()(1)(10)(11)2x x l x x x --==-----;1(1)(1)()(1)(1)(01)(01)x x l x x x +-==--++-2(1)(0)1()(1)(11)(10)2x x l x x x +-==++-2153()(1)5(1)(1)(1)22L x x x x x x x =--+-+--【3.1.5】已知,3)9(,2)4(==f f 用线性插值计算)5(f ,并估计误差。
【解】取插值节点014, 9x x ==,两个插值基函数分别为)9(51)(1010--=--=x x x x x x l )4(51)(0101-=--=x x x x x x l 故有565)4(53)9(52)()()(11001+=-+--=+=x x x y x l y x l x L 2.25655)5()5(1=+=»L f 误差为)(2)95)(45(!2)()5(2x x f f R ¢¢-=--¢¢=【3.1.6】已知(1)2,(1)1,(2)1f f f -===,求()f x 的二次拉格郎日插值多项式【解】22(1)(2)(1)(2)(1)(1)()21(11)(12)(11)(12)(21)(21)1(38)6x x x x x x L x x x --+-+-=++----+-+-=-+【3.1.7】求经过(0,1),(1,2),(2,3)A B C 三点的二次拉格郎日插值多项式【解】22(1)(2)(0)(2)(0)(1)()123(01)(02)(10)(12)(20)(21)1(343)2x x x x x x L x x x ------=++------=-+【3.1.8】编写拉格朗日三点插值程序,绘出)cos(x y =在[p ,0]区间的插值曲线,将[p ,0]区间8等份(9个插值点),由插值函数取25个点绘出插值曲线。
财务管理插值法例题插值法在财务管理中有着广泛的应用,它可以帮助我们估计在某个特定区间内的未知数值。
插值法基于一个简单的理念:如果已知一个函数在几个点上的值,那么我们可以通过这些点之间的插值来估算该函数在其他点的值。
一、常见的插值方法1.线性插值:它是插值方法中最简单的一种,假设两个已知点之间的函数为直线,根据这个直线方程来估算未知点的值。
2.多项式插值:它假设函数在已知点之间存在一个多项式,通过这个多项式来估算未知点的值。
二、插值法在财务管理中的应用插值法在财务管理中有着广泛的应用,例如:1.估算违约风险:在债券或贷款的违约风险分析中,我们可以通过插值法来估算违约发生概率。
3.预测利率:在债券定价或货币时间价值计算中,我们可以通过插值法来预测未来的利率。
4.估算收益率:在投资项目的评估中,我们可以通过插值法来估算未来的收益率。
三、30道财务管理插值法例题与答案例题L某公司发行了一笔面值为IOoO元的债券,票面利率为5临债券期限为10年。
假设市场利率为蜴,请问该债券的发行价格应该是多少?答案:首先,我们可以使用插值法来计算债券的发行价格。
假设债券的发行价格为P,根据债券定价公式:PV=C∕(l+r)%,其中C为每年的利息支付,r为市场利率,t为债券期限。
已知050(因为票面利率为5%),r=4%(即0.04),t=10年,代入公式可得:PV=50∕(1+0.04)10和737.94元。
因此,该债券的发行价格应该是737.94元。
例题2:某公司预计未来三年的现金流分别为100万元、150万元和200万元,假设年利率为10%,请问未来三年的现金流现值分别是多少?答案:使用插值法计算现金流的现值。
已知现金流和利率,我们可以使用公式PV=C∕(l+r)飞来计算每个现金流的现值。
对于第一年的现金流,我们有C=100万元,r=10%(即0.1),t=l年,代入公式可得:PV=100/(1+0.1)Λ1^90.91万元;对于第二年的现金流,我们有C=150万元,r=10%,32年,代入公式可得:PV=150∕(l+0.1厂2七138.63万元;对于第三年的现金流,我们有0200万元,r=10%,t=3年,代入公式可得:PV=200∕(l+0.1厂3七223.6万元。
插值法计算公式例题插值法计算公式例题:插值法是一种用于估计数据集中缺失值的方法。
插值法可以通过已知的数据点来推断未知点的值。
这种方法可以应用于各种领域,如气象学、地理信息系统、图形学和金融等。
在插值法中,需要确定插值函数。
插值函数是一种通过已知数据点来估计未知点的函数。
插值函数的形式可以根据问题的具体情况而定,例如线性插值、多项式插值和样条插值等。
接下来,我们以多项式插值为例来计算公式。
多项式插值的原理是通过已知的数据点,构造一个n次多项式来拟合数据,然后用这个多项式估计未知点的值。
n 次多项式的形式为:f(x) = a0 + a1(x-x0) + a2(x-x0)(x-x1) + ... + an(x-x0)(x-x1)...(x-xn-1)其中,x0、x1、...、xn-1为已知数据点,f(x0)、f(x1)、...、f(xn-1)为对应的函数值,a0、a1、...、an为待求系数。
将已知数据点代入多项式中,可以得到一个包含n+1个未知数的方程组,通过解方程组即可求出多项式系数。
例如,已知数据点为(0,1)、(1,2)、(2,3),求x=1.5时的插值值。
根据多项式插值的原理,可以得到二次多项式:f(x) = a0 + a1(x-x0) + a2(x-x0)(x-x1)将已知数据点代入多项式中,得到以下三个方程:a0 = 1a0 + a1(1-0) + a2(1-0)(1-1) = 2a0 + a1(2-0) + a2(2-0)(2-1) = 3将方程组求解,可以得到a0=1、a1=1、a2=0.5,因此插值多项式为:f(x) = 1 + 1(x-0) + 0.5(x-0)(x-1)将x=1.5代入多项式中,得到插值值为2.25。
以上就是插值法计算公式例题的详细介绍。
插值拟合实验题1. Lagrange 插值取插值节点i x i 10,1,)=-= (i ,分别用1次、2次、3次、4次Lagrange 插值多项式逼近函数x f (x)3=,由此计算f(0.5),并比较对应的误差值。
2. Newton 插值拉格朗日插值多项式计算函数近似值,如果精度不满足要求需增加插值节点时,原来计算出来的数据均不能利用,必须重新计算。
为克服这一缺点,通常可用牛顿型插值。
牛顿型插值的优点是每增加一个节点,插值多项式只需增加一项。
用Newton 插值算法求解1中的插值问题。
3. 龙格现象的发生、防止和插值效果的比较插值多项式与被插函数逼近的程度同分点的数目及位置有关。
能不能说,分点越多,插值多项式对函数的逼近程度越好呢?答案是否定的。
20 世纪初,Runge 指出了多项式插值的缺点。
在区间[-5,5]上,对函数y=x/(1+x^4) 按给定方案进行插值。
并给出插值函数的图形。
方案I: 取节点i x 5ih(i 0,1,,n),h 10/n =-+== ,分别取n 1020=,作Lagrange 插值;并计算其在各划分小区间中点i x 5(i 1/2)h(i 0,1,,n 1)=-++=- 上的值;方案II: 取节点i 2i 1x 5co s (π)(i 0,1,,n ),2(n 1)+==+ 分别取 n 1020=,作Lagrange 插值,并计算其在点i x 5(i 1/2)h(i 0,1,,n 1)=-++=- 上的值;方案III :取节点i x 5ih(i 0,1,,n),h 10/n =-+== ,分别取n 1020=,作分段线性插值,并计算其在各划分小区间中点i x 5(i 1/2)h(i 0,1,,n 1)=-++=- 上的值。
4. 离散数据的最小二乘拟合下表给出了我国1949~1984年间的一些人口数据,分别按下述方案求最小二乘拟合函数及其偏差平方和Q ,并预测2013年的人口数。
三点二次插值法例1. 用三点二次插值法求解:3min ()21t t t ϕ=-+,精度210ε-=。
解:首先找出满足123()()()t t t ϕϕϕ><且123t t t <<的1t ,2t ,3t ; 易知,10t =,20t =,30t =; 第一次迭代:1()1t ϕ=,2()0t ϕ=,3()22t ϕ=,代入公式,得:0.625μ=, 由于()()20.0060t ϕμϕ=-<=, 并且20.375t με-=>,则继续迭代;这时迭代点:123t t t μ<<<且12()()()t t ϕϕμϕ><, 则令:110t t ==,20.625t μ==,321t t == 第二次迭代:()11t ϕ=,()20.006t ϕ=-,()30t ϕ=,代入公式,得:0.808μ=, 由于2()0.089()0.006t ϕμϕ=-<=-, 并且 20.183t με-=>,则继续迭代; 这时迭代点:123t t t μ<<<且23()()()t t ϕϕμϕ><,则令:120.625t t ==,20.808t μ==,331t t == 第三次迭代:()10.006t ϕ=-,()20.089t ϕ=-,()30t ϕ=,代入公式,得:0.815μ=,由于2()0.089()0.006t ϕμϕ=-==-, 并且 20.007t με-=<,则停止迭代, 输出近似最优解为0.815μ=或0.808μ=。
例2 用三点二次插值法求:30min ()32t t t t ϕ≥=-+的近似最优解(精确极小点*1t =),设已确定其初始搜索区间为[]0,3,取初始插值点02t =,终止误差0.05ε=。
解:1t =,22t =,33t =,第一次迭代:()12t ϕ=,()24t ϕ=,()320t ϕ=,代入公式,得:0.9μ=, 由于2()0.029()4t ϕμϕ=-<=, 并且 2 1.1t με-=>,则继续迭代;这时迭代点:123t t t μ<<<且12()()()t t ϕϕμϕ><, 则令:110t t ==,20.9t μ==,322t t == 第二次迭代:()12t ϕ=,()20.029t ϕ=,()34t ϕ=,代入公式,得:0.82759μ=, 由于2()0.08405()0.029t ϕμϕ=>=, 并且 20.07241t με-=>,则继续迭代; 这时迭代点:123t t t μ<<<且23()()()t t ϕμϕϕ><,则令:10.82759t μ==,220.9t t ==,332t t == 第三次迭代:()10.08405t ϕ=,()20.029t ϕ=,()34t ϕ=,代入公式,得:0.96577μ=, 由于2()0.00347()0.029t ϕμϕ=-<=, 并且 20.06577t με-=>,则继续迭代; 这时迭代点:123t t t μ<<<且23()()()t t ϕϕμϕ><, 则令:120.9t t ==,20.96577t μ==,332t t == 第三次迭代:()10.029t ϕ=,()20.00347t ϕ=,()34t ϕ=,代入公式,得:0.98308μ=, 由于2()0.00086()0.00347t ϕμϕ=<=, 并且 20.01731t με-=<,则停止迭代, 输出近似最优解为0.98308μ=。
插值法A题目1 :对Runge函数R(x) - 2在区间[-1,1]作下列插值逼近,并和1 25xR(x)的图像进行比较,并对结果进行分析。
(1)用等距节点X i -1 ih , h 0. 1,0 i 20,绘出它的20次Newton插值多项式的图像。
⑵用节点X i cos( 插值多项式的图像。
2i421 ),(i 0,1,2,,0),绘出它的20次Lagrange⑶用等距节点X i 的图像。
-1 ih , h 0. 1,0 i 20,绘出它的分段线性插值函数⑷用等距节点X i函数的图像。
-1 ih , h 0. 1,0 i 20,绘出它的三次自然样条插值程序及分析:(1)用等距节点X i -1 ih , h 0. 1,0 i 20,绘出它的20次Newton插值多项式的图像。
Matlab程序如下:%计算均差x=[-1:0.1:1];n=len gth(x);syms zfor i=1: ny(i)=1/(1+25*x(i)*x(i));endN=zeros( n,n);N(:,1)=y';for j=2: nfor k=j:n N(k,j)=(N(k,j-1)-N(k-1,j-1))/(x(k)-x(k-j+1)); endendfor t=1: nc(t)=N(t,t)end%构造插值多项式f=N(1,1);for k=2: na=1;for r=1:(k-1)a=a*(z_x(r));endf=f+N(k,k)*a;end%(乍图a=[-1:0.001:1];n=len gth(a);for i=1: nb(i)=1/(1+25*a(i)*a(i));endfx=subs(f,z,a);subplot(2,1,1);plot(a,b, 'k' ,a,fx, 'r');c=[-0.6:0.001:0.6];n=len gth(c);for i=1: nd(i)=1/(1+25*c(i)*c(i));endfx=subs(f,z,c);subplot(2,1,2);plot(c,d, 'k' ,c,fx, 'r');结果与分析:由下图可以看出,在区间卜0.6,0.6] 上,插值多项式可以很好的逼近被插值函数。
二次插值法例题二次插值法是插值方法中的一种,用于通过已知的数据点估计在两个已知数据点之间的未知数值。
二次插值法假设数据点之间的关系可以用二次函数来描述,然后通过已知的数据点来确定二次函数的参数,从而估计出未知点的数值。
以下是一个关于二次插值法的例题和相关参考内容。
【例题】已知一组数据点:(1, 3), (2, 6), (3, 11),利用二次插值法来估计在x = 1.5时的数值。
【参考内容】在这个例题中,我们需要使用二次插值法来估计在x = 1.5时的数值。
下面是解决这个问题的详细步骤:1. 计算差商表:首先,我们需要计算差商表,用来求解二次函数的参数。
差商表是一个按照数据点的顺序排列的表格,其中每一列代表一个数据点的y值和相应的差商。
差商的计算公式为:f[xi] = yif[xi, xi+1] = (f[xi+1] - f[xi]) / (xi+1 - xi)f[xi, xi+1, xi+2] = (f[xi+1, xi+2] - f[xi, xi+1]) / (xi+2 - xi)根据给定的数据点,我们可以计算出差商表如下:xi | yi | fi,fi+1 | fi,fi+1,fi+2------------------------------------------1 | 3 | 32 | 6 | 5 | 23 | 11 | 6 | 0.52. 构造二次函数:根据差商表的结果,我们可以构造一个二次函数来描述数据点之间的关系。
假设二次函数的表达式为:f(x) = ax^2 + bx + c根据差商表的结果,我们可以得到如下方程组:a(1^2) + b(1) + c = 3a(2^2) + b(2) + c = 6a(3^2) + b(3) + c = 113. 解方程组:通过解方程组,我们可以确定二次函数的参数a、b和c的值。
将方程组进行展开,然后整理,即可得到:a +b +c = 34a + 2b + c = 69a + 3b + c = 11解方程组得到:a = 1.5, b = -0.5, c = 14. 估计未知点的数值:通过确定了二次函数的参数,我们可以使用二次函数来估计未知点的数值。
20.(1)0000.1)25.0(S =',6868.0)53.0(S =' (2)0)53.0(S )25.0(S =''=''解:(1)在编辑窗口输入:>> x=[0.25,0.30,0.39,0.45,0.53];>> y=[0.5000,0.5477,0.6245,0.6708,0.7280]; >> dx0=1.0000;dxn=0.6868; >> s=csfit(x,y,dx0,dxn) s =1.8863 -1.0143 1.0000 0.5000 0.7952 -0.7314 0.9127 0.5477 0.6320 -0.5167 0.8004 0.6245 0.3151 -0.4029 0.7452 0.67085.0x x 0143.1x 8863.1S 231++-= ]3.0,25.0[x ∈ 5477.0x 9127.0x 7314.0x 7952.0S 232++-= ]39.0,3.0[x ∈6245.0x 8004.0x 5167.0x 632.0S 233++-= ]45.0,39.0[x ∈ 6708.0x 7452.0x 4029.0x 3151.0S 234++-= ]53.0,45.0[x ∈ (2)在编辑窗口输入:>> x=[0.25,0.30,0.39,0.45,0.53];>> y=[0.5000,0.5477,0.6245,0.6708,0.7280]; >> f=ThrSample2(x,y,0,0,0) f =1000000/729*(5477/5000*t-279327/1000000)*(t-39/100)^2+1000000/729*(108663/200000-1249/1000*t)*(t-3/10)^2+10000/81*(8310710142007177/9007199254740992*t-24932130426021531/90071992547409920)*(39/100-t)^2-10000/81*(140377307168768943/450359962737049600-3599418132532537/4503599627370496*t)*(t-3/10)^21试用4次牛顿插值多项式)x (P 4及三次样条函数)x (S (自然边界条件)对数据进行插值。
用图给出{(i x ,i y ),10,11,1,0i ,i 08.02.0x i =+=},)x (P 4及)x (S .解:(1)在编辑窗口输入: >> x=[0.2,0.4,0.6,0.8,1.0];>> y=[0.98,0.92,0.81,0.64,0.38]; >> N=newpoly(x,y) N =-0.5208 0.8333 -1.1042 0.1917 0.9800 由此可以得出牛顿插值多项式为:)x (P 4=98.0x 1917.0x 1042.1x 8333.0x 5208.0234++-+- >> S=ThrSample2(x,y,0,0,0)S =125*(46/25*t-69/125)*(t-3/5)^2+125*(567/500-81/50*t)*(t-2/5)^2+25*(-57/140*t+57/350)*(3/5-t)^2-25*(-81/200+27/40*t)*(t-2/5)^2/5)^2 (2)在编辑窗口输入:>> x=[0.2,0.28,0.4,0.6,0.8,1.0,1.08];>> y=[0.98 0.9596 0.92 0.81 0.64 0.38 0.2403]; >> cs=spline(x,[0 y 0]);xx=linspace(0.2,1.08,101); >> plot(x,y,'o',xx,ppval(cs,xx),'-'); >> x1=[0.2,0.28,0.4,0.6,0.8,1.0,1.08];>> y1=[0.98 0.9596 0.92 0.81 0.64 0.38 0.2403]; >> polyfit(x1,y1,4) ans =-0.4126 0.5487 -0.8475 0.1017 0.9893 >> plot(x,y,'o',xx,ppval(cs,xx),'-',x1,y1,'-.r'),grid0.20.30.40.50.60.70.80.91 1.1 1.2图2 P(x)和S(x)函数插值图.(1)用这9个点作8次多项式插值()xL8S x.(2)用三次样条(自然边界条件)程序求()解:在编辑窗口输入:>> x=[0 1 4 9 16 25 36 49 64];>> y=0:1:8;y=sqrt(x);>> x1=[0 1 4 9 16 25 36 49 64];y1=0:1:8;>> m=polyfit(x,y,8)Warning: Polynomial is badly conditioned. Remove repeated data pointsor try centering and scaling as described in HELP POL YFIT.> In polyfit at 81m =Columns 1 through 4-0.00000000032806 0.00000006712680 -0.00000542920942 0.00022297151886 Columns 5 through 8-0.00498070758014 0.06042943489173 -0.38141003716579 1.32574370075005 Column 9-0.00000000000311>> x1=0:1:64;>> y1=polyval(m,x1);>> x2=[0 1 4 9 16 25 36 49 64];>> y2=0:1:8;>> cs=spline(x,[0 y 0]);>> xx=linspace(0,64,101);>> plot(x,y,'o',xx,ppval(cs,xx),'-k',x1,y1,'--b',x,y,':r')010203040506070图3 Lagran插值与Spline插值的比较图从图中结果可以看出:在区间[0,64]上,三次样条插值更准确些;在区间[0,1]上,拉格朗日插值更准确些.附:各插值函数的Matlab实现:(1) csfit函数运行程序function S=csfit(x,y,dx0,dxn)n=length(x)-1;h=diff(x);d=diff(y)./h;a=h(2:n-1);b=2*(h(1:n-1)+h(2:n));c=h(2:n);u=6*diff(d);b(1)=b(1)-h(1)/2;u(1)=u(1)-3*(d(1)-dx0);b(n-1)=b(n-1)-h(n)/2;u(n-1)=u(n-1)-3*(dxn-d(n));for k=2:n-1temp=a(k-1)/b(k-1);b(k)=b(k)-temp*c(k-1);u(k)=u(k)-temp*u(k-1);endm(n)=u(n-1)/b(n-1);for k=n-2:-1:1m(k+1)=(u(k)-c(k)*m(k+2))/b(k);endm(1)=3*(d(1)-dx0)/h(1)-m(2)/2;m(n+1)=3*(dxn-d(n))/h(n)-m(n)/2;for k=0:n-1S(k+1,1)=(m(k+2)-m(k+1))/(6*h(k+1));S(k+1,2)=m(k+1)/2;S(k+1,3)=d(k+1)-h(k+1)*(2*m(k+1)+m(k+2))/6;S(k+1,4)=y(k+1);End(2)ThrSample2函数运行程序function [f,f0]=ThrSample2(x,y,y2_1,y2_N,x0) syms t;f=0.0;f0=0.0;if(length(x)==length(y))n=length(x);elsedisp();return;endor i=1:nfor i=1:nif(x(i)<=x0)&&(x(i+1)>=x0)index=i;break;endendfif(x(i)<=x0)&&(x(i+1)>=x0)index=i;return;endendA=diag(2*ones(1,n));A(1,2)=1;A(n,n-1)=1;u=zeros(n-2,1);lamda=zeros(n-1,1);for i=2:n-1u(i-1)=(x(i)-x(i-1))/(x(i+1)-x(i-1));lamda(i)=(x(i+1)-x(i))/(x(i+1)-x(i-1));c(i)=3*lamda(i)*(y(i)-y(i-1))/(x(i)-x(i-1))+3*u(i-1)*(y(i+1)-y(i))/(x(i+1)-x(i));A(i,i+1)=u(i-1);A(i,i-1)=lamda(i);endc(1)=3*(y(2)-y(1))/(x(2)-x(1))-(x(2)-x(1))*y2_1/2;c(n)=3*(y(n)-y(n-1))/(x(n)-x(n-1))-(x(n)-x(n-1))*y2_N/2;m=followup(A,c);h=x(i+1)-x(i);f=y(i)*(2*(t-x(i))+h)*(t-x(i+1))^2/h/h/h+y(i+1)*(2*(x(i+1)-t)+h)*(t-x(i))^2/h/h/h+m(i )*(t-x(i))*(x(i+1)-t)^2/h/h-m(i+1)*(x(i+1)-t)*(t-x(i))^2/h/h;f0=subs(f,'t',x0);%ThrSample2函数运行调用的函数:function x=followup(A,b)n=rank(A);for(i=1:n)if(A(i,i)==0)disp();return;endend;d=ones(n,1);a=ones(n-1,1);c=ones(n-1);for(i=1:n-1)a(i,1)=A(i+1,i);c(i,1)=A(i,i+1);d(i,1)=A(i,i);endd(n,1)=A(n,n);for(i=2:n)d(i,1)=d(i,1)-(a(i-1,1)/d(i-1,1))*c(i-1,1);b(i,1)=b(i,1)-(a(i-1,1)/d(i-1,1))*b(i-1,1);endx(n,1)=b(n,1)/d(n,1);for(i=(n-1):-1:1)x(i,1)=(b(i,1)-c(i,1)*x(i+1,1))/d(i,1);end(3) newpoly函数运行程序function[c,d]=newpoly(x,y)n=length(x);d(:,1)=y';for j=2:nfor k=j:nd(k,j)=(d(k,j-1)-d(k-1,j-1))/(x(k)-x(k-j+1)); endendc=d(n,n);for k=(n-1):-1:1c=conv(c,poly(x(k)));m=length(c);c(m)=c(m)+d(k,k);end(4) lagran函数运行程序function[c,l]=lagran(x,y)w=length(x);n=w-1;l=zeros(w,w);for k=1:n+1v=1;for j=1:n+1if k~=jv=conv(v,poly(x(j)))/(x(k)-x(j));endendl(k,:)=v;endc=y*l;。