2.4 广义函数与弱解


2.4 广义函数与弱解

画像的最后一格回答一个概念问题:满足方程的"解",允许不光滑到什么程度?第一章弦振动之争里欧拉的直觉——初始形状可以是随手画出的曲线——在本节终于获得严格语法:把求导从逐点运算改成对检验函数的积分配对,阶梯函数的导数就有了名字(德尔塔函数),带棱角的解也能名正言顺地"满足方程"。这套语言是第三章格林函数的点源、第四章有限元的变分原理、第五章激波的数学描述共同的底座。

当求导遇到棱角

逐点求导对两类对象失效:不连续的函数(阶梯函数在跳点处导数不存在)和本身奇异的"函数"(只在一点非零的脉冲)。而物理偏偏偏爱这两类对象:点电荷的密度是脉冲,材料的界面两侧位移连续但应变跳变,弦被锤敲一下的初始速度是瞬时冲击。如果方程只认逐点导数,这大批物理场景就无方程可用。

出路是换一个定义。观察分部积分:对足够光滑的 u 与紧支撑的检验函数 φ(在区域边界及其附近取零),有

∫ u'·φ dx = − ∫ u·φ' dx。

右式只要求 u 可积,完全不要求 u 可导。于是把它当作定义:若存在可积函数 w 使 ∫ w·φ dx = − ∫ u·φ' dx 对一切检验函数成立,就称 w 是 u 的弱导数。光滑时弱导数与经典导数一致;不光滑时弱导数照样存在。这个定义把导数的本质从"逐点的极限"改写为"与检验函数整体的配对"——第一章争论了一个世纪的"什么算解",答案原来是换一种配对方式。

按新定义立刻得到两个战果。其一,赫维赛德阶梯函数 H(x)(x 小于零取零、大于零取一)的弱导数是德尔塔函数 δ——满足 ∫ δ·φ dx = φ(0) 的对象:对 H 配检验函数积分,得到的正是 φ 在原点的值,与 δ 的定义吻合。其二,|x| 的弱导数是符号函数 sign(x),而 sign 的弱导数是 2δ——绝对值函数在原点有一个"二阶导数等于两倍点源"的秘密,泊松方程的点源解(第三章)正是这个事实的高维版本。

💡 关键直觉:德尔塔不是函数,是"对检验函数取值"这个动作本身的名字。写 δ(x) 像写一个函数只是记号习惯,严格身份是泛函——这个身份让"点源"第一次可以进入方程。

弱解:方程的扩展语义

有了弱导数,弱解的定义水到渠成:若 u 与方程中出现的各阶导数在弱意义下存在,且方程两边作为分布相等,则 u 是弱解。经典解必是弱解;弱解不必经典。热传导方程对阶梯初值的解,在任何 t 大于零时刻无穷光滑,是经典解;但把 t = 0 也算进去,初值本身不光滑,解只在弱意义下"从阶梯出发"——弱语义让"初值加演化"这个整体陈述合法化。第一章的进化线(经典解 → 弱解)在此闭合:达朗贝尔要求解析式,欧拉允许随手曲线,勒雷与施瓦茨最终证明,只要把等式念成积分等式,欧拉的宽容是完全安全的。

弱解的边界也很重要:弱解可以不唯一、可以有非物理的激波(第五章会看到双曲守恒律的弱解无穷多,必须靠熵条件挑出物理的那一个)。弱语义不是无条件地宽容,而是"先扩容、再筛选"——扩容保证问题有解,筛选保证解有意义。这套"先存在后挑选"的策略贯穿现代理论。

数值实验:用积分验证弱导数

弱导数的定义是积分恒等式,正好用数值积分直接检验。三组实验:验证 |x| 的弱导数是 sign(x)、验证 sign 的弱导数对应 2δ、观察热核对方波的瞬间磨光。

