美文网首页
偏微分方程的数值解

偏微分方程的数值解

作者: Saudade_lh | 来源:发表于2018-06-13 15:31 被阅读0次

    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
    

    相关文章

      网友评论

          本文标题:偏微分方程的数值解

          本文链接:https://www.haomeiwen.com/subject/akrzsftx.html