|
以下是一段解偏微分方程组的程序,谁能告诉我用的是什么方法解的,我怎么查了好多资料都看不出来啊,谢谢大家了!
, Q5 k' D# b- @# t9 ?
5 Q8 S- x2 X1 |: F# w% % Programme pour leopard %
+ N! r) ]3 R6 Nglobal d K F N + C8 z' l9 b; \ R$ w+ c
N = 64 4 b! E$ l5 G( l3 ]3 M% ~3 d+ O! S4 _
dx = 1/N; 4 G8 `; o5 @$ X( H. V: [
d=10 K=0.01 F=0.1 ' \- G: j% x, B- K2 E+ b. Z
dt=0.001; 4 U4 s. m8 C9 j6 u! Z- _6 |
U=rand(N); V=rand(N);
~9 Q/ `1 d" ?0 K& p$ ^9 MFourU=fft2(U); FourV=fft2(V); 0 V, N' p- \3 q) e
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 # W9 O, a5 a/ ]* X5 A a
U=real(ifft2(FourU)); V=real(ifft2(FourV));
, j8 S: E5 `0 M- m) Vcompteur=0; $ W9 d% |' K! D+ @( D- t# H3 Y$ |4 C! ^
for t=0:dt:1,
- M ?# u" C% ^format long max(max(U)) max(max(V)) min(min(V)) : T- w: U- i2 P0 j' k% o
FourU=fft2(U); FourV=fft2(V); , _3 O+ C, P6 i0 O, s7 n
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
) | J6 F. l2 HU=real(ifft2(FourU)); V=real(ifft2(FourV));
- S) h ?3 O% O7 Y$ R) U% ~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 1 ]! S, s7 P# |$ Q; m9 ~
U = U + dt*P; V = V + dt*G;
2 V% K0 {$ G( b7 Y- b% X. i1 efor i=1:N, for j=1:N, W(i,j)=V(i,j); M(i,j)=U(i,j); end end 6 ~- w0 h3 ~& R1 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 3 a4 e( V! v) \* R2 e
compteur = compteur +1;
* ?% W+ i3 L5 b" Hend %------------------------------------------
|