import numpy as np x = np.linspace(-2, 2, 200001) dx = x[1] - x[0] # 实验一:|x| 的弱导数是 sign(x)? # 按 weak 定义, 对光滑检验函数 phi(紧支撑)应有: # ∫ sign(x)*phi dx = - ∫ |x|*phi' dx phi = np.exp(-x**2 / 0.05) # 近似紧支撑的检验函数 dphi = np.gradient(phi, dx) lhs = np.sum(np.sign(x) * phi) * dx rhs = -np.sum(np.abs(x) * dphi) * dx print("实验一 左端:", lhs, " 右端:", rhs, " 差:", abs(lhs - rhs)) # 实验二:sign 的弱导数应在原点集中:- ∫ sign(x)*phi' dx 应约等于 2*phi(0) lhs2 = -np.sum(np.sign(x) * dphi) * dx print("实验二 计算值:", lhs2, " 理论值 2*phi(0) =", 2*phi[np.argmin(np.abs(x))]) # 实验三:热核磨光——宽 a 的热核卷积方波,宽度随时间按 sqrt(2t) 增长 step = np.where(np.abs(x) < 0.5, 1.0, 0.0) for t in [1e-4, 1e-2, 1e-1]: sig = np.sqrt(2 * t) ker = np.exp(-((x - x[:, None])**2) / (4 * t)) u = (ker @ step) / ker.sum(axis=1) print(f"t = {t:8.4f} 解在 x=0.5 处的值 {np.interp(0.5, x, u):.4f}" f" 最大值 {u.max():.4f}")

实验一的左右两端在网格精度内相等——积分恒等式成立,sign 就是 |x| 的弱导数;实验二的计算值收敛到 2φ(0),德尔塔的身份被数值坐实;实验三里,哪怕 t 只有万分之一,方波的棱角已经圆滑、峰值开始下降——2.2 节"瞬间光滑化"的性格描述,从此有了一条可复算的证据链。

这套语言为什么非学不可

三个后续章节都踩在本节地基上。第三章格林函数:点源响应问题 −Δu = δ 本身就没有经典解——右端是分布,解在源点外光滑、源点处奇异,弱语义是唯一能把问题写干净的框架。第四章有限元:有限元不是"把区域切成小三角形"这么肤浅,它的数学核心恰是变分(弱)形式——在分片多项式空间里解弱方程,本节的积分恒等式就是组装刚度矩阵的原理图;有限元对复杂几何的适应性、对不光滑系数的容忍度,全部来自弱形式的宽容。第五章激波:无黏伯格斯方程的解必然发展成间断,经典语义在激波出现的瞬间失效,熵弱解是继续讨论的唯一语言。

分部积分是弱语言的全部秘密。第四章会反复做一件事:把方程乘以检验函数、积分、分部积分、把一半导数搬到检验函数头上。做一次,就得到一种新方法的骨架——有限元如此,弱伽辽金如此,谱方法的弱形式亦如此。本节看似抽象,实为全册的枢纽。

⚠️ 常见坑:弱解不唯一不等于弱理论有毛病。不唯一恰是扩容的代价,筛选靠附加条件(熵条件、正则化、规范固定)。遇到"多个弱解"的疑问,正确的反应是找筛选条件,而不是回头怀疑弱定义。

本节要点

  • 弱导数:用分部积分把导数改写为与检验函数的配对,不光滑对象获得导数身份;
  • 德尔塔函数:阶梯函数的弱导数,本质是对检验函数取值的泛函,点源的严格化身;
  • 弱解语义:方程两边作为分布相等;经典解必是弱解,弱解未必经典;
  • 扩容与筛选:先保证存在,再用附加条件(熵、正则化)挑出物理解;
  • 数值可验:弱导数定义即积分恒等式,数值积分可直接复核,磨光实验可视化热核效应;
  • 全册枢纽:格林函数、有限元、激波理论分别站在本节的一条腿上。

第二章的画像到此完整:判别式定性、性格对照、适定性契约、弱解语义。方程是谁、能信吗、解字怎么念,都有了答案。下一章开始还账——亲手把解求出来,并让数值实验复核每一步推导。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U