求matlab高手解答程序,好的话再送200分

来源:百度知道 编辑:UC知道 时间:2024/06/28 06:37:13
程序1:function [uf,vf] = sfn(u,v)
global e b k;
ny = size(u,1);
nx = size(u,2);
uer = [u(:,1),u,u(:,nx)];
uec = [u(1,:);u;u(ny,:)];
ul = uec(3:ny+2,:)+uec(1:ny,:)+uer(:,1:nx)+uer(:,3:nx+2)-4*u;
u3 = u.*u.*u;
uf = (u-u3/3-v)/e + k^2*ul;
vf = e*(u+b-0.5*v);
程序2:
clc
global k b e

nsteps = 2000;

nxy = 100;
u = 5*ones(nxy,1)*([1:nxy]-0.4*nxy)/nxy;
v = 5*(([1:nxy]-0.4*nxy)')*ones(1,nxy)/nxy;

h = 0.04;
e = 0.1;
b = 0.67;

colormap hsv;
set(0,'DefaultSurfaceEdgecolor','none');

k=1;

for i=1:nsteps
[uf,vf] = sfn(u,v);
u = u+h*uf;
v = v+h*vf;
if mod(i,3) == 1
pcolor(u); drawnow;
end
end
两个程序运行后能产生一个动态的螺旋波,基于FHN模型的螺旋波,我只需要大家告诉我每一行程序说一下它都干了什么,即解释下程序就行!满意的话加送200分
谢,什么时候好了送分

先写这么多,待会儿再补充,吃饭去了,回来接着写。。

function [uf,vf] = sfn(u,v)%此函数为自定义的sfn函数,u,v为输入变量
uf、vf为输出变量
global e b k; %定义全局变量 e b k;
ny = size(u,1); %求出矩阵u的行的数目,赋给ny
nx = size(u,2); %求出矩阵u的列的数目,赋给nx;
uer = [u(:,1),u,u(:,nx)];
%构造一个矩阵uer,u(:,1)为矩阵u的第一列; u(:,nx) 为矩阵第最后一列,u就不解释了。
uec = [u(1,:);u;u(ny,:)];
%构造一个矩阵uec,u(1,:)为矩阵u的第一行;u(ny,:)为u最后一行
ul = uec(3:ny+2,:)+uec(1:ny,:)+uer(:,1:nx)+uer(:,3:nx+2)-4*u;
%用矩阵uec的第三行到第(ny+2)行+uec的第一行到第ny行+uer的第一列到第nx列+uer的第三行到(nx+2)列-4*u
u3 = u.*u.*u; %把u的三次方赋给u3
uf = (u-u3/3-v)/e + k^2*ul; %这行不用解释吧,简单的矩阵运算。
vf = e*(u+b-0.5*v); %同上。。
程序2:
clc %清屏
global k b e %定义全局变量k b e

nsteps = 2000; %将2000赋给nsteps

nxy = 100; %100赋给nxy
u = 5*ones(nxy,1)*([1:nxy]-0.4*nxy)/nxy;
%ones(nxy,1)是创建一个nxy*1的矩阵,[1:nxy]是行向量[1 2 3 4 .. nxy]
v = 5*(([1:nxy]-0.4*nxy)')*ones(1,nxy)/nxy; %同上

h = 0.04;
e = 0.1;
b = 0.67;