MATLAB偏微分方程有限差分法:实习题与算例解析

求解初边值问题

                                             

利用

u_{j}^{n+1} =u_{j}^n +\lambda (u_{j+1}^n -2u_{j}^n +u_{j-1}^n )

     \lambda =\frac{\Delta t}{\Delta x^2 }

并与解析解

比较。要求:

===================

========答案========

%%偏微分方程有限差分法实习题
%算例一
tic%开始计时
clc
clear all
%==================================================
%输入参数
T=[0.01,0.05,0.1]; %结束时间节点
dx=0.1;                 %空间步长
x=0:dx:1;               %空间范围剖分
dt=0.001;              %时间步长
t=0:dt:T(3);            %最大时间范围剖分
lambda=dt/dx/dx;%λ
%==================================================
%解析解
xx=0:0.01:1;
for tt=1:size(T,2) %三个时间节点对应的解析解值
    ff=zeros(1,size(xx,2));
    for i=1:size(xx,2)
        uu=0;
        for j=1:17 %级数累加,十七次即可满足精度要求
            f=sin(j*pi/2)*sin(j*pi*xx(i))*exp(-j*j*pi*pi*T(tt))/j^2;
            uu=uu+f;
        end
        ff(i)=8*uu/pi/pi;
    end
    subplot(1,3,tt)
    hold on
    plot(xx,ff,'b-','LineWidth',2)
end

%==================================================
%差分格式解
u=zeros(size(t,2),size(x,2)); %给矩阵提前分配内存
u(1,:)=2*x.*(x<=0.5)+2*(1-x).*(x>0.5);%初始条件
for n=2:size(t,2)
        for j=2:size(x,2)-1
            u(n,j)=u(n-1,j)+lambda*(u(n-1,j+1)-2*u(n-1,j)+u(n-1,j-1)); %差分格式
        end
end
%开始绘图
for i=1:size(T,2)
    subplot(1,3,i)
    plot(x,u(T(i)/dt+1,:),'r--','LineWidth',1)
    str{i}=['Analytical T=' num2str(T(i))];
    str1{i}=['Scheme T=' num2str(T(i))];
    legend(str{i},str1{i}) %图例
    title(['λ=',num2str(lambda)]) %标题
    xlim([0 1]);    %画个合适的坐标轴
    ylim([0 1]);
end
%==================================================
toc %计时结束

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空