|
以下是一段解偏微分方程组的程序,谁能告诉我用的是什么方法解的,我怎么查了好多资料都看不出来啊,谢谢大家了!
9 Y% S2 V1 w) T% k8 s
! m1 M W) A1 D( l$ z% % Programme pour leopard %
# Q4 Y/ E0 m) K7 @) kglobal d K F N
0 I" z$ f7 d& E( [8 S6 o0 cN = 64
9 F H% Q( Z/ T" }- B$ ^dx = 1/N;
$ k+ O1 ]8 p6 ]! @( Q4 U% Dd=10 K=0.01 F=0.1 : O8 K6 ~9 R/ {8 S! ^7 P% m! S/ N. L
dt=0.001;
; F/ `9 m" C- L# B. Z4 T- Z6 e2 u1 iU=rand(N); V=rand(N);
1 K- [" D) z0 F4 y6 KFourU=fft2(U); FourV=fft2(V);
5 ^+ W: c+ Y. `$ g$ ~8 x7 Q" gfor 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
& p0 M3 a6 H) B9 [9 uU=real(ifft2(FourU)); V=real(ifft2(FourV));
& p" K4 ~: a j: ?) `( tcompteur=0; - @' j' A& K2 }# ~+ D; D) Q! X
for t=0:dt:1, ( T% [5 |- u) R% h6 f
format long max(max(U)) max(max(V)) min(min(V))
O1 C* J B( \) _2 IFourU=fft2(U); FourV=fft2(V);
; M: ~* s+ z ^6 \( D" efor 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
) ^ @5 U2 ~, y7 |& F$ s. PU=real(ifft2(FourU)); V=real(ifft2(FourV));
: |0 y: T# \0 E4 v) ofor 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 # d- D1 u, U8 a/ O
U = U + dt*P; V = V + dt*G; 1 U# |' T) {0 T( k( f1 R8 E
for i=1:N, for j=1:N, W(i,j)=V(i,j); M(i,j)=U(i,j); end end
/ h; ~/ Y$ F, {, }8 v' P4 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
$ A. l7 x$ u k k. H. k! A5 d( Q( b O5 fcompteur = compteur +1; : Q2 k& f" K; G4 {7 K
end %------------------------------------------
|