|
以下是一段解偏微分方程组的程序,谁能告诉我用的是什么方法解的,我怎么查了好多资料都看不出来啊,谢谢大家了!
, d8 X; j' h4 T1 h* y5 {6 |- d/ i: {" |! b- w. b' F: E
% % Programme pour leopard % 0 q% p5 k% b9 L3 u! Y
global d K F N $ k1 A: ]9 F9 b' t$ d
N = 64 , ~7 [& c2 z' o# O
dx = 1/N; ) D& B7 d+ C% g$ K
d=10 K=0.01 F=0.1 ! o' {. ^) H6 o6 X# k
dt=0.001;
% V1 n4 k o' @6 m# XU=rand(N); V=rand(N); 7 r" f! R) t" n) I; u9 Q
FourU=fft2(U); FourV=fft2(V);
; i. Z3 _( m. S9 O( C% ~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 3 _% _6 B2 E. Y* ?. ~9 S2 F! a
U=real(ifft2(FourU)); V=real(ifft2(FourV)); - \6 ]* A) W* ~4 t8 f; [
compteur=0;
6 b- Y& [# {+ X7 `for t=0:dt:1, " U* f( [# S, F* L4 l
format long max(max(U)) max(max(V)) min(min(V)) ! B g, [8 n, q1 e5 X2 ~9 z
FourU=fft2(U); FourV=fft2(V);
! G9 Z& \ c6 ^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
( p& G6 n/ V6 U" p& O' ZU=real(ifft2(FourU)); V=real(ifft2(FourV)); + a1 O/ F+ T5 P. r
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 9 ~; D+ y9 E6 A/ U
U = U + dt*P; V = V + dt*G;
6 v% }5 r5 }, j* J0 ~' m3 Z$ x3 i. Mfor i=1:N, for j=1:N, W(i,j)=V(i,j); M(i,j)=U(i,j); end end
: W8 x+ }: n9 ]! P! N @1 Dif 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 2 d$ M9 h5 f J2 d4 j7 v
compteur = compteur +1;
! X2 Q7 f: b( m( I+ S2 O9 R2 C/ }/ Eend %------------------------------------------
|