1.已知下列数值表,求符合表值的插值多项式,并给出插值余项的表达式。
xi |
0 |
1 |
2 |
yi |
2 |
1 |
2 |
yi′ |
−2 |
−1 |
|
yi′′ |
−10 |
|
|
|
|
|
|
解:采用牛顿插值:
P2(x)=f(x0)+f[x0,x1](x−x0)+f[x0,x1,x2](x−x0)(x−x1)
=x2−2x+2
由题目条件可得符合该表的插值多项式可设为:
P5(x)=P2(x)+(ax2+bx+c)x(x−1)(x−2)
代入以下条件,有:
KaTeX parse error: Unknown column alignment: 1 at position 28: … \begin{array}{1̲} P…
我们可以得到:
P5(x)=4x5−15x4+17x3−5x2−2x+2
R(f)=6!f(6)(ξ)x3(x−1)2(x−2),式中ξ位于x0,x1x2和x所界定的范围内
扫描二维码关注公众号,回复:
11279906 查看本文章
解:
由给定条件,可确定不超过三次的插值多项式,其形式为:
P(x)=f(x0)+f[x0,x1](x−x0)+A(x−x0)(x−x1),代入P′(x1)=f′(x1),得
A=x0−x1f′(x0)−f[x0,x1]
代入P(x),得:
P(x)=−(x1−x0)2(x−x1)(x−2x0+x1)f(x0)+x0−x1(x−x0)(x−x1)f′(x0)+(x1−x0)2(x−x0)2f(x1)
为了求出余项R(x)=f(x)−P(x),设R(x)=f(x)−P(x)=k(x)(x−x0)2(x−x1),其中k(x)为待定常数
构造φ(t)=f(t)−P(t)−k(x)(t−x0)2(t−x1),∴φ(t)在(x0,x1)内有四个零点,根据罗尔定理结论,可得φ(3)(t)在(x0,x1)内至少有一个零点ξ,使得:
φ(3)(ξ)=f(3)(ξ)−3!k(x)=0
∴k(x)=6f(3)(ξ),R(x)=61(x−x0)2(x−x1)f(3)(ξ),x0<ξ<x1,证毕
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z4NG02Jk-1587562372068)(https://s1.ax1x.com/2020/04/21/J8zKTU.png)]
解:
法一:构造正交多项式φ0(x),φ1(x),φ2(x)求解
φ0(x)=1a0=(φ0,φ0)(f,φ0)=14.5a1=(φ0,φ0)(xφ0,φ0)=2.5φ1(x)=(x−a1)φ0(x)=x−2.5β1=(φ1(x),φ1(x))(φ1(x),φ1(x))φ2(x)=(x−a1)φ1(x)−β1φ0(x)=x2−5x+5a2=(φ1,φ1)(xφ1,φ1)=0.5
∴y=a0φ0(x)+a1φ1(x)+a2φ2(x)=21x2+1049x−23
法二:取ϕ=span(1,x,x2),求解线性方程组,也可得到相同答案,不再赘述
4.求f(x)=x4+3x3−1在区间[0,1]上的三次最佳一致逼近多项式
解:
做变换;x=2t+1,有:f(t)=161(1+t)4+83(t+1)3−1
由首项为1的切比雪夫多项式性质可得:
f(x)−P3(x)=161⋅81T4(t)
∴P3(x)=f(x)−1281T4(t)=5x3−45x2+41x−128129,x∈[0,1]
解:
由代数精度定义可知,分别令f(x)=1,x−x0,(x−x0)2,(x−x0)3,得:
KaTeX parse error: Unknown column alignment: 1 at position 28: … \begin{array}{1̲} A…
解得:
KaTeX parse error: Unknown column alignment: 1 at position 28: … \begin{array}{1̲} A…
同时有:
∫x0x1(x−x0)(x−x0)4dx=h2(0+Bh4)+h3(0+4h3D)
所以该数值积分具有三次代数精度,余项为:
R(f)=∫x0x14!f(4)(ξ)(x−x0)3(x−x1)2=f(4)(η)4!⋅60h2=1440h2f(4)(η),x∈[x0,x1],ξ∈(x0,x1),η∈(x0,x1)
6.
证明:
对于插值基函数,有li(xj)=δij
∴∫abρ(x)lk2(x)dx=∑i=0nAilk2(xi)=Ak
∑k=0n∫abρ(x)lk2(x)dx=∑k=0nAk=∫abρ(x)dx
7.用龙贝格方法计算∫0.30.8x3+xsinx,使其误差不超过0.1∗10−4:
解:编写Python程序:
import math
'''
给定一个函数,如:f(x)= x^(3/2),和积分上下限a,b,用机械求积Romberg公式求积分。
'''
import numpy as np
def func(x):
return x**2+math.sin(x)/x
class Romberg:
def __init__(self, integ_dowlimit, integ_uplimit):
'''
初始化积分上限integ_uplimit和积分下限integ_dowlimit
输入一个函数,输出函数在积分上下限的积分
'''
self.integ_uplimit = integ_uplimit
self.integ_dowlimit = integ_dowlimit
def calc(self):
'''
计算Richardson外推算法的四个序列
'''
t_seq1 = np.zeros(5, 'f')
s_seq2 = np.zeros(4, 'f')
c_seq3 = np.zeros(3, 'f')
r_seq4 = np.zeros(2, 'f')
hm = [(self.integ_uplimit - self.integ_dowlimit) / (2 ** i) for i in range(0,5)]
print(hm)
fa = func(self.integ_dowlimit)
fb = func(self.integ_uplimit)
t0 = (1 / 2) * (self.integ_uplimit - self.integ_dowlimit) * (fa+fb)
t_seq1[0] = t0
for i in range(1, 5):
sum = 0
for each in range(1, 2**i,2):
sum =sum + hm[i]*func( self.integ_dowlimit+each * hm[i])
temp1 = 1 / 2 * t_seq1[i - 1]
temp2 =sum
temp = temp1 + temp2
t_seq1[i] = temp
print('T序列:'+ str(list(t_seq1)))
s_seq2 = [round((4 * t_seq1[i + 1] - t_seq1[i]) / 3,6) for i in range(0, 4)]
print('S序列:' + str(list(s_seq2)))
c_seq3 = [round((4 ** 2 * s_seq2[i + 1] - s_seq2[i]) / (4 ** 2 - 1),6) for i in range(0, 3)]
print('C序列:' + str(list(c_seq3)))
r_seq4 = [round((4 ** 3 * c_seq3[i + 1] - c_seq3[i]) / (4 ** 3 - 1),6) for i in range(0, 2)]
print('R序列:' + str(list(r_seq4)))
r_seq5 = [round((4 ** 4 * r_seq4[i + 1] - r_seq4[i]) / (4 ** 4 - 1),6) for i in range(0, 1)]
print('A序列:' + str(list(r_seq5)))
return 'end'
rom = Romberg(0.3, 0.8)
print(rom.calc())
运行结果:
、
最终我们得到,∫0.30.8xx3+sinx=0.635258
- 1),6) for i in range(0, 1)]
print(‘A序列:’ + str(list(r_seq5)))
return ‘end’
rom = Romberg(0.3, 0.8)
print(rom.calc())
$运行结果:$
[外链图片转存中...(img-l6ySF4Lu-1587562372076)]、
$最终我们得到,\int_{0.3}^{0.8}\frac{x^3+sinx}{x}=0.635258$