🔬 布勃诺夫-伽辽金法解微分方程演示

交互式可视化加权残差法求解微分方程的数学原理与应用

← 返回主页

📚 什么是布勃诺夫-伽辽金法?

布勃诺夫-伽辽金法(Bubnov-Galerkin Method)是一种加权残差法,用于求解微分方程的近似解。

该方法的基本思想是:

  • 将未知函数表示为基函数的线性组合:\( u(x) \approx \sum_{i=1}^{n} c_i \phi_i(x) \)
  • 将微分方程转化为积分形式(弱形式)
  • 通过要求加权残差为零来求解系数:\( \int_{\Omega} R(x) \phi_j(x) dx = 0 \)
  • 其中 \( R(x) \) 是残差,\( \phi_j(x) \) 是权函数(通常与基函数相同)

🧮 数学公式

微分方程:

\[ -\frac{d^2u}{dx^2} + p(x)u = f(x), \quad x \in [0, L] \]

边界条件:\( u(0) = u_0, \quad u(L) = u_L \)

近似解:

\[ u(x) \approx \sum_{i=1}^{n} c_i \phi_i(x) \]

伽辽金条件:

\[ \int_0^L \left( -\frac{d^2u}{dx^2} + p(x)u - f(x) \right) \phi_j(x) dx = 0, \quad j = 1, 2, \ldots, n \]

分部积分后:

\[ \int_0^L \frac{du}{dx} \frac{d\phi_j}{dx} dx + \int_0^L p(x)u \phi_j(x) dx = \int_0^L f(x) \phi_j(x) dx \]

💡 核心概念详解

1. 基函数(Basis Functions)

定义:基函数是一组线性无关的函数,用于构造近似解的展开式。

常见选择:

  • 多项式基:\( \phi_i(x) = x^i(L-x) \)(满足零边界条件)
  • 三角函数基:\( \phi_i(x) = \sin(i\pi x/L) \)
  • 混合基:多项式和三角函数的组合
  • Legendre多项式基:\( P_i(t) \),其中 \( t = \frac{2x}{L} - 1 \)(映射到[-1,1]区间)
  • 分段线性基:有限元方法中常用的"帽子函数"

关于 Legendre 多项式:

如果公式中出现了 \( P_0 \)、\( P_1 \) 等,这些是 Legendre 多项式的记号。Legendre 多项式是一类特殊的正交多项式,在数值分析、偏微分方程求解和谱方法中有着重要应用。

定义和表达式:

Legendre 多项式 \( P_n(t) \) 是在区间 \( [-1, 1] \) 上定义的,前几项为:

  • \( P_0(t) = 1 \):零阶 Legendre 多项式(常数)
  • \( P_1(t) = t \):一阶 Legendre 多项式(线性)
  • \( P_2(t) = \frac{3t^2-1}{2} \):二阶 Legendre 多项式
  • \( P_3(t) = \frac{5t^3-3t}{2} \):三阶 Legendre 多项式
  • \( P_4(t) = \frac{35t^4-30t^2+3}{8} \):四阶 Legendre 多项式
  • 更高阶的 Legendre 多项式可以通过递推关系或 Rodrigues 公式计算

递推关系:

Legendre 多项式满足递推关系:

\[ (n+1)P_{n+1}(t) = (2n+1)tP_n(t) - nP_{n-1}(t) \]

其中 \( P_0(t) = 1 \),\( P_1(t) = t \)。

正交性:

Legendre 多项式在区间 \( [-1, 1] \) 上关于权函数 \( w(t) = 1 \) 正交:

\[ \int_{-1}^{1} P_m(t) P_n(t) dt = \begin{cases} 0 & \text{如果 } m \neq n \\ \frac{2}{2n+1} & \text{如果 } m = n \end{cases} \]

这一正交性质使得使用 Legendre 多项式作为基函数时,线性系统的系数矩阵具有更好的数值性质(更接近对角矩阵,条件数更小)。

变量映射:

在代码中,Legendre 多项式被映射到区间 \([0, L]\):

\[ t = \frac{2x}{L} - 1 \]

这样 \( x \in [0, L] \) 映射到 \( t \in [-1, 1] \),这是 Legendre 多项式的标准定义域。

映射后的基函数为:\( P_n\left(\frac{2x}{L} - 1\right) \)。

优势和应用:

  • 正交性:基函数之间的正交性可以减少数值误差的累积,提高数值稳定性
  • 快速收敛:对于光滑函数,Legendre 多项式基通常比普通多项式基收敛更快
  • 谱方法:在谱方法(Spectral Method)中,Legendre 多项式是常用的基函数之一
  • 数值积分:Legendre 多项式的零点与 Gauss-Legendre 求积公式的节点相对应

注意事项:

⚠️ 边界条件:Legendre 多项式在标准定义域 \( [-1, 1] \) 的端点处通常不为零(例如 \( P_0(-1) = P_0(1) = 1 \),\( P_1(-1) = -1 \),\( P_1(1) = 1 \))。因此,当需要满足零边界条件时,需要额外的处理(如使用修正的基函数组合,或通过边界函数来满足边界条件)。在当前的实现中,如果边界条件非零,会通过边界函数来处理;如果边界条件为零,可能需要更多基函数来近似满足。

注意:如果选择的是"混合类型"基函数,公式中应该只出现多项式项(如 \( x^1(L-x) \))和三角函数项(如 \( \sin(\pi x/L) \)),不应该出现 \( P_0 \)、\( P_1 \) 等。如果看到了 \( P_0 \)、\( P_1 \),说明选择的是"Legendre多项式"基函数类型,而不是"混合基"。

要求:基函数必须满足边界条件,或者通过特殊处理来满足边界条件。

⚠️ 重要理论限制:不是任意基函数都可以很好地模拟任意原函数!

  • 完备性要求:基函数集合需要是完备的,即在函数空间中稠密,才能理论上逼近任意函数
  • 收敛速度:即使理论上可以逼近,不同基函数对同一函数的收敛速度可能差异很大
  • 匹配原则:基函数的形式应该与解的特性相匹配
    • 如果解是光滑的,多项式基或三角函数基效果好
    • 如果解有奇点或快速振荡,需要更多基函数或特殊基函数
    • 如果解是指数形式,用指数基函数收敛更快
  • 实际限制:有限个基函数只能表示有限维子空间中的函数,无法精确表示所有可能的函数
  • 数值稳定性:某些基函数组合可能导致数值不稳定,即使理论上可行

示例:用多项式基 \( \{x, x^2, x^3, \ldots\} \) 来逼近指数函数 \( e^x \) 是可能的,但需要很多项才能达到高精度;而用指数基 \( \{e^x, e^{2x}, \ldots\} \) 则可能只需一项就能精确表示。

2. 残差(Residual)与弱形式残差

2.1 残差(点态残差,Pointwise Residual)

定义:将近似解代入原微分方程后,在每一点 \( x \) 上得到的误差项。

数学表达:

\[ R(x) = -\frac{d^2u}{dx^2} + p(x)u - f(x) \]

计算方式:

  • 对于解析解 \( u(x) \),直接计算 \( u''(x) \)(解析求导或数值求导)
  • 代入公式:\( R(x) = -u''(x) + p \cdot u(x) - f \)
  • 如果 \( R(x) = 0 \) 对所有 \( x \) 成立,则解是精确的

验证方法:在几个测试点(如 \( x = L/4, L/2, 3L/4 \))计算残差,检查是否接近零。

2.2 弱形式残差(Weak Form Residual)

定义:残差与基函数的加权积分,用于验证数值解是否满足弱形式的伽辽金条件。

数学表达:

对于每个基函数 \( \phi_i(x) \),弱形式残差为:

\[ \int_0^L R(x) \phi_i(x) dx = \int_0^L \left( -\frac{d^2u}{dx^2} + p(x)u - f(x) \right) \phi_i(x) dx \]

经过分部积分后(假设边界条件为零):

\[ \int_0^L \frac{du}{dx} \frac{d\phi_i}{dx} dx + \int_0^L p(x)u \phi_i(x) dx - \int_0^L f(x) \phi_i(x) dx = 0 \]

