以下是一段解偏微分方程组的程序,谁能告诉我用的是什么方法解的,我怎么查了好多资料都看不出来啊,谢谢大家了! 9 G4 m7 O* `2 U5 O
( c; V" A! }* a; R0 U/ G4 R5 B
% % Programme pour leopard %
1 [! @ c' H( t$ dglobal d K F N ; T7 z$ p, c* W( t
N = 64
7 g4 g( M( |, l1 W) H0 J$ D5 ldx = 1/N;
* T, Q" g7 P' |/ Z4 id=10 K=0.01 F=0.1 9 I* T9 c u' n
dt=0.001;
, ^, T. L! H/ w6 D0 x; [" p7 {4 }U=rand(N); V=rand(N); 1 j5 H' I( c, [8 {% u
FourU=fft2(U); FourV=fft2(V);
! y* [( g/ ?, m0 e) B% A7 lfor 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 $ A6 C" L5 k$ P# @, v( C3 y
U=real(ifft2(FourU)); V=real(ifft2(FourV));
+ h |' E. J$ ]0 S7 }: ], Q8 v3 [compteur=0; - C; I" I6 a- W' m; B+ D( C) W
for t=0:dt:1, 1 e' ?5 ^ w& ~
format long max(max(U)) max(max(V)) min(min(V)) 2 H# y4 ~5 F( i! [% i3 d
FourU=fft2(U); FourV=fft2(V); - z( L* I" h/ q# S
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
3 V G2 d2 G1 U+ QU=real(ifft2(FourU)); V=real(ifft2(FourV)); % U$ ]$ T9 O |9 n6 d
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 7 n2 O' X! |) n9 }) G4 h3 F
U = U + dt*P; V = V + dt*G;
* z+ S& Z9 Q# x; P1 T1 x4 rfor i=1:N, for j=1:N, W(i,j)=V(i,j); M(i,j)=U(i,j); end end
4 A7 L* |- p6 {* [7 \1 p9 r. Lif 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
) ^ P. b5 Q) ]2 ]1 F, Zcompteur = compteur +1;
7 L/ P* j% ~' nend %------------------------------------------
|