matlab怎么利用有限差分拉普拉斯算子

这个例子展示了如何在L形区域上计算和表示有限差分拉普拉斯算子。

工具/原料

  • matlab软件
  • 电脑

方式/步骤

  1. 1

    对于这个示例,NUMGRID数字点在L形域内。SPY函数是一个很是有效的东西,它可以直不雅地显示给定矩阵中非零元素的模式。

    R = 'L'; % Other possible shapes include S,N,C,D,A,H,B

    % Generate and display the grid.

    n = 32;

    G = numgrid(R,n);

    spy(G)

    title('A finite difference grid')

    % Show a smaller version as sample.

    g = numgrid(R,12)

  2. 2

    按“Enter”键。

    得图1、图2所示。

  3. 3

    离散拉普拉斯式

    操纵DELSQ生当作离散的拉普拉斯函数。SPY函数给出了矩阵总体的图形感受。

    D = delsq(G);

    spy(D)

    title('The 5-point Laplacian')

    % Number of interior points

    N = sum(G(:)>0)

  4. 4

    按“Enter”键。

    得图3所示。

  5. 5

    Dirichlet边值问题

    最后,我们解决了稀少线性系统的Dirichlet边值问题。问题如下:

    delsq(u) = 1 in the interior,

      u = 0 on the boundary.

  6. 6

    rhs = ones(N,1);

    if (R == 'N') % For nested dissection, turn off minimum degree ordering.

       spparms('autommd',0)

       u = D\rhs;

       spparms('autommd',1)

    else

       u = D\rhs; % This is used for R=='L' as in this example

    end

  7. 7

    解决方案

    将解决方案映射到网格中,并将其显示为等高线图。

    U = G;

    U(G>0) = full(u(G(G>0)));

    clabel(contour(U));

    prism

    axis square ij

  8. 8

    按“Enter”键。

    得如图4所示。

  9. 9

    此刻显示作为网格图的解决方案。

    colormap((cool+1)/2);

    mesh(U)

    axis([0 n 0 n 0 max(max(U))])

    axis square ij

  10. 10

    按“Enter”键。

    得如图5所示。

原作者:matlab教程举报
  • 发表于 2020-02-12 20:00
  • 阅读 ( 85 )
  • 分类:其他类型

相关问题

0 条评论

请先 登录 后评论