计算方式:

  • 左端项(LHS):\( \int_0^L \frac{du}{dx} \frac{d\phi_i}{dx} dx + \int_0^L p \cdot u \cdot \phi_i dx \)
  • 右端项(RHS):\( \int_0^L f \cdot \phi_i dx \)
  • 弱形式残差:\( |LHS - RHS| \),应该接近零

验证方法:对每个基函数 \( \phi_i \)(\( i = 1, 2, \ldots, n \))计算弱形式残差,检查是否都接近零。

💡 关键区别:

  • 残差(点态):检查解在每一点是否满足原微分方程
  • 弱形式残差:检查解在积分意义下是否满足弱形式(伽辽金条件)
  • 弱形式残差为零不意味着点态残差为零,但意味着解在某种"平均"意义下是正确的
  • 对于数值解(伽辽金法),弱形式残差是更合适的验证指标

3. 加权残差法(Weighted Residual Method)

核心思想:要求残差与权函数的乘积在整个域上的积分为零。

数学表达:

\[ \int_0^L R(x) w_j(x) dx = 0, \quad j = 1, 2, \ldots, n \]

权函数的选择:

  • 配点法(Collocation):\( w_j(x) = \delta(x - x_j) \)(狄拉克函数)
  • 最小二乘法:\( w_j(x) = \frac{\partial R}{\partial c_j} \)
  • 伽辽金法:\( w_j(x) = \phi_j(x) \)(权函数等于基函数)

4. 伽辽金法的优势

  • 对称性:当微分算子是自伴的,得到的系统矩阵是对称的
  • 最优性:在某种范数意义下,伽辽金解是最优的
  • 稳定性:通常具有良好的数值稳定性
  • 广泛应用:有限元方法的基础

5. 为什么解的形式由系数 p 的正负决定?

这个方程是二阶常系数线性齐次微分方程的标准形式,其解的形式差异本质上来源于特征方程的根的类型,而根的类型由系数 \( p \) 的正负决定。

1. 从原方程到特征方程

原方程的齐次形式为:

\[ -u'' + pu = 0 \]

整理为标准二阶常系数齐次线性微分方程形式:

\[ u'' - pu = 0 \]

