|
以下是一段解偏微分方程组的程序,谁能告诉我用的是什么方法解的,我怎么查了好多资料都看不出来啊,谢谢大家了!
# z9 c" p4 Z" L1 [% e
8 e) D9 J; |" B* d3 p% % Programme pour leopard %
& g$ y( a }3 ^- p8 y+ a Fglobal d K F N ' A; Q4 {3 D4 \3 K' x6 w. Y
N = 64
9 n0 ]' R: \ C$ a$ k( idx = 1/N;
! ?; i9 J9 r) md=10 K=0.01 F=0.1 6 G* l( ?( D# _5 {
dt=0.001; 5 i: B. ?! \: {% B
U=rand(N); V=rand(N);
0 Y( B$ Q5 t/ T1 I3 U* ?2 LFourU=fft2(U); FourV=fft2(V); ) I7 Y! [' }+ J6 H4 h6 z: a
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 $ m+ n% |+ p; Y4 Q( Y
U=real(ifft2(FourU)); V=real(ifft2(FourV)); $ Y/ _2 ^& E5 m# S; L) K
compteur=0;
7 `- w: W' U' a8 o8 A/ Dfor t=0:dt:1, 6 y6 ^6 A4 _' n& q& V
format long max(max(U)) max(max(V)) min(min(V))
: c7 R3 U. n9 H1 M, ]/ E4 XFourU=fft2(U); FourV=fft2(V);
5 u+ e& s' ^) \% X* {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 n# p$ o1 [! c- {) [1 p3 ?8 GU=real(ifft2(FourU)); V=real(ifft2(FourV)); ' t3 x" Q# {1 g$ w
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 + Z+ D/ V' n# X2 F
U = U + dt*P; V = V + dt*G;
$ G3 O/ `, M Kfor i=1:N, for j=1:N, W(i,j)=V(i,j); M(i,j)=U(i,j); end end 5 ]# Z9 L9 I, U
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
4 @5 m4 u- W9 l, ucompteur = compteur +1; 5 u w& P& j. N1 b, k4 a
end %------------------------------------------
|