以下是一段解偏微分方程组的程序,谁能告诉我用的是什么方法解的,我怎么查了好多资料都看不出来啊,谢谢大家了!
: f' M9 i2 g/ \" V3 n) |/ x2 R& Z
% % Programme pour leopard % 6 M) {0 g8 p: ]- h+ |
global d K F N : |$ _) ^! T5 g( G9 S
N = 64 * K; L; v2 I! S
dx = 1/N;
9 n+ r' T$ B( I0 [; d y4 u4 e$ _d=10 K=0.01 F=0.1
* K v, O# u0 I& T" p. p% W! P. X dt=0.001; " {0 W% k J. s( o/ v$ |( Z- m, h$ @
U=rand(N); V=rand(N);
- W8 C( u- K8 U& SFourU=fft2(U); FourV=fft2(V); % n" Z/ U4 y0 }7 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 ' I/ x' h; U+ e) a9 k
U=real(ifft2(FourU)); V=real(ifft2(FourV)); 6 V2 p6 Z5 e3 R/ d2 O- L/ P
compteur=0;
+ S. R. f8 j) q2 t1 Sfor t=0:dt:1,
, ~! L. ^4 s L% R) B: Cformat long max(max(U)) max(max(V)) min(min(V)) / ]# Q# l# B9 x5 Z) D, k9 `
FourU=fft2(U); FourV=fft2(V); & n7 ~, f. l0 L7 @: {6 ?; b0 {
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
& n5 V2 ]7 V$ ?* ^5 `8 NU=real(ifft2(FourU)); V=real(ifft2(FourV));
( ^6 r9 |: [: ~1 M; Gfor 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
. Q- r" G/ b1 L" b' s2 _U = U + dt*P; V = V + dt*G;
; t: z! A. E5 k7 tfor i=1:N, for j=1:N, W(i,j)=V(i,j); M(i,j)=U(i,j); end end & K( T' t3 X9 _7 B
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 ) W( S% V9 E0 g) `
compteur = compteur +1; " [8 H, }7 u8 L4 E% Y/ _8 ]
end %------------------------------------------
|