以下是一段解偏微分方程组的程序,谁能告诉我用的是什么方法解的,我怎么查了好多资料都看不出来啊,谢谢大家了!
) e$ b) v2 _& }7 M$ d2 D
/ F( s4 Z" v% U% F4 O7 Z% % Programme pour leopard %
- Y6 W/ w+ u- _% e& xglobal d K F N ) p/ N# r/ v0 l3 ~3 x* ^
N = 64 2 S& {) V; H1 Q. n" D% h/ ?1 u$ y
dx = 1/N; ! B) i i4 N+ c; m5 D% @9 k" |
d=10 K=0.01 F=0.1 ) i+ ?9 \- B3 [* q! w1 {
dt=0.001; # W' @, T! M' Y( u
U=rand(N); V=rand(N);
0 @* `5 _- q/ g* L* CFourU=fft2(U); FourV=fft2(V);
6 I5 E1 ?6 {0 \8 ~2 ?; e1 Bfor 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 L) P- ^( e, A# j' C+ IU=real(ifft2(FourU)); V=real(ifft2(FourV)); ' N! Y# o% p' }- k( D* C* k( q- ?
compteur=0;
' e+ S `3 p' _6 Hfor t=0:dt:1, 7 D3 B- v9 k3 @
format long max(max(U)) max(max(V)) min(min(V))
% Y% l% _ O% z8 [: T* XFourU=fft2(U); FourV=fft2(V); ) m+ E% U; s- ~2 R9 L- B
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 / Y0 y4 C" O+ Q
U=real(ifft2(FourU)); V=real(ifft2(FourV)); 7 F$ f! a2 c5 H8 T# | T" b
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 ) H' p; R1 o/ \8 A
U = U + dt*P; V = V + dt*G; ' u `4 w; c* n% E
for i=1:N, for j=1:N, W(i,j)=V(i,j); M(i,j)=U(i,j); end end * `. O' {/ `, n3 B4 k4 ~" Q
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
) U4 s5 r* T3 F$ S! Acompteur = compteur +1;
: b4 h2 J. j$ k) m7 u2 send %------------------------------------------
|