matlab有限差分法编程波导_有限差分法的Matlab程序

fori=1:n-1 x(i)=a+i*h;

function FD_PDE(fun,gun,a,b,c,d)

%

用有限差分法求解矩形域上的

Poisson

方程

tol=10^(-6); %

误差界

N=1000; %

最大迭代次数

n=20; % x

轴方向的网格数

m=20; % y

轴方向的网格数

h=(b-a)/n; % x

轴方向的步长

l=(d-c)/m; % y

轴方向的步长

for i=1:n-1

x(i)=a+i*h;

end %

定义网格点坐标

for j=1:m-1

y(j)=c+j*l;

end %

定义网格点坐标

u=zeros(n-1,m-1); %

u

赋初值

%

下面定义几个参数

r=h^2/l^2;

s=2*(1+r);

k=1;

%

应用

Gauss-Seidel

法求解差分方程

while k%26lt;=N

%

对靠近上边界的网格点进行处理

%

对左上角的网格点进行处理

z=(-h^2*fun(x(1),y(m-1))+gun(a,y(m-1))+r*gun(x(1),d)+r*u(1,m-2)+u(2,m

-1))/s;

norm=abs(z-u(1,m-1));

u(1,m-1)=z;

%

对靠近上边界的除第一点和最后点外网格点进行处理

for i=2:n-2

z=(-h^2*fun(x(i),y(m-1))+r*gun(x(i),d)+r*u(i,m-2)+u(i+1,m-1)+u(i-1,m-

1))/s;

if abs(u(i,m-1)-z)%26gt;norm;

norm=abs(u(i,m-1)-z);

end

u(i,m-1)=z;

end

%

对右上角的网格点进行处理

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值