H^1半范数误差阶的详细推导分析

在有限元分析和数值逼近中, H 1 H^1 H1 半范数是一种常见的误差度量。它衡量的是函数的一阶导数在一个区间上的误差,与 L 2 L^2 L2 范数不同, H 1 H^1 H1半范数主要关注的是导数的误差。

H 1 H^1 H1 半范数误差阶的详细推导分析

H 1 H^1 H1 半范数定义

对于一个函数 f ( x ) f(x) f(x) 和其近似 L ( x ) L(x) L(x) (如分片线性插值函数), H 1 H^1 H1半范数定义为函数的导数 f ′ ( x ) f'(x) f(x) L ′ ( x ) L'(x) L(x)在整个区间上的误差的平方根,即:

∥ f − L ∥ H 1 = ( ∫ a b ∣ f ′ ( x ) − L ′ ( x ) ∣ 2   d x ) 1 / 2 \| f - L \|_{H^1} = \left( \int_a^b | f'(x) - L'(x) |^2 \, dx \right)^{1/2} fLH1=(abf(x)L(x)2dx)1/2

其中, [ a , b ] [a, b] [a,b] 是函数定义的区间。

分片线性插值的误差函数

假设我们在区间 [ x i , x i + 1 ] [x_i, x_{i+1}] [xi,xi+1] 上进行分片线性插值,插值函数 L ( x ) L(x) L(x) 在该区间上是线性的,具体表达式为:

L ( x ) = x i + 1 − x x i + 1 − x i f ( x i ) + x − x i x i + 1 − x i f ( x i + 1 ) L(x) = \frac{x_{i+1} - x}{x_{i+1} - x_i} f(x_i) + \frac{x - x_i}{x_{i+1} - x_i} f(x_{i+1}) L(x)=xi+1xixi+1xf(xi)+xi+1xixxif(xi+1)

导数 L ′ ( x ) L'(x) L(x) 是常数:

L ′ ( x ) = f ( x i + 1 ) − f ( x i ) x i + 1 − x i L'(x) = \frac{f(x_{i+1}) - f(x_i)}{x_{i+1} - x_i} L(x)=xi+1xif(xi+1)f(xi)

对于实际函数 f ( x ) f(x) f(x),其导数 f ′ ( x ) f'(x) f(x) 在区间 [ x i , x i + 1 ] [x_i, x_{i+1}] [xi,xi+1] 上的一阶导数可以用泰勒展开式近似为:

f ′ ( x ) ≈ f ′ ( x i ) + f ′ ′ ( x i ) ( x − x i ) f'(x) \approx f'(x_i) + f''(x_i) (x - x_i) f(x)f(xi)+f′′(xi)(xxi)

H 1 H^1 H1 半范数误差分析步骤

我们将在每个子区间 [ x i , x i + 1 ] [x_i, x_{i+1}] [xi,xi+1] 上计算导数误差的平方,然后进行积分,并将这些积分结果累加起来得到整个区间的 H 1 H^1 H1 半范数。

  1. 导数误差:

导数误差 E ′ ( x ) E'(x) E(x) 可以用实际函数导数和插值函数导数的差异表示为:

E ′ ( x ) = f ′ ( x ) − L ′ ( x ) E'(x) = f'(x) - L'(x) E(x)=f(x)L(x)

由于 L ′ ( x ) L'(x) L(x)是常数,因此:

E ′ ( x ) = f ′ ( x ) − f ( x i + 1 ) − f ( x i ) x i + 1 − x i E'(x) = f'(x) - \frac{f(x_{i+1}) - f(x_i)}{x_{i+1} - x_i} E(x)=f(x)xi+1xif(xi+1)f(xi)

我们使用泰勒展开式来近似 f ′ ( x ) f'(x) f(x)

E ′ ( x ) = f ′ ( x i ) + f ′ ′ ( ξ ) ( x − x i ) − f ( x i + 1 ) − f ( x i ) x i + 1 − x i E'(x) = f'(x_i) + f''(\xi) (x - x_i) - \frac{f(x_{i+1}) - f(x_i)}{x_{i+1} - x_i} E(x)=f(xi)+f′′(ξ)(xxi)xi+1xif(xi+1)f(xi)

