帮助Matlab拉普拉斯方程

时间:2013-05-04 08:05:20

标签: matlab

我试图在我的matlab代码序列中实现拉普拉斯方程,如下所示。我创建了这个LaplaceExplicit.m,因此在同一个中使用了另一个函数numgrid。但是,它显示错误为“输入变量n未定义”。应该做什么?代码如下 -

    function [x,y,T]= LaplaceExplicit(n,m,Dx,Dy)
    echo off;
    numgrid(n,m);
    R = 5.0;
    T = R*ones(n+1,m+1); % All T(i,j) = 1 includes all boundary conditions
    x = [0:Dx:n*Dx];y=[0:Dy:m*Dy]; % x and y vectors
    for i = 1:n % Boundary conditions at j = m+1 and j = 1
    6
    T(i,m+1) = T(i,m+1)+ R*x(i)*(1-x(i));
    T(i,1) = T(i,1) + R*x(i)*(x(i)-1);
    end;
    TN = T; % TN = new iteration for solution
    err = TN-T;
    % Parameters in the solution
    beta = Dx/Dy;
    denom = 2*(1+beta^2);
    % Iterative procedure
    epsilon = 1e-5; % tolerance for convergence
    imax = 1000; % maximum number of iterations allowed
    k = 1; % initial index value for iteration
    % Calculation loop
    while k<= imax
    for i = 2:n
    for j = 2:m
    TN(i,j)=(T(i-1,j)+T(i+1,j)+beta^2*(T(i,j-1)+T(i,j+1)))/denom;
    err(i,j) = abs(TN(i,j)-T(i,j));
    end;
    end;
    T = TN; k = k + 1;
    errmax = max(max(err));
    if errmax < epsilon
    [X,Y] = meshgrid(x,y);
    figure(2);contour(X,Y,T',20);xlabel('x');ylabel('y');
    title('Laplace equation solution - Dirichlet boundary conditions Explicit');
    figure(3);surfc(X,Y,T');xlabel('x');ylabel('y');zlabel('T(x,y)');
    title('Laplace equation solution - Dirichlet boundary conditions Explicit');
    fprintf('Convergence achieved after %i iterations.\n',k);
    fprintf('See the following figures:\n');
    fprintf('==========================\n');
    fprintf('Figure 1 - sketch of computational grid \n');
    fprintf('Figure 2 - contour plot of temperature \n');
    fprintf('Figure 3 - surface plot of temperature \n');
    return
    end;
    end;
    fprintf('\n No convergence after %i iterations.',k);

2 个答案:

答案 0 :(得分:0)

MATLAB将通过标准的查找程序来确定它所代表的内容。首先,它是一个局部变量吗?如果没有,是一个函数或脚本(命令)?这也需要查看一组规定的地方。简单的版本是:首先查看当前目录,然后查看MATLAB路径指定的目录(按顺序)。

因此,如果您编写square_table.m并将其保存在C:\ work \ Moe \ MATLAB中,那么该目录必须是MATLAB路径上的当前工作目录。否则您将收到错误(“未定义的函数或变量”)。

答案 1 :(得分:0)

对不起的人,让我的问题得到解答..这只是初始化和调用另一个.m文件中定义的函数的一些问题。解决了它,现在代码工作正常.. :))