|
以下是一段解偏微分方程组的程序,谁能告诉我用的是什么方法解的,我怎么查了好多资料都看不出来啊,谢谢大家了!
7 e% F' z; x9 Y6 u- @
# ?; M0 ?4 m+ s/ A. w$ }4 Z% % Programme pour leopard %
9 G/ y, a* y% r. Q; w2 U5 u3 wglobal d K F N 0 e' w! N+ r) \* D; L' o
N = 64
( J# j; ]+ C1 ~2 y3 idx = 1/N; ! R( C- b& R4 _) K& V0 N
d=10 K=0.01 F=0.1
- i& L3 O: p- H5 N& f Q3 O5 L. n dt=0.001; 4 B: H+ y% _: }! N4 L" r; N Y
U=rand(N); V=rand(N); ' m2 o/ I5 O! c) c
FourU=fft2(U); FourV=fft2(V);
5 U+ e$ O* ^3 g4 D: @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 ' A$ q, R5 `$ f+ Z2 q) T" f
U=real(ifft2(FourU)); V=real(ifft2(FourV));
0 U! C( R9 w$ u- G6 t/ L; ncompteur=0;
/ Q3 c/ G2 Z! G, Q7 I- \$ gfor t=0:dt:1,
5 S+ c( k5 D' yformat long max(max(U)) max(max(V)) min(min(V)) / a1 E) v! \# v4 d/ c7 y; F
FourU=fft2(U); FourV=fft2(V);
0 v$ o" i) H+ e: O1 X, R0 v# Ufor 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 % s5 m t- g& L" q- }+ z
U=real(ifft2(FourU)); V=real(ifft2(FourV)); - l9 p5 q1 O; ]2 j
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
" f4 \9 g% g7 F9 A9 sU = U + dt*P; V = V + dt*G; # r& F* }* y: _5 P6 @4 ?5 q# ]
for i=1:N, for j=1:N, W(i,j)=V(i,j); M(i,j)=U(i,j); end end
: I5 W5 M2 E" Sif 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 ( H: e! t# ?3 d$ j" [7 x
compteur = compteur +1;
: A* C6 }7 k D+ ~: Jend %------------------------------------------
|