Matlab提供了两种方法解决PDE问题 一是pdepe函数可以求解一般的PDEs,具有较大的通用性但是只支持命令行调用二是pde工具箱,可以求解特殊的pde问题,但是具有较大的局限性比如只能求解二阶的pde问题,并且不能解决偏微分方程组,但他提供了GUI界面。简化了操作并且可以通过FILE->Save As生成M文件
@pdeFu Pde函数的标准形式如下对应函数@pedFu
所以函数的形式为[ c,f,s ] = pedFu( x,t,u,du );
@pdebc 是pde函数的边界条件描述函数
对应形式如下:
[ pa,qa,pb,qb ] = pedbc( xa,ua,xb,ub,t)
@pedic初值条件函数
赋予微分方程的初值
对应形式如下u0=[1;0];
使用matlab绘制如下图
代码如下
clc
clear
x=0:0.05:1;
t=0:0.05:2;
m=0;
sol=[];
sol=pdepe(m,@pedFu,@pedic,@pedbc,x,t);
figure('numbertitle','off','name','PDE Demo ¡ª¡ªby matlabsy');
subplot(2,1,1);
surf(x,t,sol(:,:,1))
title('The Solution of u_1')
xlabel('X')
ylabel('Y')
zlabel('U')
subplot(2,1,2);
surf(x,t,sol(:,:,2))
title('The Solution of u_2')
xlabel('X')
ylabel('Y')
zlabel('U')
pedic.m
function u0 = pedic( x )
%PEDIC 初值条件函数
u0=[1;0];
end
pedfu.m
function [ c,f,s ] = pedFu( x,t,u,du )
%pedfu 求解微分方程
c=[1;1];
f=[0.024*du(1);10.17*du(2)];
temp=u(1)-u(2);
s=[-1;1].*(exp(5.73*temp)-exp(-11.46*temp));
end
pedbc.m
function [ pa,qa,pb,qb ] = pedbc( xa,ua,xb,ub,t )
%PDEBC 边界条件函数
% a上边界 b下边界
pa=[0;ua(2)];
qa=[1;0];
pb=[ub(1)-1;0];
qb=[0;1];
end
网友评论