|
以下是一段解偏微分方程组的程序,谁能告诉我用的是什么方法解的,我怎么查了好多资料都看不出来啊,谢谢大家了!
. C3 @* q' F2 r# J) a' |6 R+ H) [) R+ w, [# e' d
% % Programme pour leopard % . i. U: q" I' x$ d
global d K F N * v, x5 w& A$ v. b! [! U [+ O
N = 64 2 z% G( j, Q! v2 ]0 M* {
dx = 1/N; / D/ j* O K% Z
d=10 K=0.01 F=0.1 7 ?* D" p8 O2 U' }0 {
dt=0.001; ) P" x* q8 w8 A( _% k& p5 J( e( q B
U=rand(N); V=rand(N);
, A/ H) O5 m* ?6 KFourU=fft2(U); FourV=fft2(V);
1 d% Z% F. r$ u3 K% _3 i b7 J) wfor 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 . k D Y' Y. Y% d
U=real(ifft2(FourU)); V=real(ifft2(FourV));
/ K! Y' }& q0 X5 h2 jcompteur=0;
; ]8 Z$ N9 G ]$ H# b( W9 bfor t=0:dt:1,
3 W2 z8 |9 r" ~; Lformat long max(max(U)) max(max(V)) min(min(V))
1 j( ^# p/ {! q) u( YFourU=fft2(U); FourV=fft2(V);
6 d: G1 ~; N) |8 s8 H: }8 xfor 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 ! i0 q6 P' Z# j4 d* U" g$ z5 m
U=real(ifft2(FourU)); V=real(ifft2(FourV)); 9 i! y) q7 u0 A( B8 f
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 b) C# d! x; L# T8 g+ t
U = U + dt*P; V = V + dt*G; 8 n5 q5 i& _: C; {% ^2 }1 S8 C* z% _
for i=1:N, for j=1:N, W(i,j)=V(i,j); M(i,j)=U(i,j); end end 9 J% J \+ S, ]' F0 q0 A
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 8 i* D0 V$ ?! F# G
compteur = compteur +1;
: r+ d. `6 i! t5 F# R5 uend %------------------------------------------
|