MATLAB偏微分方程求解

题目:用MATLAB求解偏微分方程 主讲人: 班级 : 时间 : 基础知识预习 微分方程的MATLAB求解包含 1:常微分方程的MATLAB求解(上         节课已经讲过)这里不再赘述。 2:偏微分方程的MATLAB求解(本   次教学内容) 偏微分方程概念 偏微分方程(Partial Differential Equation,简称PDE)指含有未知函数及其偏导数的方程。描述自变量、未知函数及其偏导数之间的关系。 偏微分方程分为①线性偏微分方程式与②非线性偏微分方程式,常常有几个解而且涉及额外的边界条件。 求解偏微分方程的方法 求解偏微分方程的数值方法

: 1. 有限元法(Finite Element Method, FEM)--- hp-FEM 2. 有限体积法(Finite Volume Method, FVM) 3. 有限差分法(Finite Difference Method, FDM)。 其它:广义有限元法(Generalized Finite Element Method, FFEM)、扩展有限元法(eXtended Finite Element Method, XFEM)、无网格有限元法(Meshfree Finite Element Method)、离散迦辽金有限元法(Discontinuous Galerkin Finite Element Method, DGFEM)等。 MATLAB解偏微分方程 MATLAB提供了两种方法解决PDE 问题:①pdepe()函数,它可以求解一般的PDEs,具有较大的通用性,但只支持命令行形式调用。 ②PDE 工具箱,可以求解特殊PDE 问题,PDEtool 有较大的局限性,比如只能求解二阶PDE 问题,并且不能解决偏微分方程组,但是它提供了GUI界面,从繁杂的编程中解脱出来了,同时还可以通过File->Save As直接生成M代码 使用pdeval()直接计算某个点的函数值??? 一般偏微分方程组(PDEs)的MATLAB求解 直接求解一般偏微分方程(组),它的调用格式为sol=pdepe(m,@pdefun,@pdeic,@pdebc,x,t) 【输入参数】(1) @pdefun:是PDE 的问题描述函数,它必须换成下面的标准形式 PDE 就可以编写下面的入口函数 [c,f,s]=pdefun(x,t,u,du) m,x,t就是对应于(式1)中相关参数和自变量,du是u的一阶导数,由给定的输入变量即可表示出出c,f,s这三个函数 【输入参数】(2) @pdeic:是PDE 的初值条件,必须化为下面的形式 我们使用下面的简单的函数来描述为u0=pdeic(x) 【输入参数】(3) @pdebc:是PDE的边界条件描述函数,必须先化为下面的形式 于是边值条件可以编写下面函数描述为[pa,qa,pb,qb]=pdebc(x,t,u,du)其中a 表示下边界,b 表示下边界 【输入参数】(4) m:就是对应于(式1)中相关参数 x,t:就是对应于(式1)中自变量 【输出参数】 sol:是一个三维数组,sol(:,:,i)表示ui的解,换句话说uk对应x(i)和t(j)时的解为sol(i,j,k) 实例讲解(题目) 例: 实例讲解(解法) 【解】第一步根据(1)对照给出的偏微分方程,则原方程可以改写为 输入参数(1’)目标PDE函数 %% 目标PDE函数 function [c,f,s]=pdefun (x,t,u,du) c=[1;1]; f=[0.024*du(1);0.17*du(2)]; temp=u(1)-u(2); s=[-1;1].*(exp(5.73*temp)-exp(-11.46*temp)); 输入参数(2’)初值条件 初值条件改写为 %% 初值条件函数 function u0=pdeic(x) u0=[1;0]; 输入参数(3’)边界条件 边界条件改写为 %% 边界条件函数 function [pa,qa,pb,qb]=pdebc(xa,ua,xb,ub,t) %a表示左边界,b表示右边界 pa=[0;ua(2)];qa=[1;0]; pb=[ub(1)-1;0];qb=[0;1]; (4')主调函数 clc x=0:0.05:1; t=0:0.05:2; m=0; sol=pdepe(m,@pdefun,@pdeic,@pdebc,x,t); figure('numbertitle','off','name','PDE Demo——by Matlabsky')%创建个窗口,窗口名字是name后边的名字'NumberTitle','off'是关掉默认显示名字。 subplot(21