[原创]偏微分方程数值解法的MATLAB源码【更新完毕】
说明:由于偏微分的程序都比较长,比其他的算法稍复杂一些,所以另开一贴,专门上传偏微分的程序谢谢大家的支持!
其他的数值算法见:
..//Announce/Announce.asp?BoardID=209&id=8245004
1、古典显式格式求解抛物型偏微分方程(一维热传导方程)
function [U x t]=PDEParabolicClassicalExplicit(uX,uT,phi,psi1,psi2,M,N,C)
%古典显式格式求解抛物型偏微分方程
%[U x t]=PDEParabolicClassicalExplicit(uX,uT,phi,psi1,psi2,M,N,C)
%
%方程:u_t=C*u_xx 0 <= x <= uX,0 <= t <= uT
%初值条件:u(x,0)=phi(x)
%边值条件:u(0,t)=psi1(t), u(uX,t)=psi2(t)
%
%输出参数:U -解矩阵,第一行表示初值,第一列和最后一列表示边值,第二行表示第2层……
% x -空间变量
% t -时间变量
%输入参数:uX -空间变量x的取值上限
% uT -时间变量t的取值上限
% phi -初值条件,定义为内联函数
% psi1 -边值条件,定义为内联函数
% psi2 -边值条件,定义为内联函数
% M -沿x轴的等分区间数
% N -沿t轴的等分区间数
% C -系数,默认情况下C=1
%
%应用举例:
%uX=1;uT=0.2;M=15;N=100;C=1;
%phi=inline('sin(pi*x)');psi1=inline('0');psi2=inline('0');
%[U x t]=PDEParabolicClassicalExplicit(uX,uT,phi,psi1,psi2,M,N,C);
%设置参数C的默认值
if nargin==7
C=1;
end
%计算步长
dx=uX/M;%x的步长
dt=uT/N;%t的步长