其中 ξ \xi ξ 是区间 [ x i , x i + 1 ] [x_i, x_{i+1}] [xi,xi+1]内的某个点。

我们再将 f ( x i + 1 ) f(x_{i+1}) f(xi+1) 用泰勒展开式表示为:

f ( x i + 1 ) = f ( x i ) + f ′ ( x i ) ( x i + 1 − x i ) + f ′ ′ ( ξ ′ ) 2 ( x i + 1 − x i ) 2 f(x_{i+1}) = f(x_i) + f'(x_i) (x_{i+1} - x_i) + \frac{f''(\xi')}{2} (x_{i+1} - x_i)^2 f(xi+1)=f(xi)+f(xi)(xi+1xi)+2f′′(ξ)(xi+1xi)2

  1. 导数近似:

因此,导数误差近似为:

E ′ ( x ) = f ′ ( x i ) + f ′ ′ ( ξ ) ( x − x i ) − ( f ′ ( x i ) + f ′ ′ ( ξ ′ ) 2 ( x i + 1 − x i ) ) E'(x) = f'(x_i) + f''(\xi) (x - x_i) - \left( f'(x_i) + \frac{f''(\xi')}{2} (x_{i+1} - x_i) \right) E(x)=f(xi)+f′′(ξ)(xxi)(f(xi)+2f′′(ξ)(xi+1xi))

简化得到:

E ′ ( x ) ≈ f ′ ′ ( ξ ) ( x − x i ) − f ′ ′ ( ξ ′ ) 2 ( x i + 1 − x i ) E'(x) \approx f''(\xi) (x - x_i) - \frac{f''(\xi')}{2} (x_{i+1} - x_i) E(x)f′′(ξ)(xxi)2f′′(ξ)(xi+1xi)

  1. 平方误差:

平方误差的积分为:

∥ f − L ∥ H 1 2 = ∫ x i x i + 1 ∣ E ′ ( x ) ∣ 2   d x \| f - L \|_{H^1}^2 = \int_{x_i}^{x_{i+1}} | E'(x) |^2 \, dx fLH12=xixi+1E(x)2dx