对于二阶常系数齐次线性微分方程的通用形式 \( u'' + au' + bu = 0 \),我们可以假设解的形式为 \( u = e^{rx} \)(指数函数形式的试探解),代入方程后会得到特征方程:

\[ r^2 + ar + b = 0 \]

对应到我们的方程 \( u'' - pu = 0 \),系数 \( a = 0 \),\( b = -p \),因此特征方程为:

\[ r^2 - p = 0 \]

\[ r^2 = p \]

2. 当 \( p > 0 \) 时:实根 → 指数 / 双曲函数解

当 \( p > 0 \) 时,特征方程 \( r^2 = p \) 有两个不相等的实根:

\[ r_1 = \sqrt{p}, \quad r_2 = -\sqrt{p} \]

二阶常系数齐次线性微分方程的通解为两个线性无关特解的线性组合,因此通解为:

\[ u_h = Ae^{\sqrt{p}x} + Be^{-\sqrt{p}x} \]

这里也可以转化为双曲函数形式(因为双曲正弦/余弦是指数函数的线性组合):

\[ e^{\sqrt{p}x} = \cosh(\sqrt{p}x) + \sinh(\sqrt{p}x), \quad e^{-\sqrt{p}x} = \cosh(\sqrt{p}x) - \sinh(\sqrt{p}x) \]

代入后通解也可写成:

\[ u_h = C\cosh(\sqrt{p}x) + D\sinh(\sqrt{p}x) \]

其中 \( C = A + B \),\( D = A - B \),两种形式等价。

3. 当 \( p < 0 \) 时:共轭复根 → 三角函数解

当 \( p < 0 \) 时,令 \( p = -|p| \)(\( |p| > 0 \)),特征方程变为:

\[ r^2 = -|p| \]

此时特征方程有两个共轭复根:

\[ r_1 = i\sqrt{|p|}, \quad r_2 = -i\sqrt{|p|} \]

其中 \( i \) 是虚数单位,满足 \( i^2 = -1 \)。

对于共轭复根 \( r = \alpha \pm i\beta \)(这里 \( \alpha = 0 \),\( \beta = \sqrt{|p|} \)),二阶常系数齐次线性微分方程的通解形式为三角函数的线性组合:

\[ u_h = e^{\alpha x}(A\cos(\beta x) + B\sin(\beta x)) \]

代入 \( \alpha = 0 \),\( \beta = \sqrt{|p|} \),得到:

\[ u_h = A\cos(\sqrt{|p|} x) + B\sin(\sqrt{|p|} x) \]

4. 核心结论

解的形式由特征方程根的类型决定:

  • \( p > 0 \) → 实根 → 指数 / 双曲函数解;
  • \( p < 0 \) → 共轭复根 → 三角函数解;
  • 特别地,\( p = 0 \) 时,特征方程为 \( r^2 = 0 \)(二重实根),通解为 \( u_h = A + Bx \)。

6. 解析解的生成过程详解

对于二阶线性常系数微分方程 \( -u'' + p \cdot u = f \),解析解的生成遵循标准的微分方程求解方法。下面详细说明求解步骤:

6.1 齐次方程的通解(齐次解)

首先求解齐次方程:

\[ -u'' + p \cdot u = 0 \]

齐次解的形式由特征方程的根决定(详见第5节)。

  • 当 \( p = 0 \) 时:齐次解为 \( u_h(x) = A + Bx \)(线性函数)
  • 当 \( p > 0 \) 时:齐次解为 \( u_h(x) = Ae^{\sqrt{p}x} + Be^{-\sqrt{p}x} \)(指数函数)
  • 当 \( p < 0 \) 时:齐次解为 \( u_h(x) = A\sin(\sqrt{|p|}x) + B\cos(\sqrt{|p|}x) \)(三角函数)

6.2 非齐次方程的特解

对于非齐次方程 \( -u'' + p \cdot u = f \),需要找到特解 \( u_p(x) \)。

当右端项 \( f(x) = f \) 为常数时:

  • 当 \( p = 0 \) 时:特解形式为 \( u_p(x) = Cx^2 \),代入原方程得 \( -2C = f \),所以 \( u_p(x) = -\frac{f}{2}x^2 \)
  • 当 \( p \neq 0 \) 时:特解形式为常数 \( u_p(x) = C \),代入原方程得 \( p \cdot C = f \),所以 \( u_p(x) = \frac{f}{p} \)

通解 = 齐次解 + 特解:

\[ u(x) = u_h(x) + u_p(x) \]

6.3 应用边界条件确定待定系数

通解中包含待定系数(如 \( A \) 和 \( B \)),需要通过边界条件来确定这些系数。

边界条件:\( u(0) = u_0 \),\( u(L) = u_L \)

步骤:

  1. 将通解 \( u(x) = u_h(x) + u_p(x) \) 代入边界条件
  2. 得到关于 \( A \) 和 \( B \) 的线性方程组
  3. 求解该方程组,得到 \( A \) 和 \( B \) 的具体值

示例(\( p > 0 \) 的情况):

通解:\( u(x) = Ae^{\sqrt{p}x} + Be^{-\sqrt{p}x} + \frac{f}{p} \)

应用边界条件:

\( u(0) = A + B + \frac{f}{p} = u_0 \)

\( u(L) = Ae^{\sqrt{p}L} + Be^{-\sqrt{p}L} + \frac{f}{p} = u_L \)

解这个线性方程组即可得到 \( A \) 和 \( B \)。

6.4 特殊情况处理

  • \( p = 0 \) 的情况:方程简化为 \( -u'' = f \),直接积分两次即可得到解:\( u(x) = -\frac{f}{2}x^2 + Cx + D \)
  • \( f = 0 \) 的情况:这是齐次方程,特解为零。当边界条件也为零时(\( u_0 = 0, u_L = 0 \)),唯一解是零解 \( u(x) = 0 \)
  • 边界条件为零的情况:如果 \( u_0 = 0, u_L = 0 \),解的形式会简化,某些项可能为零

6.5 完整求解流程总结

解析解的生成遵循以下标准流程:

  1. 判断方程类型:根据系数 \( p \) 的正负,确定齐次解的形式
  2. 求齐次解:通过特征方程得到齐次通解 \( u_h(x) \),包含待定系数 \( A, B \)
  3. 求特解:根据右端项 \( f(x) \) 的形式,使用待定系数法或观察法找到特解 \( u_p(x) \)
  4. 组合通解:\( u(x) = u_h(x) + u_p(x) \)
  5. 应用边界条件:将边界条件代入通解,建立关于待定系数的线性方程组
  6. 求解系数:求解线性方程组,得到待定系数的具体值
  7. 得到最终解:将确定的系数代入通解,得到满足边界条件的解析解

6.6 不同类型解的详细推导

情况1:多项式解(\( p = 0 \))

当 \( p = 0 \) 时,方程简化为:

\[ -u'' = f \]

直接积分两次:

\[ u'(x) = -fx + C_1 \]

\[ u(x) = -\frac{f}{2}x^2 + C_1 x + C_2 \]

应用边界条件 \( u(0) = u_0 \),\( u(L) = u_L \):

\( u(0) = C_2 = u_0 \),所以 \( C_2 = u_0 \)

\( u(L) = -\frac{f}{2}L^2 + C_1 L + u_0 = u_L \)

解得:\( C_1 = \frac{u_L - u_0}{L} + \frac{fL}{2} \)

因此最终解为:\( u(x) = -\frac{f}{2}x^2 + \left(\frac{u_L - u_0}{L} + \frac{fL}{2}\right)x + u_0 \)

情况2:指数函数解(\( p > 0 \))

当 \( p > 0 \) 时,齐次解为:\( u_h(x) = Ae^{\sqrt{p}x} + Be^{-\sqrt{p}x} \)

特解为常数:\( u_p(x) = \frac{f}{p} \)

通解:\( u(x) = Ae^{\sqrt{p}x} + Be^{-\sqrt{p}x} + \frac{f}{p} \)

应用边界条件:

\( u(0) = A + B + \frac{f}{p} = u_0 \),所以 \( A + B = u_0 - \frac{f}{p} \)

\( u(L) = Ae^{\sqrt{p}L} + Be^{-\sqrt{p}L} + \frac{f}{p} = u_L \)

设 \( u_0^* = u_0 - \frac{f}{p} \),\( u_L^* = u_L - \frac{f}{p} \)

得到线性方程组:

\( A + B = u_0^* \)

\( Ae^{\sqrt{p}L} + Be^{-\sqrt{p}L} = u_L^* \)

求解得到:

\( A = \frac{u_L^* - u_0^* e^{-\sqrt{p}L}}{e^{\sqrt{p}L} - e^{-\sqrt{p}L}} = \frac{u_L^* - u_0^* e^{-\sqrt{p}L}}{2\sinh(\sqrt{p}L)} \)

\( B = u_0^* - A \)

情况3:三角函数解(\( p < 0 \))

当 \( p < 0 \) 时,令 \( k = \sqrt{|p|} \),齐次解为:\( u_h(x) = A\sin(kx) + B\cos(kx) \)

特解为常数:\( u_p(x) = \frac{f}{p} = \frac{f}{-k^2} = -\frac{f}{k^2} \)(注意这里 \( p < 0 \))

通解:\( u(x) = A\sin(kx) + B\cos(kx) - \frac{f}{k^2} \)

应用边界条件:

\( u(0) = B - \frac{f}{k^2} = u_0 \),所以 \( B = u_0 + \frac{f}{k^2} \)

\( u(L) = A\sin(kL) + B\cos(kL) - \frac{f}{k^2} = u_L \)

代入 \( B \) 的值,得到:

\( A\sin(kL) + \left(u_0 + \frac{f}{k^2}\right)\cos(kL) - \frac{f}{k^2} = u_L \)

解得:\( A = \frac{u_L + \frac{f}{k^2} - \left(u_0 + \frac{f}{k^2}\right)\cos(kL)}{\sin(kL)} \)

💡 提示:在代码实现中,系统会根据用户选择的方程类型(标准形式、多项式解、三角函数解、混合类型)自动选择相应的求解方法。对于某些特殊情况(如多项式解类型但 \( p \neq 0 \)),系统会自动切换到标准形式求解以保证数学正确性。

7. 关于基函数的选择(重要说明)

三角函数基函数中的 π 系数:

在数值解中,我们使用基函数 \( \phi_i(x) = \sin(i\pi x/L) \)。这里的 π 系数是为了满足边界条件而选择的:

  • 对于零边界条件 \( u(0) = 0, u(L) = 0 \),需要基函数在边界处为0
  • 由于 \( \sin(0) = 0 \) 和 \( \sin(\pi) = 0 \),所以 \( \sin(i\pi x/L) \) 在 \( x=0 \) 和 \( x=L \) 处自动为0
  • 这是标准的基函数选择,因为它自动满足边界条件,简化了计算

与解析解的区别:

  • 解析解中的三角函数形式(如 \( \sin(x) \))是由微分方程的参数 p 决定的(\( k = \sqrt{|p|} \))
  • 数值解中的三角函数形式(如 \( \sin(\pi x/L) \))是由边界条件的要求决定的
  • 这两种形式目的不同:解析解反映方程本身的特性,数值解反映边界约束
  • 虽然形式不同,但通过线性组合,数值解可以很好地逼近解析解

7. 约束条件的处理:拉格朗日乘数法

问题背景:

在伽辽金法中,我们通常只考虑边界条件 \( u(0) = u_0 \) 和 \( u(L) = u_L \)。但在某些实际问题中,我们可能还需要满足额外的约束条件,例如:

  • 中间节点约束:\( u(x_{mid}) = u_{mid} \)(在某个中间点处函数值必须等于指定值)
  • 导数约束:\( u'(x_{constraint}) = u'_{constraint} \)(在某个点处一次导数必须等于指定值)

拉格朗日乘数法的基本思想:

拉格朗日乘数法是一种处理约束优化问题的经典方法。对于我们的问题:

原始问题:求解线性系统 \( K \mathbf{c} = \mathbf{F} \),其中 \( K \) 是刚度矩阵,\( \mathbf{c} \) 是系数向量,\( \mathbf{F} \) 是右端项。

约束条件:\( C \mathbf{c} = \mathbf{d} \),其中 \( C \) 是约束矩阵,\( \mathbf{d} \) 是约束值向量。

数学推导:

我们构造拉格朗日函数:

\[ \mathcal{L}(\mathbf{c}, \boldsymbol{\lambda}) = \frac{1}{2} \mathbf{c}^T K \mathbf{c} - \mathbf{c}^T \mathbf{F} + \boldsymbol{\lambda}^T (C \mathbf{c} - \mathbf{d}) \]

其中 \( \boldsymbol{\lambda} \) 是拉格朗日乘数向量。

对 \( \mathbf{c} \) 和 \( \boldsymbol{\lambda} \) 分别求偏导并令其为零:

\[ \frac{\partial \mathcal{L}}{\partial \mathbf{c}} = K \mathbf{c} - \mathbf{F} + C^T \boldsymbol{\lambda} = 0 \]

\[ \frac{\partial \mathcal{L}}{\partial \boldsymbol{\lambda}} = C \mathbf{c} - \mathbf{d} = 0 \]

整理得到扩展的线性系统:

\[ \begin{bmatrix} K & C^T \\ C & 0 \end{bmatrix} \begin{bmatrix} \mathbf{c} \\ \boldsymbol{\lambda} \end{bmatrix} = \begin{bmatrix} \mathbf{F} \\ \mathbf{d} \end{bmatrix} \]

约束矩阵的构造:

对于不同类型的约束条件,约束矩阵 \( C \) 的构造方式不同:

1. 中间节点约束:\( u(x_{mid}) = u_{mid} \)

由于 \( u(x) = u_{boundary}(x) + \sum_{j=1}^{n} c_j \phi_j(x) \),约束条件可以写成:

\[ \sum_{j=1}^{n} c_j \phi_j(x_{mid}) = u_{mid} - u_{boundary}(x_{mid}) \]

因此,约束矩阵的第 \( i \) 行(对应第 \( i \) 个约束)为:

\[ C_{i,j} = \phi_j(x_{mid}) \]

约束值向量为:

\[ d_i = u_{mid} - u_{boundary}(x_{mid}) \]

2. 一次导数约束:\( u'(x_{constraint}) = u'_{constraint} \)

类似地,约束条件可以写成:

\[ \sum_{j=1}^{n} c_j \phi'_j(x_{constraint}) = u'_{constraint} - u'_{boundary}(x_{constraint}) \]

因此,约束矩阵的第 \( i \) 行为:

\[ C_{i,j} = \phi'_j(x_{constraint}) \]

约束值向量为:

\[ d_i = u'_{constraint} - u'_{boundary}(x_{constraint}) \]

求解扩展系统:

扩展后的线性系统是一个 \( (n+m) \times (n+m) \) 的矩阵,其中 \( n \) 是基函数数量,\( m \) 是约束条件数量。我们使用高斯消元法求解这个系统,得到:

  • 系数向量 \( \mathbf{c} \)(前 \( n \) 个元素)
  • 拉格朗日乘数向量 \( \boldsymbol{\lambda} \)(后 \( m \) 个元素)

物理意义:

  • 拉格朗日乘数 \( \lambda_i \) 可以理解为约束力,它表示为了满足第 \( i \) 个约束条件,需要在系统中施加的"力"的大小
  • 如果 \( \lambda_i = 0 \),说明该约束条件自然满足,不需要额外的"力"
  • 如果 \( |\lambda_i| \) 很大,说明该约束条件与原始问题的"冲突"较大,需要较大的"力"才能满足

优势:

  • 精确满足约束:拉格朗日乘数法可以精确满足所有约束条件(在数值精度范围内)
  • 保持弱形式:方法仍然基于弱形式的伽辽金条件,保持了方法的数学严谨性
  • 通用性:可以处理任意数量和类型的线性约束条件
  • 对称性:扩展后的系统矩阵仍然是对称的(如果原始系统是对称的)

💡 注意事项:

  • 约束条件必须是线性独立的,否则扩展系统可能奇异(不可解)
  • 约束条件不能与边界条件冲突,否则问题无解
  • 对于解析解,我们使用修正项方法来近似满足约束条件,而不是拉格朗日乘数法(因为解析解的形式已经由微分方程确定)。修正项满足齐次方程 \( -u'' + p \cdot u = 0 \),因此修正后的解仍然满足原始方程 \( -u'' + p \cdot u = f \)。但是,如果约束值与原解在该点的值差异很大,修正项可能会很大,导致修正后的解精度下降。
  • 约束条件的数量 \( m \) 应该小于基函数数量 \( n \),否则问题可能过约束
  • 重要提示:如果约束条件与原始微分方程的解不兼容(例如,约束值与原解在该点的值差异很大),强制满足约束可能会导致解的精度显著下降,甚至无法满足原始微分方程。建议选择与原解在该点值相近的约束值,或者增加基函数数量以提高数值解的精度和灵活性。

🎛️ 交互控制面板

标准形式:\( -u'' + p \cdot u = f \),解为指数函数或三角函数

🔗 约束条件

提示:点击"计算并对比解"将自动执行:计算伽辽金解 → 计算解析解 → 对比分析

📖 使用说明

  1. 选择基函数类型:根据问题特性选择合适的基函数
  2. 设置参数:调整域长度、基函数数量、边界条件等
  3. 计算解析解:对于简单情况,系统会自动计算解析解
  4. 计算数值解:使用伽辽金法计算近似解
  5. 对比分析:查看两种解的差异和误差分布

⚠️ 注意事项

  • 基函数必须满足边界条件,或通过特殊处理来满足
  • 基函数数量越多,精度通常越高,但计算量也越大
  • 对于某些问题,解析解可能不存在或难以计算
  • 数值解的精度取决于基函数的选择和数量