|
以下是一段解偏微分方程组的程序,谁能告诉我用的是什么方法解的,我怎么查了好多资料都看不出来啊,谢谢大家了!
4 ` I0 D" s1 K( s Z$ R7 Y1 J
' M5 x4 q5 m7 g2 u% s+ G; ]3 g a% % Programme pour leopard % 4 a k$ P- F; N, u$ W3 |
global d K F N : V3 v/ z+ J$ i- z) [: c
N = 64
& G6 k% |1 v6 ?7 b. Tdx = 1/N;
D- x k% Y2 k' H& {% J1 L) [5 ~d=10 K=0.01 F=0.1 7 |2 v0 h q. w, o5 L+ c4 {" \
dt=0.001;
' ]) R( ^. U& h9 HU=rand(N); V=rand(N);
/ W) T2 o% S3 o% a+ _) y% fFourU=fft2(U); FourV=fft2(V); % b' ^8 F; S9 N6 I1 A/ [3 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)/(1+(i0*i0+j0*j0)/8); FourV(i,j)=FourV(i,j)/(1+(i0*i0+j0*j0)/8); end end
# }, Q& X( I9 KU=real(ifft2(FourU)); V=real(ifft2(FourV));
8 }$ `& N2 ]! s1 s; Jcompteur=0;
) H1 V' I( c! P; m4 c ffor t=0:dt:1,
2 r: q) B" X2 L) V/ Fformat long max(max(U)) max(max(V)) min(min(V)) ! e/ p% K' L& `: j
FourU=fft2(U); FourV=fft2(V); " H* I( W5 C' R. f6 V$ r! B+ ?6 k
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
" a9 Z, p+ c! {0 F0 W- N8 LU=real(ifft2(FourU)); V=real(ifft2(FourV)); ( V) ~3 O# S2 |* U: @% H( b3 P
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 ; P; Z0 r, A2 M# G, y( K/ ]
U = U + dt*P; V = V + dt*G;
8 g3 C: A, I; R& B, c9 i1 t& Efor i=1:N, for j=1:N, W(i,j)=V(i,j); M(i,j)=U(i,j); end end
7 }6 I, q$ D; s7 x4 mif 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
( C! q- u6 Z1 Z$ gcompteur = compteur +1; 0 a; {6 e% P. O& y3 X
end %------------------------------------------
|