|
以下是一段解偏微分方程组的程序,谁能告诉我用的是什么方法解的,我怎么查了好多资料都看不出来啊,谢谢大家了!
. v$ \5 }7 l$ O& ~4 [, R3 A ?, o$ D) I1 h6 I) I. F0 v4 [
% % Programme pour leopard %
: P1 H) J v3 V8 ~. f2 \& ?global d K F N 2 ]. W& X# t7 v! o d- f% b9 t
N = 64
* [9 @$ m" B8 a( R0 m* Udx = 1/N; & R r; C0 o+ ]8 W0 x" m
d=10 K=0.01 F=0.1 3 [* o& G) [7 z: }3 h8 R
dt=0.001;
5 m1 t, D1 J, g. p: i: H [2 k' G9 TU=rand(N); V=rand(N); , x0 K2 e+ o2 x6 _; Y9 S" P
FourU=fft2(U); FourV=fft2(V);
# m; B; i, m6 p! Hfor 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 $ N# _6 Z& _3 M
U=real(ifft2(FourU)); V=real(ifft2(FourV)); ) u4 |, ?; J n2 m, v$ k
compteur=0; 7 A- {( J" I3 L3 ~6 K- G+ U5 ^
for t=0:dt:1,
, I2 w/ ]/ x" K3 T! tformat long max(max(U)) max(max(V)) min(min(V))
0 Q' _- D! g! k9 W! p- L+ sFourU=fft2(U); FourV=fft2(V); % F- ?+ u ?4 w& d
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
{* ^7 d! f5 YU=real(ifft2(FourU)); V=real(ifft2(FourV)); + s( u6 H, ^; 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
% w3 j/ d- t. T2 G+ V. eU = U + dt*P; V = V + dt*G;
' Q$ X- ^# x# `8 E- @4 S) sfor i=1:N, for j=1:N, W(i,j)=V(i,j); M(i,j)=U(i,j); end end 6 d( ?1 @% g5 I1 x: e; L
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
! X5 I5 C' ~ i4 b+ _0 ]compteur = compteur +1;
: w. q0 D/ u$ Y+ A" ]. x5 qend %------------------------------------------
|