|
以下是一段解偏微分方程组的程序,谁能告诉我用的是什么方法解的,我怎么查了好多资料都看不出来啊,谢谢大家了!
( j! \/ |0 H3 V3 ^
5 C! a- T7 Z! `& o% % Programme pour leopard % & e* u( n9 v1 p* ^1 e
global d K F N * B! ]& g7 |4 X( B( N
N = 64
. @8 ?: y8 C/ j+ f; W) G* s0 ^dx = 1/N; 3 d6 T3 |( R- ~5 a
d=10 K=0.01 F=0.1
5 h1 D0 E" n+ y dt=0.001;
. V' t" ?* F2 W+ o: l2 M! RU=rand(N); V=rand(N);
: \% y _$ Y/ @+ @9 R3 b7 i: O7 ]FourU=fft2(U); FourV=fft2(V); $ Z: \' H- |4 J5 a. H8 N# f7 C
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
' X0 O) K1 S" e9 e6 cU=real(ifft2(FourU)); V=real(ifft2(FourV));
/ I0 D1 ?! g1 qcompteur=0; * {+ v7 o/ K0 o- p
for t=0:dt:1,
8 h: I. I& b H4 n5 V }2 [; dformat long max(max(U)) max(max(V)) min(min(V))
7 W5 }+ g7 E2 W9 [" j) ?* |& f" [' [FourU=fft2(U); FourV=fft2(V); ; v7 b9 R J: 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
: o9 u, e+ F5 L! s) j7 h# SU=real(ifft2(FourU)); V=real(ifft2(FourV));
, \; Y% `2 {8 }4 mfor 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
9 C: K: l9 _' j* u0 AU = U + dt*P; V = V + dt*G; : T J7 K; H- L7 g; Y
for i=1:N, for j=1:N, W(i,j)=V(i,j); M(i,j)=U(i,j); end end
) g V1 H+ d" g0 z2 t7 Hif 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
9 U! ]8 y; P F5 y$ u4 G) X/ f/ lcompteur = compteur +1; % J/ G+ {. T5 M( Q* Z
end %------------------------------------------
|