伽辽金法原理介绍
伽辽金法是一种基于变分原理的数值方法,用于求解微分方程的近似解。这种方法的核心思想是将微分方程转化为一个变分问题,通过最小化残差(方程左边与右边之差)的某种范数来找到近似解。
基本原理
-
变分原理:对于给定的微分方程,我们可以构造一个与之相关的泛函(变分问题),使得微分方程的精确解能够使得这个泛函达到极值(最小值或最大值)。
-
近似解的形式:在伽辽金法中,我们假设解可以表示为一组基函数的线性组合,即:
u ( x ) ≈ ∑ i = 1 n C i ϕ i ( x ) u(x) \approx \sum_{i=1}^n C_i \phi_i(x) u(x)≈i=1∑nCiϕi(x)
其中, ϕ i ( x ) \phi_i(x) ϕi(x) 是预先选定的基函数,$\ C_i $ 是待定系数。 -
残差:将近似解代入微分方程,得到残差$ R(x) $:
R ( x ) = L ( ∑ i = 1 n C i ϕ i ( x ) ) − f ( x ) R(x) = L\left(\sum_{i=1}^n C_i \phi_i(x)\right) - f(x) R(x)=L(i=1∑nCiϕi(x))−f(x)
其中,$ L $ 是微分算子,$ f(x) $ 是微分方程的非齐次项。 -
正交性条件:为了使残差最小,我们选择一组权函数 $ w(x) $,并要求残差与每个权函数的乘积在定义域上的积分为零,即:
∫ a b w ( x ) R ( x ) d x = 0 \int_a^b w(x) R(x) \, dx = 0 ∫abw(x)R(x)dx=0
这称为正交性条件。 -
求解系数:通过正交性条件,我们可以得到一个关于系数 $ C_i $ 的线性方程组,求解这个方程组可以得到系数的近似值。
-
近似解:将求得的系数代入近似解的形式中,得到微分方程的近似解。
特点与应用
伽辽金法的主要优点是能够处理复杂的边界条件,并且可以系统地改善近似解的精度,通过增加基函数的数量。这种方法在有限元分析中得到了广泛的应用,特别是在固体力学和流体力学等领域。
问题描述
使用伽辽金法求解二阶微分方程:
d 2 u d x 2 − u = − x , 0 < x < 1 \frac{d^2u}{dx^2} - u = -x, \quad 0 < x < 1 dx2d2u−u=−x,0<x<1
边界条件为:
u ( 0 ) = 0 , u ( 1 ) = 0 u(0) = 0, \quad u(1) = 0 u(0)=0,u(1)=0
权函数设为:
w = x ( 1 − x ) w = x(1-x) w=x(1−x)
近似解设为:
u ( x ) = C 1 x ( 1 − x ) u(x) = C_1 x(1-x) u(x)=C1x(1−x)
求解步骤
-
计算近似解的导数:
u ( x ) = C 1 x ( 1 − x ) u(x) = C_1 x(1-x) u(x)=C1x(1−x)
u ′ ( x ) = C 1 ( 1 − 2 x ) u'(x) = C_1 (1 - 2x) u′(x)=C1(1−2x)
u ′ ′ ( x ) = − 2 C 1 u''(x) = -2C_1 u′′(x)=−2C1 -
计算残值:
R ( x ) = d 2 u d x 2 − u − ( − x ) = − 2 C 1 − C 1 x ( 1 − x ) + x R(x) = \frac{d^2u}{dx^2} - u - (-x) = -2C_1 - C_1 x(1-x) + x R(x)=dx2d2u−u−(−x)=−2C1−C1x(1−x)+x -
将权函数乘以残值并积分:
∫ 0 1 w R ( x ) d x = 0 \int_0^1 w R(x) dx = 0 ∫01wR(x)dx=0
∫ 0 1 x ( 1 − x ) ( − 2 C 1 − C 1 x ( 1 − x ) + x ) d x = 0 \int_0^1 x(1-x) \left( -2C_1 - C_1 x(1-x) + x \right) dx = 0 ∫01x(1−x)(−2C1−C1x(1−x)+x)dx=0 -
计算积分:
∫ 0 1 x ( 1 − x ) ( − 2 C 1 − C 1 x ( 1 − x ) + x ) d x \int_0^1 x(1-x) \left( -2C_1 - C_1 x(1-x) + x \right) dx ∫01x(1−x)(−2C1−C1x(1−x)+x)dx
= ∫ 0 1 ( − 2 C 1 x ( 1 − x ) − C 1 x 2 ( 1 − x ) 2 + x 2 ( 1 − x ) ) d x = \int_0^1 \left( -2C_1 x(1-x) - C_1 x^2(1-x)^2 + x^2(1-x) \right) dx =∫01(−2C1x(1−x)−C1x2(1−x)2+x2(1−x))dx
= − 2 C 1 ∫ 0 1 x ( 1 − x ) d x − C 1 ∫ 0 1 x 2 ( 1 − x ) 2 d x + ∫ 0 1 x 2 ( 1 − x ) d x = -2C_1 \int_0^1 x(1-x) dx - C_1 \int_0^1 x^2(1-x)^2 dx + \int_0^1 x^2(1-x) dx =−2C1∫01x(1−x)dx−C1∫01x2(1−x)2dx+∫01x2(1−x)dx计算三个积分:
∫ 0 1 x ( 1 − x ) d x = ∫ 0 1 ( x − x 2 ) d x = [ x 2 2 − x 3 3 ] 0 1 = 1 2 − 1 3 = 1 6 \int_0^1 x(1-x) dx = \int_0^1 (x - x^2) dx = \left[ \frac{x^2}{2} - \frac{x^3}{3} \right]_0^1 = \frac{1}{2} - \frac{1}{3} = \frac{1}{6} ∫01x(1−x)dx=∫01(x−x2)dx=[2x2−3x3]01=21−31=61
∫ 0 1 x 2 ( 1 − x ) 2 d x = ∫ 0 1 x 2 ( 1 − 2 x + x 2 ) d x = ∫ 0 1 ( x 2 − 2 x 3 + x 4 ) d x \int_0^1 x^2(1-x)^2 dx = \int_0^1 x^2(1 - 2x + x^2) dx = \int_0^1 (x^2 - 2x^3 + x^4) dx ∫01x2(1−x)2dx=∫01x2(1−2x+x2)dx=∫01(x2−2x3+x4)dx
= [ x 3 3 − 2 x 4 4 + x 5 5 ] 0 1 = 1 3 − 1 2 + 1 5 = 10 − 15 + 6 30 = 1 30 = \left[ \frac{x^3}{3} - \frac{2x^4}{4} + \frac{x^5}{5} \right]_0^1 = \frac{1}{3} - \frac{1}{2} + \frac{1}{5} = \frac{10 - 15 + 6}{30} = \frac{1}{30} =[3x3−42x4+5x5]01=31−21+51=3010−15+6=301
∫ 0 1 x 2 ( 1 − x ) d x = ∫ 0 1 ( x 2 − x 3 ) d x = [ x 3 3 − x 4 4 ] 0 1 = 1 3 − 1 4 = 1 12 \int_0^1 x^2(1-x) dx = \int_0^1 (x^2 - x^3) dx = \left[ \frac{x^3}{3} - \frac{x^4}{4} \right]_0^1 = \frac{1}{3} - \frac{1}{4} = \frac{1}{12} ∫01x2(1−x)dx=∫01(x2−x3)dx=[3x3−4x4]01=31−41=121代入结果:
− 2 C 1 ⋅ 1 6 − C 1 ⋅ 1 30 + 1 12 = 0 -2C_1 \cdot \frac{1}{6} - C_1 \cdot \frac{1}{30} + \frac{1}{12} = 0 −2C1⋅61−C1⋅301+121=0
− C 1 3 − C 1 30 + 1 12 = 0 -\frac{C_1}{3} - \frac{C_1}{30} + \frac{1}{12} = 0 −3C1−30C1+121=0
− 10 C 1 + C 1 30 + 1 12 = 0 -\frac{10C_1 + C_1}{30} + \frac{1}{12} = 0 −3010C1+C1+121=0
− 11 C 1 30 + 1 12 = 0 -\frac{11C_1}{30} + \frac{1}{12} = 0 −3011C1+121=0
− 11 C 1 30 = − 1 12 -\frac{11C_1}{30} = -\frac{1}{12} −3011C1=−121
11 C 1 30 = 1 12 \frac{11C_1}{30} = \frac{1}{12} 3011C1=121
11 C 1 = 30 12 11C_1 = \frac{30}{12} 11C1=1230
11 C 1 = 5 2 11C_1 = \frac{5}{2} 11C1=25
C 1 = 5 22 C_1 = \frac{5}{22} C1=225 -
写出最终的近似解:
u ( x ) = C 1 x ( 1 − x ) = 5 22 x ( 1 − x ) u(x) = C_1 x(1-x) = \frac{5}{22} x(1-x) u(x)=C1x(1−x)=225x(1−x)
最终答案
u ( x ) = 5 22 x ( 1 − x ) \boxed{u(x) = \frac{5}{22} x(1-x)} u(x)=225x(1−x)
python求解
import sympy as sp
x,C1=sp.symbols('x,C1')
u='C1*x*(1-x)'
u=sp.sympify(u)
w=sp.diff(u,C1)
R=sp.diff(u,x,2)-u+x
I=sp.integrate(w*R,(x,0,1))
res=sp.solve(I,C1)
print(res)