以下是一段解偏微分方程组的程序,谁能告诉我用的是什么方法解的,我怎么查了好多资料都看不出来啊,谢谢大家了!
%
% Programme pour leopard
%
global d K F N
) F$ y8 L* \2 z; X) a" Q" h5 QN = 64
* q" f+ \7 B/ v6 A) Ddx = 1/N;
d=10
K=0.01
F=0.1
dt=0.001;
U=rand(N);
V=rand(N);
FourU=fft2(U);
FourV=fft2(V);
for i=1:N,
for j=1:N,
i0=i-1;
j0=j-1;
if i0 > N/2
i0=1+N-i;
end
if j0 > N/2
j0=1+N-j;
end
FourU(i,j)=FourU(i,j)/(1+(i0*i0+j0*j0)/8);
FourV(i,j)=FourV(i,j)/(1+(i0*i0+j0*j0)/8);
end
end
U=real(ifft2(FourU));
V=real(ifft2(FourV));
compteur=0;
1 m9 s- w9 C3 J% X n, }for t=0:dt:1,
format long
max(max(U))
max(max(V))
min(min(V))
FourU=fft2(U);
FourV=fft2(V);
for i=1:N,
for j=1:N,
i0=i-1;
j0=j-1;
if i0 > N/2
i0=1+N-i;
end
if j0 > N/2
j0=1+N-j;
end
FourU(i,j)=FourU(i,j)*exp(-dt*(i0*i0+j0*j0)/10);
FourV(i,j)=FourV(i,j)*exp(-d*dt*(i0*i0+j0*j0)/10);
end
end
U=real(ifft2(FourU));
V=real(ifft2(FourV));
for i=1:N,
for j=1:N,
P(i,j)=-U(i,j)*V(i,j)^2+F*(1-U(i,j));
G(i,j)=U(i,j)*V(i,j)^2-(F+K)*V(i,j);
end
end
U = U + dt*P;
V = V + dt*G;
for i=1:N,
for j=1:N,
W(i,j)=V(i,j);
M(i,j)=U(i,j);
end
end
if rem(compteur,10) == 0
clf;
if W>0.6
image(100*W-60);
else
image(100*W)
end
if M>0.6
image(100*M-60);
else
image(100*M);
end
drawnow;
end
compteur = compteur +1;
- m* Z# x8 Y9 nend
%------------------------------------------
| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |