|
以下是一段解偏微分方程组的程序,谁能告诉我用的是什么方法解的,我怎么查了好多资料都看不出来啊,谢谢大家了! 1 n3 ]/ W( j5 }$ e, |9 w, I& x, P3 r
6 I0 R0 o# O. F& g% % Programme pour leopard %
2 }; O3 u# w; i" T: fglobal d K F N / {! M& |/ R9 ?$ Q5 `4 T" F: S
N = 64 9 n" c* u" k& |
dx = 1/N; - e/ ~ Z& v3 w6 x1 L
d=10 K=0.01 F=0.1 ! N4 _! `1 e* X( E9 J6 {, `
dt=0.001;
2 s9 q6 K* N" P; Y& d( EU=rand(N); V=rand(N);
+ g; L& r! g& \' KFourU=fft2(U); FourV=fft2(V); & Q& M3 ?; w- e4 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)/(1+(i0*i0+j0*j0)/8); FourV(i,j)=FourV(i,j)/(1+(i0*i0+j0*j0)/8); end end
. ~: \4 K, d. x$ j1 N) KU=real(ifft2(FourU)); V=real(ifft2(FourV));
* W, B( n! R: y2 \' Z3 b. Q: dcompteur=0;
/ r- B& ^8 E( Z6 E8 R4 w8 Nfor t=0:dt:1, + }" P2 w8 z3 k7 x
format long max(max(U)) max(max(V)) min(min(V)) ( S3 z A6 Z% I
FourU=fft2(U); FourV=fft2(V);
- b+ l; F: f7 @& o5 ^8 I' y9 jfor 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
2 H) T6 n+ e8 w0 ]1 W0 a LU=real(ifft2(FourU)); V=real(ifft2(FourV)); 1 x7 p: y% ^, ?5 W4 G1 H1 B( I
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
, X% M b. d! G+ pU = U + dt*P; V = V + dt*G;
. L+ F7 n% k! ~1 ~1 g' Y* ?for i=1:N, for j=1:N, W(i,j)=V(i,j); M(i,j)=U(i,j); end end . E4 M2 k1 h9 e- N! _( m# ]- J: @- M
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 P# E0 U( N1 U+ {! r! B ]; f
compteur = compteur +1;
: @+ F& \, w: }# bend %------------------------------------------
|