≈ ∫ x i x i + 1 ∣ f ′ ′ ( ξ ) ( x − x i ) − f ′ ′ ( ξ ′ ) 2 ( x i + 1 − x i ) ∣ 2   d x \approx \int_{x_i}^{x_{i+1}} \left| f''(\xi) (x - x_i) - \frac{f''(\xi')}{2} (x_{i+1} - x_i) \right|^2 \, dx xixi+1 f′′(ξ)(xxi)2f′′(ξ)(xi+1xi) 2dx

  1. 误差阶分析:

为了简化计算,我们假设 f ′ ′ ( ξ ) ≈ f ′ ′ ( ξ ′ ) ≈ f ′ ′ f''(\xi) \approx f''(\xi') \approx f'' f′′(ξ)f′′(ξ)f′′ 是常数:

∥ f − L ∥ H 1 2 ≈ ∫ x i x i + 1 ∣ f ′ ′ ( x − x i ) − f ′ ′ 2 ( x i + 1 − x i ) ∣ 2   d x \| f - L \|_{H^1}^2 \approx \int_{x_i}^{x_{i+1}} \left| f'' (x - x_i) - \frac{f''}{2} (x_{i+1} - x_i) \right|^2 \, dx fLH12xixi+1 f′′(xxi)2f′′(xi+1xi) 2dx

  1. 积分计算:

进行变量替换 x = x i + t h x = x_i + t h x=xi+th,其中 h = x i + 1 − x i h = x_{i+1} - x_i h=xi+1xi,积分限变为 0 到 1:

∥ f − L ∥ H 1 2 ≈ ( f ′ ′ ) 2 ∫ x i x i + 1 ∣ ( x − x i ) − h 2 ∣ 2   d x \| f - L \|_{H^1}^2 \approx (f'')^2 \int_{x_i}^{x_{i+1}} \left| (x - x_i) - \frac{h}{2} \right|^2 \, dx fLH12(f′′)2xixi+1 (xxi)2h 2dx

积分为:

∥ f − L ∥ H 1 2 ≈ ( f ′ ′ ) 2 ⋅ h 2 ⋅ h 12 = ( f ′ ′ ) 2 h 3 12 \| f - L \|_{H^1}^2 \approx (f'')^2 \cdot h^2 \cdot \frac{h}{12} = \frac{(f'')^2 h^3}{12} fLH12(f′′)2h212h=12(f′′)2h3

  1. 全局 ( H^1 ) 误差:

对于整个区间 ([a, b]),将所有子区间的积分结果累加:

∥ f − L ∥ H 1 2 ≈ ∑ i ( f ′ ′ ) 2 h i 3 12 \| f - L \|_{H^1}^2 \approx \sum_i \frac{(f'')^2 h_i^3}{12} fLH12i12(f′′)2hi3

假设所有子区间长度大致相同,即 h i ≈ h h_i \approx h hih,区间总长度 b − a b - a ba 被分为 N N N 个子区间:

N ≈ b − a h N \approx \frac{b - a}{h} Nhba

因此:

∥ f − L ∥ H 1 2 ≈ h 3 12 ∥ f ′ ′ ∥ ∞ 2 ⋅ N = h 3 12 ∥ f ′ ′ ∥ ∞ 2 ⋅ b − a h \| f - L \|_{H^1}^2 \approx \frac{h^3}{12} \| f'' \|_\infty^2 \cdot N = \frac{h^3}{12} \| f'' \|_\infty^2 \cdot \frac{b - a}{h} fLH1212h3f′′2N=12h3f′′2hba

∥ f − L ∥ H 1 2 ≈ h 2 ( b − a ) 12 ∥ f ′ ′ ∥ ∞ 2 \| f - L \|_{H^1}^2 \approx \frac{h^2 (b - a)}{12} \| f'' \|_\infty^2 fLH1212h2(ba)f′′2

取平方根得到 H 1 H^1 H1 误差:

∥ f − L ∥ H 1 ≈ ( h 2 ( b − a ) 12 ) 1 / 2 ∥ f ′ ′ ∥ ∞ \| f - L \|_{H^1} \approx \left( \frac{h^2 (b - a)}{12} \right)^{1/2} \| f'' \|_\infty fLH1(12h2(ba))1/2f′′

∥ f − L ∥ H 1 ≈ C h \| f - L \|_{H^1} \approx C h fLH1Ch

其中 C = ( ( b − a ) 12 ) 1 / 2 ∥ f ′ ′ ∥ ∞ C = \left( \frac{(b - a)}{12} \right)^{1/2} \| f'' \|_\infty C=(12(ba))1/2f′′是与函数的二阶导数和区间长度相关的常数。

总结

通过上述分析,我们可以得出,对于分片线性插值, H 1 H^1 H1 半范数误差的阶数是 一阶 O ( h ) O(h) O(h)。这意味着当我们将插值点之间的间隔 h h h 减半时, H 1 H^1 H1 误差大约会减半。

图示与验证

为了验证这一结论,我们可以通过实际计算和绘图来展示分片线性插值的 H 1 H^1 H1 误差。

示例代码
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import quad

# 定义函数及其导数
def f(x):
    return np.sin(x)

def df(x):
    return np.cos(x)

a, b = 0, np.pi
x_fine = np.linspace(a, b, 1000)
df_fine = df(x_fine)

# 计算H1误差
def compute_h1_error(n_points):
    x = np.linspace(a, b, n_points)
    y = f(x)
    dy_interp = np.gradient(y, x)  # 使用有限差分近似一阶导数
    
    h1_error_squared = 0
    for i in range(n_points - 1):
        xi, xi1 = x[i], x[i + 1]
        dfi = df(xi)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值