|
以下是一段解偏微分方程组的程序,谁能告诉我用的是什么方法解的,我怎么查了好多资料都看不出来啊,谢谢大家了!
' X$ I2 @' T: b B& ~+ ?! Z0 i ]' B0 v/ p; \
% % Programme pour leopard %
5 ?" i5 O1 J* h; `) H1 H: nglobal d K F N " Q. j: E+ J% U( ^
N = 64
2 K; y4 }# d2 }3 fdx = 1/N; 1 V4 m# x# r) T6 f/ W, b
d=10 K=0.01 F=0.1 . z* ~$ Z9 @! f" ~+ O! g
dt=0.001;
. C9 A% P) ~6 f' q0 ~U=rand(N); V=rand(N); 3 ~; q" {9 [* _* ~
FourU=fft2(U); FourV=fft2(V);
+ j% \ r0 m3 ^/ L- a: Ofor 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 0 @- z( {' H* ]' o# |+ s' f( r
U=real(ifft2(FourU)); V=real(ifft2(FourV));
' m9 f% T( `/ H3 ?" z; pcompteur=0; 9 x& P% }, w! p
for t=0:dt:1,
) G, g: p' t# }2 F# u; iformat long max(max(U)) max(max(V)) min(min(V)) 2 } f$ S8 ?* @% c" c& R# B4 k
FourU=fft2(U); FourV=fft2(V); * v$ p/ f6 G6 D& H" g7 }) f0 ?
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 - c5 c) ^6 M1 k; c% O' C4 p, X
U=real(ifft2(FourU)); V=real(ifft2(FourV));
* [3 c" ?1 Z* M& Q% L$ _1 L4 C3 I' Xfor 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
4 `6 p8 G- a& [" TU = U + dt*P; V = V + dt*G; 0 y) b) s3 b! `0 t
for i=1:N, for j=1:N, W(i,j)=V(i,j); M(i,j)=U(i,j); end end 6 o1 T6 O& j. z- V& y
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
( Y- N- ]! z+ [$ O0 ucompteur = compteur +1; $ W4 X' }7 K A- f* X
end %------------------------------------------
|