题 7.1
精确值为:
f′(x)=−(1+x)32
从而:
f′(0.5)=−2716≈−0.5925926
取步长 h=0.1 得函数表:
| xi | 0.4 | 0.5 | 0.6 |
|---|
| f(xi) | 4925 | 94 | 6425 |
向前差商
f′(0.5)≈0.1f(0.6)−f(0.5)=−288155≈−0.5381944
截断误差为:
e1(h)=−2hf′′(ξ)
其中 h=0.1,ξ∈(0.5,0.6),f′′(x)=(1+x)46,故:
e1(h)=−10(1+ξ)43∈[−0.0593,−0.0458]
向后差商
f′(0.5)≈0.1f(0.5)−f(0.4)=−441290≈−0.6575964
截断误差为:
e2(h)=2hf′′(ξ)
其中 h=0.1,ξ∈(0.4,0.5),f′′(x)=(1+x)46,故:
e2(h)=10(1+ξ)43∈[0.0593,0.0781]
中心差商
f′(0.5)≈0.2f(0.6)−f(0.4)=−31361875≈−0.5978954
截断误差为:
e3(h)=−6h2f′′′(ξ)
其中 h=0.1,ξ∈(0.4,0.6),f′′′(x)=−(1+x)524,故:
e3(h)=25(1+ξ)51∈[0.0038,0.0074]
题 7.2
精确值为:
∫01e−xdx=(−e−x)01=1−e−1≈0.6321206
梯形公式
∫01e−xdx≈21−0(e−0+e−1)=2ee+1≈0.6839397
截断误差:
e1=−12(1−0)3f′′(ξ)
其中 ξ∈[0,1],f′′(x)=e−x,故:
e1=−121e−ξ∈[−121,−12e1]
也即 e1∈[−0.08333,−0.03066]。
Simpson 公式
∫01e−xdx≈61−0(e−0+4e−0.5+e−1)=6ee+4e+1≈0.6323337
截断误差:
e2=−2880(1−0)5f(4)(ξ)
其中 ξ∈[0,1],f(4)(x)=e−x,故:
e2=−28801e−ξ∈[−28801,−2880e1]
也即 e2∈[−0.0003472,−0.0001277]。
题 7.3
令求积公式对 f(x)=1,x,x2 成立,可得方程组:
⎩⎨⎧2h=A1+A2+A30=−2hA1+2hA332h3=4h2A1+4h2A3
解得:
A1=A3=34h,A2=−32h
从而求积公式为:
∫−hhf(x)dx≈34hf(−2h)−32hf(0)+34hf(2h)
对于 f(x)=x3,
左端 =0,
右端 =34h(−8h3)+34h(8h3)=0
故成立!
对于 f(x)=x4,
左端 =52h5,
右端 =34h⋅16h4⋅2=6h5=52h5
不成立。
从而代数精度为 3。
根据课上定理,余项形式为:
R2(f)=Ch5f(4)(ξ),ξ∈(−h,h)
取 f(x)=x4 确定误差常数:
R2(x4)=52h5−6h5=307h5
又因为 f(4)(x)≡24,可得 C=7207。
因此截断误差为:
R2(f)=7207h5f(4)(ξ),ξ∈(−h,h)
题 7.4
注意到 Lagrange 插值基函数都是次数不超过 n−1 的多项式,且求积公式代数精确度不小于 n−1。
从而代入 f(x)=li(x),i=1,⋯,n 得:
∫abli(x)dx=k=1∑nAkli(xk)=Ak
也即
Ak=∫ablk(x)dx,k=1,2,…,n
题 7.5
给定 1<p≤10000,需计算 p-范数下的圆周率:
πp=p2∫01[u1−p+(1−u)1−p]1/pdu
记被积函数:
f(u)=[u1−p+(1−u)1−p]1/p
当 u→0+ 时,(1−u)1−p→1,故:
f(u)∼u(1−p)/p=u−μ,μ=pp−1∈(0,1)
由对称性 f(u)=f(1−u),在 u→1− 处具有相同的奇异性。
转化被积函数
将 f(u) 的奇异主项提取出来,令 μ=(p−1)/p,将 f(u) 分解为:
f(u)=u−μ+(1−u)−μ+h(u)
其中 h(u)=f(u)−u−μ−(1−u)−μ。
在 u→0+ 处,将 f(u) 提取 u−μ 后作泰勒展开:
f(u)=u−μ[1+up−1(1−u)1−p]1/p=u−μ+p1u(p−1)2/p(1−u)1−p+⋯
由于 (p−1)2/p>0,第二项及更高阶项在 u→0+ 时均趋于 0。因此:
u→0+limh(u)=0−1=−1
由对称性同理可得 limu→1−h(u)=−1。
故 h(u) 在 [0,1] 上连续有界,无奇异性。
进一步提高光滑性
为进一步提高数值积分效率,利用对称性 h(u)=h(1−u),将积分压缩至左半区间:
∫01h(u)du=2∫01/2h(u)du.
再令 u=t2,当 u∈[0,1/2] 时 t∈[0,1/2],得
∫01h(u)du=2∫01/2k(t)dt
其中 k(t)=2t⋅h(t2)。
积分公式
奇异主项的积分可解析求出:
∫01u−μdu=∫01(1−u)−μdu=1−μ1=p
于是原积分化为:
πp=p4∫01/2k(t)dt+4
数值积分方法
对 k(t) 在 [0,1/2] 上分段使用 5 点 Gauss-Legendre 公式。
因为其代数精度高,收敛速度快,可以充分利用 k(t) 的光滑性。
同时为了达到合适的精度,从 N=8 个子区间开始,每次加倍,直到相邻两次积分结果之差的绝对值 <10−14,可稳定保证 10 位有效数字。
题 7.6
优化问题定义
取 N 个控制点 ri=(xi,yi),i=0,…,N−1,要求 rN=r0。
参数区间 [0,2π] 均匀划分:θi=2πi/N。
则投影面积近似为:
A(r)=21i=0∑N−1(xiyi+1−xi+1yi)
记第 i 段空间向量 si=(Δxi,Δyi,Δhi),
其模 ∥si∥=Δxi2+Δyi2+Δhi2,
其中 Δxi=xi+1−xi,Δyi=yi+1−yi,Δhi=h(xi+1,yi+1)−h(xi,yi)。
则空间弧长近似为:
L(r)=i=0∑N−1∥si∥
优化目标即为:
r∈R2NmaxA(r)s.t.L(r)=L0
采用罚函数法将约束嵌入优化目标:
rmaxΦμ(r)=A(r)−2μ(L(r)−L0)2
μ>0 为罚因子,迭代中逐步增大(μk+1=cμk,c>1),驱使约束趋于精确满足。
梯度与步长计算
面积梯度:
∂xi∂A=21(yi+1−yi−1),∂yi∂A=21(xi−1−xi+1)
其中下标模 N 运算,即 x−1=xN−1,xN=x0。
弧长梯度:
由链式法则:
∂xi∂L=−∥si∥Δxi+Δhi⋅hx(ri)+∥si−1∥Δxi−1+Δhi−1⋅hx(ri)
∂yi∂L=−∥si∥Δyi+Δhi⋅hy(ri)+∥si−1∥Δyi−1+Δhi−1⋅hy(ri)
其中 hx,hy 采用中心差商计算:
hx(xi,yi)hy(xi,yi)≈2δh(xi+δ,yi)−h(xi−δ,yi)≈2δh(xi,yi+δ)−h(xi,yi−δ)
目标函数梯度:
∇Φμ=∇A−μ(L−L0)∇L
线搜索确定步长:
从步长 α=α0 开始,每次折半,直到
Φμ(r+αg)≥Φμ(r)+σαgTg
其中取 σ=0.1。也即取步长使得提升达到线性情况的 σ 倍。
整体算法
算法步骤:
- 初始化:给定闭合控制点 r(0),设置罚因子 μ=μ0。
- 外循环:若 ∣L(r)−L0∣<δ 则结束;否则进入内循环。
- 内循环:
- 计算所有点的高度 h(ri) 及地形梯度 hx,hy;
- 计算面积梯度 ∇A 与弧长梯度 ∇L;
- 组装 g=∇Φμ=∇A−μ(L−L0)∇L;
- 线搜索确定步长 α;
- 更新 r←r+αg,其中强制 rN=r0;
- 若 ∥g∥<ε 则退出内循环,否则重复。
- 增大罚因子:μ←cμ,返回步骤 2。
- 输出:r∗ 与最大面积 A∗。
复杂度分析
| 操作 | 复杂度 |
|---|
| 面积 A 及其梯度 | O(N) |
| 弧长 L 及其梯度 | O(N) |
| 每次梯度上升迭代 | O(N) |
总体复杂度分析取决于内外层迭代次数。