偏微分方程数值解法的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的步长

x=(0:M)*dx;
t=(0:N)*dt;

r=C*dt/dx/dx;%
步长比
r1=1-2*r;

if r > 0.5
    disp('r > 0.5,
不稳定')
end


%
计算初值和边值
U=zeros(M+1,N+1);
for i=1:M+1
    U(i,1)=phi(x(i));
end
for j=1:N+1
    U(1,j)=psi1(t(j));
    U(M+1,j)=psi2(t(j));
end

%
逐层求解
for j=1:N
    for i=2:M
        U(i,j+1)=r*U(i-1,j)+r1*U(i,j)+r*U(i+1,j);
    end
end

U=U';

%
作出图形
mesh(x,t,U);
title('
古典显式格式,一维热传导方程的解的图像')
xlabel('
空间变量 x')
ylabel('
时间变量 t')
zlabel('
一维热传导方程的解 U')

return;

古典显式格式不稳定情况

 

古典显式格式稳定情况

 

2、古典隐式格式求解抛物型偏微分方程(一维热传导方程)


function [U x t]=PDEParabolicClassicalImplicit(uX,uT,phi,psi1,psi2,M,N,C)
%
古典隐式格式求解抛物型偏微分方程
%[U x t]=PDEParabolicClassicalImplicit(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 -空间变量

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南抖北快东卫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值