|
以下是一段解偏微分方程组的程序,谁能告诉我用的是什么方法解的,我怎么查了好多资料都看不出来啊,谢谢大家了!
T/ ^9 x$ k: T6 r' s8 Q3 u: A' x5 Y: {
% % Programme pour leopard % 3 k* S1 ?( E. w0 H8 s
global d K F N & m, O3 |6 s9 a4 m0 I
N = 64
& \& o9 t1 x# q1 Z! |$ Bdx = 1/N;
@4 e" {* Q; g1 [d=10 K=0.01 F=0.1
! D6 T2 V' x- T' H! `" F5 A dt=0.001; # X2 [& D7 X4 `- C% {4 q0 d1 Y& l
U=rand(N); V=rand(N);
5 r9 D9 }) ?9 Q) [% P3 P% S4 iFourU=fft2(U); FourV=fft2(V); ( y+ |2 |# O- z& {
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
/ C% `1 |* V+ W; I) D% w: lU=real(ifft2(FourU)); V=real(ifft2(FourV)); ) f" `- n# C' w' M
compteur=0;
9 ?% i5 ]# q+ }2 vfor t=0:dt:1, 7 c4 z# `, \3 B- f: ~8 K
format long max(max(U)) max(max(V)) min(min(V))
0 \% F6 d! V+ KFourU=fft2(U); FourV=fft2(V); 0 [' t6 H* {0 X" h8 R I
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 1 i* P6 m1 U) }
U=real(ifft2(FourU)); V=real(ifft2(FourV));
* u& h0 P: O9 b6 N- y- A. i8 Efor 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 ! O% [2 w; o% j4 I e& p' Z
U = U + dt*P; V = V + dt*G;
- m; q$ w- i+ S% kfor i=1:N, for j=1:N, W(i,j)=V(i,j); M(i,j)=U(i,j); end end " U$ |+ N% d ~2 @2 o
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 J% h; k( u, g, C3 X- U) G/ V9 y& w5 [compteur = compteur +1; . s; ~2 u/ C6 {6 F7 T! | y: `6 R
end %------------------------------------------
|