|
以下是一段解偏微分方程组的程序,谁能告诉我用的是什么方法解的,我怎么查了好多资料都看不出来啊,谢谢大家了!
0 E2 o7 p0 o7 z
4 U/ x6 [" S0 K- j& }( ]% % Programme pour leopard %
! m5 |4 F1 M) Rglobal d K F N 0 L3 Q# J( E3 p; f9 i
N = 64
5 h) m2 a$ x1 {+ Wdx = 1/N; , Y+ G% G% l' o: B6 Y* V8 U
d=10 K=0.01 F=0.1
1 E2 }# O- M8 Y dt=0.001; % g. }, Q+ E% h3 W) ]+ {( ?
U=rand(N); V=rand(N);
$ @3 T& G% Y8 x3 qFourU=fft2(U); FourV=fft2(V); 4 T2 b5 } L1 n5 g, 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 4 w0 N: P+ v' `% q. ~, A% Y" l/ R! b1 c
U=real(ifft2(FourU)); V=real(ifft2(FourV)); 6 @, t' V; p3 d+ |" I
compteur=0;
! N% s; R9 M- Nfor t=0:dt:1, ( ?& @1 n1 N9 z5 B3 Q* ~: m! s) s
format long max(max(U)) max(max(V)) min(min(V))
# h- U0 D) [7 ?. y- @* f7 d; K* XFourU=fft2(U); FourV=fft2(V); 9 L4 K n/ R6 \! K: r4 m' 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)*exp(-dt*(i0*i0+j0*j0)/10); FourV(i,j)=FourV(i,j)*exp(-d*dt*(i0*i0+j0*j0)/10); end end
- J S0 C( [9 |* TU=real(ifft2(FourU)); V=real(ifft2(FourV));
. G3 S3 ]" Y8 m5 W( V* G. n$ s" e% pfor 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 t) i9 R+ _: Z
U = U + dt*P; V = V + dt*G; * E3 @( i. M ~
for i=1:N, for j=1:N, W(i,j)=V(i,j); M(i,j)=U(i,j); end end # X, j% k D5 t1 {) _: H
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
, C; U6 I+ W+ I' Tcompteur = compteur +1; $ q6 a6 o l; y) B" I
end %------------------------------------------
|