差分、偏微分方程的解法
这里写目录标题
- 微分方程数值求解——有限差分法
- matlab代码
- 差分法的运用(依旧是连续变量——>离散网格点)
- PDE求解思路
- demo1
- demo2
微分方程数值求解——有限差分法
差分方法又称为有限差分方法或网格法,是求偏微分方程定解问题的数值解中应用 最广泛的方法之一。它的基本思想是:先对求解区域作网格剖分,将自变量的连续变化 区域用有限离散点(网格点)集代替;将问题中出现的连续变量的函数用定义在网格点 上离散变量的函数代替;通过用网格点上函数的差商代替导数,将含连续变量的偏微分 方程定解问题化成只含有限个未知数的代数方程组(称为差分格式)。如果差分格式有 解,且当网格无限变小时其解收敛于原微分方程定解问题的解,则差分格式的解就作为 原问题的近似解(数值解)。因此,用差分方法求偏微分方程定解问题一般需要解决一下问题:
- 选取网络;
由于matlab数组下标从1开始,而离散变量的初值都是从0开始,因此除却初始条件,我们所求的矩阵区域对应的数组下标是 2~ N+1
这点需要注意,像下文中的代码,实际意义上是将时域划分为了length(t)-1个区域,因为下标1对应的是初值,但只求了 2~ N
我写代码时习惯于
-
对微分方程及定解条件选择差分近似,列出差分格式;
-
求解差分格式;
-
讨论差分格式解对于微分方程解的收敛性及误差估计
常微分方程用欧拉法
大部分,下标位置,上标时间
有热源或者是扩散源,连续的、分成很多份、离散地取值,有限多个数来近似一个函数
1,N+1
这里是说算法的尺比,每个算法尺比有要求,就是空间步长与时间步长的比
初始算出 1,1~ N+1,可得到2,2~N,通过 边界条件,可得到 2,1 ~ N+1,继续向上推
求解准备(对矩阵的构造)
左侧矩阵是u关于x的二阶导,但只是先后对于 2~ N的二阶导,要求得 1 ~ N+1 的二阶导,还需要借助边界条件
表达的式子是
matlab代码
改成简单的边界条件
m1=1+0.0*sin(t); %t的函数,两个边界条件 m2=2-0.0*sin(10*t); clc,clear a=1; dx=0.02; x=0:dx:1; dt=0.0001;%0.0001 t=0:dt:1; u=zeros(length(x),length(t)); %行数和x的个数一样 u(:,1)=sin(pi*x);%x的函数,初始函数,第一列 m1=1+0.0*sin(t); %t的函数,两个边界条件 m2=2-0.0*sin(10*t); A=-2*eye(length(x))+diag(ones(1,length(x)-1),1)++diag(ones(1,length(x)-1),-1); %eye 主对角线,单位矩阵 %diag(,1)对角矩阵往上挪1 for n=1:length(t)-1u(:,n+1)=u(:,n)+a^2*dt/dx^2*A*u(:,n);% a^2*(u关于x的二阶导)u(1,n+1)=m1(n+1); %边界条件u(end,n+1)=m2(n+1);end%plot(x,u(:,end),'-bp')[X,T]=meshgrid(t,x);surf(X,T,u)shading interp
差分法的运用(依旧是连续变量——>离散网格点)
由于向前差分有误差,如果我们进行两次向前差分的话,计算的误差可能会增大,因此,第二次偏导我们选择向后差分。即我们混合向前差分、向后差分来近似代替两次偏导。
因此,第二次我们用向后差分
该块内容来自博文
PDE求解思路
古典解、广义解
对于PDE(偏微分方程)来说,如果存在一个函数u uu具有所需要的各阶连续偏导数,将它们带入方程时能使方程成为恒等式,则称这个函数为该方程的解 (这种解又称为古典解)。
用一个充分光滑的初值函数序列来逼近不够光滑的初值函数,前者所对应的解序列的极限就定义为后者所确定的解,称为问题的广义解。
求解ODE思路
求解常微分方程的办法,先求出方程的通解,再用定解条件去确定任意常数。现在,如能找出主方程的通解,再利用定解条件去确定任意函数。
求解PDE思路
求出PDE满足边界条件的足够数目的特解,再利用叠加原理,使之满足初始条件,从而得到混合方程的解。
工具箱求解
demo1
参考博文
demo2
参考博文
matlab文档
总结
以上是生活随笔为你收集整理的差分、偏微分方程的解法的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 变频器LED显示灯闪烁_雷克萨斯LX57
- 下一篇: Kubernetes_授权认证_RBAC