有限元入门: 用变分法求解一维常微分方程(一)

问题描述

给定下述方程
{ − U ′ ′ ( t ) + U ( t ) = ( π 2 + 1 ) sin ⁡ π t , U ( 0 ) = U ( 1 ) = 0 , \left\{\begin{aligned} & -U''(t) +U(t) = (\pi^2 + 1)\sin \pi t,\\ &U(0)=U(1) =0, \end{aligned} \right. {U(t)+U(t)=(π2+1)sinπt,U(0)=U(1)=0,

其中 t ∈ [ 0 , 1 ] . t\in [0,1]. t[0,1].

  • 请构造一次有限元求解上述方程并给出相应误差估计;
  • 请构造二次有限元求解上述方程并给出相应误差估计.

问题分析

取检验函数空间 V = H 0 1 ( Ω ) , V=H_0^1(\Omega), V=H01(Ω), 则对 ∀   v ∈ V , \forall\,v\in V, vV,
∫ Ω ( − u ′ ′ + u ) v   d t = ( π 2 + 1 ) ∫ Ω sin ⁡ π t ⋅ v   d t , \begin{aligned} \int_{\Omega}(-u''+u)v \,\mathrm{d}t=(\pi^2+1)\int_{\Omega}\sin \pi t \cdot v\,\mathrm{d}t, \end{aligned} Ω(u+u)vdt=(π2+1)Ωsinπtvdt,
由 Green 公式以及边值条件, 我们有
∫ Ω ( ∇ u ∇ v + u v )   d t = ( π 2 + 1 ) ∫ Ω sin ⁡ π t ⋅ v   d t . \int_{\Omega}(\nabla u\nabla v+uv)\,\mathrm{d}t = (\pi^2+1)\int_{\Omega}\sin \pi t\cdot v\,\mathrm{d}t. Ω(uv+uv)dt=(π2+1)Ωsinπtvdt.
a ( u , v ) = ∫ Ω ( ∇ u ∇ v + u v )   d t , ( f , v ) = ( π 2 + 1 ) ∫ Ω sin ⁡ π t ⋅ v   d t . (1) a(u,v)=\int_{\Omega}(\nabla u\nabla v+uv)\,\mathrm{d}t,\quad (f,v)=(\pi^2+1)\int_{\Omega}\sin \pi t\cdot v\,\mathrm{d}t. \tag{1} a(u,v)=Ω(uv+uv)dt,(f,v)=(π2+1)Ωsinπtvdt.(1)
则方程(1) 可转化为
{ F i n d u ∈ V ,    s . t . a ( u , v ) = ( f , v ) , ∀   v ∈ V . (2) \left\{ \begin{aligned} & Find\quad u\in V, \;s.t.\\ & a(u,v)=(f,v),\quad \forall\, v\in V. \end{aligned}\right. \tag{2} {FinduV,s.t.a(u,v)=(f,v),vV.(2)
V h V_h Vh V V V 的有限维逼近, 于是问题 (2) 可转化为
{ F i n d   u h ∈ V h ,    s . t . a ( u h , v h ) = ( f , v h ) ∀   v h ∈ V h . (3) \left\{ \begin{aligned} & Find\quad\, u_h\in V_h,\;s.t.\\ & a(u_h,v_h) = (f,v_h)\quad \forall \, v_h\in V_h. \end{aligned} \tag{3} \right. {FinduhVh,s.t.a(uh,vh)=(f,vh)vhVh.(3)
V h V_h Vh 的一组基 { Φ i } i = 1 N , \{\Phi_i\}_{i=1}^N, {Φi}i=1N, u h = ∑ i = 1 N u i Φ i , u_h = \sum_{i=1}^N u_i\Phi_i, uh=i=1NuiΦi, 则 (3) 可转化为 N N N 个方程
a ( ∑ i = 1 N u i Φ i , Φ j ) = ( f , Φ j ) , ∀   j = 1 , 2 , ⋯   , N , ∑ i = 1 N u i a ( Φ i , Φ j ) = ( f , Φ j ) , ∀   j = 1 , 2 , ⋯   , N . \begin{aligned} a(\sum_{i=1}^{N}u_i\Phi_i,\Phi_j) = (f, \Phi_j),\quad \forall \, j=1,2,\cdots,N,\\ \sum_{i=1}^{N}u_i a(\Phi_i, \Phi_j) = (f,\Phi_j),\quad \forall \, j=1,2,\cdots,N. \end{aligned} a(i=1NuiΦi,Φj)=(f,Φj),j=1,2,,N,i=1Nuia(Φi,Φj)=(f,Φj),j=1,2,,N.
K i j = a ( Φ i , Φ j ) , f j = ( f , Φ j ) , K_{ij}=a(\Phi_i,\Phi_j), f_j=(f,\Phi_j), Kij=a(Φi,Φj),fj=(f,Φj), 则有
K U = F , \textcolor{red}{KU=F}, KU=F,
其中 K = ( k i j ) N × N , F = ( f 1 , ⋯   , f N ) T , U = ( u 1 , ⋯   , u N ) T . K=(k_{ij})_{N\times N}, F=(f_1,\cdots, f_N)^T, U=(u_1,\cdots,u_N)^T. K=(kij)N×N,F=(f1,,fN)T,U=(u1,,uN)T.
记误差精度 e ( t ) = U ( t ) − U h ( t ) , e(t)=U(t)-U_h(t), e(t)=U(t)Uh(t), 其中 U ( t ) U(t) U(t) 是精确解, U h ( t ) U_h(t) Uh(t) 是有限元解. 我们在此种模的意义下来度量误差
∥ e ∥ 2 = ∫ 0 1 ∣ e ′ ( t ) ∣ 2   d t . \Vert e\Vert ^2 = \int_0^1|e'(t)|^2\,\mathrm{d}t. e2=01e(t)2dt.
由 \textcolor{red}{Ce a ˊ \acute{a} aˊ 引理} 可知, 存在常数 C > 0 C>0 C>0, s.t.
∥ e ∥ = ∥ U ( t ) − U h ( t ) ∥ ≤ C inf ⁡ v h ∈ V h ∥ U ( t ) − v h ( t ) ∥ , \Vert e\Vert =\Vert U(t)-U_h(t)\Vert \leq C\inf\limits_{v_h\in V_h}\Vert U(t)-v_h(t)\Vert, e=U(t)Uh(t)CvhVhinfU(t)vh(t),

一次有限元

数值格式

将区间 [0,1] 等分为 N 个网格, 记 t i = i / N , t_i =i/N, ti=i/N, 故有 t 0 = 0 , t N = 1. t_0=0,t_N=1. t0=0,tN=1. h i = t i − t i − 1 h_i = t_i-t_{i-1} hi=titi1 为网格尺寸. 因为等分网格, 故 h i = h = 1 / N ,   ∀   i . h_i=h=1/N,\,\forall\,i. hi=h=1/N,i. 取基函数 Φ i ( i = 1 , 2 , ⋯   , N − 1 ) \Phi_i(i=1,2,\cdots,N-1) Φi(i=1,2,,N1) 为分片线性函数, 即
Φ i ( t ) = { t − t i − 1 h , t ∈ ( t i − 1 , t i ] , t i + 1 − t h , t ∈ ( t i , t i + 1 ] , 0 , o t h e r w i s e . \Phi_i(t)=\left\{ \begin{aligned} &\frac{t-t_{i-1}}{h},& t\in (t_{i-1}, t_i],\\ &\frac{t_{i+1}-t}{h},&t\in (t_i,t_{i+1}],\\ &0,&otherwise. \end{aligned} \right. Φi(t)=htti1,hti+1t,0,t(ti1,ti],t(ti,ti+1],otherwise.
令 [K_{ij}=\int_0^1 \Phi_i’(t)\Phi_j’(t)+\Phi_i(t)\Phi_j(t),dt,] 经计算有
K i j = { 0 , ∣ i − j ∣ > 1 , 2 h + 2 3 h , i = j , − 1 h + 1 6 h , o t h e r w i s e . K_{ij}=\left\{\begin{aligned} &0,&|i-j|>1,\\ &\frac{2}{h}+\frac{2}{3}h,&i=j,\\ &-\frac{1}{h}+\frac{1}{6}h,&otherwise. \end{aligned} \right. Kij=0,h2+32h,h1+61h,ij>1,i=j,otherwise.
f j = ∫ 0 1 ( π 2 + 1 ) sin ⁡ π t   Φ j ( t )   d t , f_j = \int_0^1 (\pi^2+1)\sin \pi t \,\Phi_j(t)\,\mathrm{d} t, fj=01(π2+1)sinπtΦj(t)dt,
u = [ u 1 , ⋯   , u N − 1 ] T u=[u_1,\cdots,u_{N-1}]^T u=[u1,,uN1]T, F = [ f 1 , ⋯   , f N − 1 ] T , F = [f_1,\cdots,f_{N-1}]^T, F=[f1,,fN1]T, 求解线性方程组
K u = F , Ku=F, Ku=F,
便可用追赶法求得方程的数值解 U h ( t ) = ∑ i = 1 N − 1 u i Φ i ( t ) . U_h(t)=\sum_{i=1}^{N-1}u_i\Phi_i(t). Uh(t)=i=1N1uiΦi(t).
解常微分方程, 容易求得问题的解为
U ( t ) = sin ⁡ π t . U(t)=\sin \pi t. U(t)=sinπt.
利用追赶法解线性方程组, 结果为
在这里插入图片描述

误差估计

仅需考虑插值误差估计即可. 事实上, 记 ω ( t ) = U − Π U ( t ) , \omega(t)=U-\Pi U(t), ω(t)=UΠU(t), 我们有
∥ e ∥ 2 ≤ ∥ U − Π U ( t ) ∥ 2 = ∫ 0 1 ∣ ω ′ ( t ) ∣ 2   d t = ∑ i = 1 N ∫ t i − 1 t i ∣ ω ′ ( t ) ∣ 2   d t = ∑ i = 1 N ∫ t i − 1 t i ∣ ω ′ ( t ) − ω ′ ( ξ ) ∣ 2   d t = ∑ i = 1 N ∫ t i − 1 t i ( ∫ ξ t ∣ ω ′ ′ ( s ) ∣   d s ) 2   d t = ∑ i = 1 N ∫ t i − 1 t i ( ∫ ξ t ∣ U ′ ′ ( s ) ∣   d s ) 2   d t ≤ ∑ i = 1 N ∫ t i − 1 t i ( ∫ t i − 1 t i ∣ U ′ ′ ( s ) ∣   d s ) 2   d t = ∑ i = 1 N h i ( ∫ t i − 1 t i ∣ U ′ ′ ( s ) ∣   d s ) 2 ≤ ∑ i = 1 N h i ( ( ∫ t i − 1 t i ∣ U ′ ′ ( η ) ∣ 2   d η ) 1 / 2 ( ∫ t i − 1 t i 1 2   d η ) 1 / 2 ) 2 ≤ ∑ i = 1 N h i 2 ∫ t i − 1 t i U ′ ′ ( η ) 2   d η ≤ C h 2 , \begin{aligned} \Vert e\Vert ^2 &\leq \Vert U-\Pi U(t)\Vert^2=\int_{0}^{1}|\omega'(t)|^2\,\mathrm{d}t = \sum_{i=1}^N\int_{t_{i-1}}^{t_i}|\omega'(t)|^2\,\mathrm{d}t\\ &=\sum_{i=1}^N\int_{t_{i-1}}^{t_i}|\omega'(t)-\omega'(\xi)|^2\,\mathrm{d}t = \sum_{i=1}^N\int_{t_{i-1}}^{t_i}\bigg(\int_{\xi}^{t}|\omega''(s)|\,\mathrm{d}s\bigg)^2\,\mathrm{d}t\\ & = \sum_{i=1}^N\int_{t_{i-1}}^{t_i}\bigg(\int_{\xi}^{t}|U''(s)|\,\mathrm{d}s\bigg)^2\,\mathrm{d}t\leq \sum_{i=1}^N\int_{t_{i-1}}^{t_i}\bigg(\int_{t_{i-1}}^{t_i}|U''(s)|\,\mathrm{d}s\bigg)^2\,\mathrm{d}t\\ &=\sum_{i=1}^Nh_i\bigg(\int_{t_{i-1}}^{t_i}|U''(s)|\,\mathrm{d}s\bigg)^2\\ &\leq \sum_{i=1}^{N}h_i\bigg(\big(\int_{t_{i-1}}^{t_i}|U''(\eta)|^2\,\mathrm{d}\eta\big)^{1/2}\big(\int_{t_{i-1}}^{t_i}1^2\,\mathrm{d}\eta\big)^{1/2}\bigg)^2\\ &\leq \sum_{i=1}^Nh_i^2\int_{t_{i-1}}^{t_i}U''(\eta)^2\,\mathrm{d}\eta\leq Ch^2, \end{aligned} e2UΠU(t)2=01ω(t)2dt=i=1Nti1tiω(t)2dt=i=1Nti1tiω(t)ω(ξ)2dt=i=1Nti1ti(ξtω(s)ds)2dt=i=1Nti1ti(ξtU(s)ds)2dti=1Nti1ti(ti1tiU(s)ds)2dt=i=1Nhi(ti1tiU(s)ds)2i=1Nhi((ti1tiU(η)2dη)1/2(ti1ti12dη)1/2)2i=1Nhi2ti1tiU(η)2dηCh2,
∥ e ∥ ≤ C h , \Vert e\Vert \leq Ch, eCh,
具有一阶精度.
数值实验结果如下图所示, 使用 polyfit 拟合图像斜率有 k = − 0.9991 , k=-0.9991, k=0.9991,
即一次元的数值误差阶为 0.9991.
在这里插入图片描述

MATLAB程序

%% main program
n = 10;
err = zeros(8, 1);

% Linear interpolation
index = zeros(8, 1);
for i=1:8
    index(i) = 2^(i-1) * n;
end
for i = 1:8
    N = index(i);
    h = 1 / N;
    x = 0:h:1;
    xx = 0:1/1000:1;
    exact_solu = sin(pi.*xx);
    K = zeros(N-1);
    K = K + diag(ones(N-1,1).*(2/h+2/3*h), 0) + diag((h/6-1/h).*ones(N-2,1), 1) + diag((h/6-1/h).*ones(N-2,1), -1);
    F = (1+pi^2)/(h*pi^2) * (2.*sin(pi.*x(2:N))-sin(pi.*x(1:N-1))-sin(pi.*x(3:N+1)))';
    K = sparse(K);
    coeff = K\F;
    solu = [0; coeff; 0];
    figure()
    plot(x', solu, 'o--',xx', exact_solu, 'g--');
    legend('numerical solution', 'exact solution')
    xlabel('x')
    ylabel('U');
    xlim([-0.05,1.05])
    ylim([-0.05,1.05]);
    title(['numerical solution and exact solution N=',num2str(index(i))]);
 
% calculate the error
    du = solu(2:N+1) - solu(1:N);
    y1 = sin(2.*pi.*x);
    dy1 = y1(2:N+1) - y1(1:N);
    y2 = sin(pi.*x);
    dy2 = y2(2:N+1) - y2(1:N);
    error = pi^2*h/2*ones(1,N) + du'.^2/h + pi/4*dy1 - 2/h*dy2.*du';
    err(i) = sqrt(sum(error));
end
figure()
plot(log2(err),'o--');
title('误差阶')
xlabel('N')
ylabel('$log_{2}Error$', 'Interpreter','LaTex')
xlim([0.8,8.2])

axis on;
set(gca,'xtick',1:1:8);
set(gca,'xticklabel',{5,10,20,40,80,160,320,640});

[order,~] = polyfit(1:1:(length(err)), log2(err)', 1);
disp(order)

下一篇我们将介绍这个问题的二次元解法,详见:
https://blog.csdn.net/waitingwinter/article/details/106244868

  • 3
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
### 回答1: 丁同仁常微分方程pdf是指丁同仁编写的关于常微分方程的pdf版本的教材或学习资源。常微分方程是数学中的一个重要分支,研究描述变化率与未知函数之间关系的方程。这个pdf可能包含了丁同仁在教学过程中总结归纳的常微分方程的相关知识点和题方法。 在这份pdf中,可能会介绍常微分方程的定义、分类和基本理论,例如一阶常微分方程、高阶常微分方程、线性常微分方程等。此外,还可能包含一些常微分方程求解方法和技巧,如变量分离法、齐次方程、线性方程等。这些方法可以帮助学习者决不同类型的常微分方程问题。 丁同仁常微分方程pdf可能还会包含一些实例和习题,以帮助读者巩固所学的知识和提高题能力。通过反复练习,读者可以加深对常微分方程的理,并学会在实际问题中应用所学的方法。 总的来说,丁同仁常微分方程pdf可能是一份系统全面的常微分方程学习资源,旨在帮助学习者全面了和掌握常微分方程的理论和题技巧。读者可以通过这份pdf来自主学习和提高自己的数学水平。 ### 回答2: 丁同仁常微分方程pdf指的是由丁同仁编写的一本关于常微分方程的电子书。在这本书中,丁同仁通过详细的讲和丰富的例子,介绍了常微分方程的基本概念、理论和应用。 首先,丁同仁在书中系统地介绍了常微分方程的基础知识,包括一阶微分方程、二阶线性微分方程和高阶线性微分方程等。他通过引入变量分离、常数变异和特征方程等方法,详细讲了如何这些不同类型的微分方程。 其次,丁同仁在书中还讲常微分方程的理论和性质。他介绍了一些基本的定理和方法,如皮卡逼近定理、唯一性定理和稳定性理论等。通过这些理论的讲,读者能够更加深入地理和应用微分方程的知识。 最后,丁同仁在书中还以案例的形式介绍了常微分方程的应用领域。他讲了微分方程在物理、生物、经济等领域的具体应用,并给出了一些实际问题的求解方法和步骤。这些案例的介绍不仅提供了实际问题的决思路,同时也帮助读者将理论知识与实际问题相结合。 总的来说,丁同仁常微分方程pdf是一本全面介绍常微分方程的电子书。通过阅读这本书,读者可以系统地学习常微分方程的基本知识、理论和应用。无论是对于初学者还是有一定基础的读者,这本书都是一本很好的学习资料。 ### 回答3: 丁同仁常微分方程pdf是一本以常微分方程为主题的电子书,由丁同仁编写。 常微分方程是研究函数的导数与未知函数本身之间关系的数学分支。常微分方程广泛应用于物理学、工程学、经济学等领域,是许多科学和工程问题的数学模型。丁同仁的这本书主要介绍了常微分方程的基本理论、法和应用。 该书的内容包括常微分方程的分类、一阶常微分方程法、高阶常微分方程法、常微分方程组,以及一些常微分方程的应用实例。其中,丁同仁从易到难、从基础到深入地阐述了常微分方程的基本概念、基本法和常见应用。这样的安排使得读者可以系统地学习和掌握常微分方程的理论和实际应用。 丁同仁常微分方程pdf通过电子书的形式发布,可以方便读者在线浏览和下载。读者可以通过阅读该书,深入了常微分方程的基本知识,提高题能力,为相关领域的学习和实践提供支持。 总之,丁同仁常微分方程pdf是一本全面介绍常微分方程的电子书,对于学习和掌握常微分方程的人士来说是一本有价值的参考资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值