以下是一段解偏微分方程组的程序,谁能告诉我用的是什么方法解的,我怎么查了好多资料都看不出来啊,谢谢大家了!
6 t6 x U! u Y0 U, j7 W
- {: A7 G* E) O6 v% s% % Programme pour leopard % # j( m% h4 {0 f h, Y
global d K F N
; ]+ ~- [$ B+ V4 TN = 64 # r0 P0 y* m2 D1 q' R0 w
dx = 1/N;
) s0 |) C4 S+ H' P2 Vd=10 K=0.01 F=0.1 3 x+ L: E/ M) x* i) M
dt=0.001;
+ G% I, i t! {* [7 nU=rand(N); V=rand(N); + Z6 m1 N2 V2 h3 ?
FourU=fft2(U); FourV=fft2(V);
$ t$ z, _1 P$ r8 T0 Z3 V8 Q5 ifor 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
- R c, k" k( l$ n* w3 r$ IU=real(ifft2(FourU)); V=real(ifft2(FourV));
% d3 v$ K( `0 ^. J: Rcompteur=0; , {+ e% F& O4 T( z8 ]8 \. O
for t=0:dt:1, ; i. z$ R9 I! l- G7 [
format long max(max(U)) max(max(V)) min(min(V)) 5 w: T$ X5 v! o4 O5 f7 h- p f. h' L
FourU=fft2(U); FourV=fft2(V); % n2 `; Z: l) s0 q1 P) L
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 - O4 ^9 S3 u$ ?5 b
U=real(ifft2(FourU)); V=real(ifft2(FourV)); - d3 D f2 }( J, K/ P5 T4 o
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 5 L M! G) h6 V3 t. _
U = U + dt*P; V = V + dt*G;
2 y* w" p, n" J& M7 mfor i=1:N, for j=1:N, W(i,j)=V(i,j); M(i,j)=U(i,j); end end ) e; U6 {; i8 b; z# d' W
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
* V* m% Y6 _9 n y" Icompteur = compteur +1;
! Q. Q& D7 L: o0 Yend %------------------------------------------
|