|
以下是一段解偏微分方程组的程序,谁能告诉我用的是什么方法解的,我怎么查了好多资料都看不出来啊,谢谢大家了! 4 C; F- K8 T/ z& ^$ `
3 A9 S/ Q) A0 P7 K) X% m( P. B+ z9 f% % Programme pour leopard %
* n5 ?9 W. m( y* Y7 ^global d K F N
- `" Q" p8 i/ T' ^: JN = 64
8 z0 w& Q$ K5 H7 O: X* P* ddx = 1/N; . C3 X( V3 g& |3 k" Q6 m: {
d=10 K=0.01 F=0.1
/ M: {3 a# }# b z9 R: x dt=0.001; ( n/ x- H! z3 ]* |: \, z
U=rand(N); V=rand(N); ) m3 v- N+ Y0 Y7 h+ S% ~
FourU=fft2(U); FourV=fft2(V); 9 T5 ~5 h# q; A/ Y) [
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 7 X- J: M4 Q5 ^7 d
U=real(ifft2(FourU)); V=real(ifft2(FourV));
9 |. H, O2 X0 J8 H2 ucompteur=0;
6 m8 ^1 J4 c o5 `5 |( _for t=0:dt:1,
7 ?/ o6 O" f. B2 y" zformat long max(max(U)) max(max(V)) min(min(V)) 4 J0 E! u( a) }) T9 W7 X( x, j
FourU=fft2(U); FourV=fft2(V); $ o% _3 A+ F% ^$ _# x9 l9 Q
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
! A# ?& n9 Q8 o, m( j0 H0 F# k( NU=real(ifft2(FourU)); V=real(ifft2(FourV)); 3 y6 d! w; L# }( i" d6 m1 a! a
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 2 n5 q0 m6 |. i- W6 o4 u( d. M% r
U = U + dt*P; V = V + dt*G;
, p( c1 B* F* Y3 hfor i=1:N, for j=1:N, W(i,j)=V(i,j); M(i,j)=U(i,j); end end
) T0 D5 n Q: r( yif 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
# g: p* n# D. F' v, qcompteur = compteur +1;
! a( a1 d3 M6 w4 T) S" kend %------------------------------------------
|