@ , (29)
@ (30)
@ . (31)
(29) (31) τ , h 1 h 2 . (29) (31) (26) (27) (28)
= D ( + ), (32)
c 0 i,j= 0, i= , j= , (33)
ck 0 ,j =f (j h 2), k= , j= , (34)
|...| , T .
(32) (34) τ, h 1 h 2 , . , [5], :
(35)
. (36)
. 2. (26) (28)
, , (35) (36) 0.25. (32) , , (32) (34)
=0.25 ( + ), (37)
c 0 i,j= 0, i= , j= , (38)
ck 0 ,j =f (j h), k= , j= , (39)
, (, ) (k + 1)∙τ, k τ .
. 3 (26) (28) t =0, t, 2t3t :
L 1 /h = L 2 /h= 4;
f (j h) =const= 1.6 ;
T / t=4.
k= 0 . | k= 1 . |
k= 2 . | k= 3 . |
. 3. (26) (28)
. t =0 ( ), . t =t ( ), . t =2t( ) . t =3t( )
3 ( )
, , , , . , - , . , [6] , , , , .., , , , , . , , , , , . , . , , , - . , , .
|
|
, ? -, () , , -, . , , (26)-(28), . 1, , . 3, - " ", , , . , , (26)-(28) . 1 , , "", , - , , , . , , , , . . , , . , 3, , " " " " , , , , , . . , , , .
, . , , , , . , , . , , , , , , , , . , .. [7] , . , [8]. , , , :
|
|
1. () : , , , (), , .
2. . () , (, ), ..
3. () . . , , , , . , , , , - .
4. . -. ( ), .
5. "" .
6. . . , .
7. . , .
8. .
, , , " ?"
4 ()
1. "-" :
= (40)
:
c (x,y, 0) = 0, x Î(0 ,+L 1), y Î[ -L 2 ,+L 2], (41)
c (0 ,y, 0) = 0, (42)
c (0 ,y,t) =f (y), y Î(-l, +l), (43)
(44)
( ) (40) (44) . 5 ( . 4 , (44)), .
1 (44)
. 4. 1 (44)
. 5. 1
1
01 # include <stdio.h>
02 # define SizeX (23) // X
03 # define SizeZ (12) // Z
04 # define SizeT (12) //
05 # define SizeXWin (5) // X
06 int main(void)
07 {
08 int iZ,iX,k;
09 double *Ck, *Ck1;
10 FILE *dif_dat;
11 dif_dat = fopen(" :\\ \\ \\ dif_dat.dat", "w"); //
//
12 int aX=(SizeX-SizeXWin)/2; // X
13 int bX=aX+SizeXWin; // X
14 Ck=new double [300]; // i-
//
15 Ck1=new double [300]; // (i+1)-
//
16 for (iX=0; iX<(aX-1); iX++) { //
17 *(Ck+iX)=0;
18 *(Ck1+iX)=0;
19 }
20 for (iX=(aX-1); iX<(bX+1); iX++) { //
|
|
21 *(Ck+iX)=16;
22 *(Ck1+iX)=16;
23 }
24 for (iX=(bX+1); iX<SizeX; iX++) { //
25 *(Ck+iX)=0;
26 *(Ck1+iX)=0;
27 }
28 for (iZ=1; iZ<SizeZ; iZ++) { //
29 for (iX=0; iX<SizeX; iX++) {
30 *(Ck+iX+iZ*SizeX)=0;
31 *(Ck1+iX+iZ*SizeX)=0;
32 }
33 }
//
34 for (k=0; k<SizeT; k++){
35 for (iZ=1; iZ<(SizeZ-1); iZ++)
36 for (iX=1; iX<(SizeX-1); iX++)
37 *(Ck1+iX+iZ*SizeX)=*(Ck+iX+iZ*SizeX)+0.25*(*(Ck+iX+
(iZ+1)*SizeX)+(*(Ck+iX+(iZ-1)*SizeX))+
(*(Ck+iZ*SizeX+iX+1))+(*(Ck+iZ*SizeX+
iX-1))-(*(Ck+iX+iZ*SizeX))*4);
38 for (iZ=0; iZ<SizeZ; iZ++) //
39 for (iX=0; iX<SizeX; iX++)
40 *(Ck+iX+iZ*SizeX)=*(Ck1+iX+iZ*SizeX);
41 for (iX=0; iX<(aX-1); iX++) // (44)
42 *(Ck+iX)=*(Ck1+iX+SizeX);
43 for (iX=(bX+1); iX<SizeX; iX++) // (44)
44 *(Ck+iX)=*(Ck1+iX+SizeX);
45 }
46 for (iZ=0; iZ<SizeZ; iZ++){ //
47 for (iX=0; iX<SizeX; iX++)
48 fprintf(dif_dat," %7.3f",*(Ck+iX+iZ*SizeX));
49 fprintf(dif_dat,"\n");
50 }
51 delete Ck; //
52 delete Ck1;
53 fclose(dif_dat); //
56 return 0;
57 }
:
( ) .
1 , , . X Z, Y X. . , . 1, Y=0, "" , . , , . , , , , .
11 . , () .
37, , (37), , (32) h1 = h2 = h:
= + ( + ).
D ∙τ / h 2, 0.25, .
41 44 " ". , , c (xi, 0)= c (xi, 1), i X -.
, , , , , , [1], . , , (, ).
|
|
2.
= (45)
D 1 ,
D 2 "-",
D 3 ,
D 4 "-",
:
c (x, 0 ,t) = 0, x Î[0 ,L 1], t Î[0, T. ], (46)
c (x,z, 0) =c 0 , x Î[0 ,L 1], z Î(0, (L 2 -l 2) * 0. 5], (47)
c (x,z, 0) =c 0 , x Î[(L 1 -l 1) * 0. 5, (L 1 +l 1) * 0. 5), z Î((L 2 -l 2) * 0. 5, (L 2 +l 2) * 0. 5], (48)
c (x, (L 2 +l 2) * 0. 5, 0) = 0, x Î[0, (L 1 -l 1) * 0. 5), (49)
c (x, (L 2 +l 2) * 0. 5, 0) = 0, x Î[(L 1 +l 1) * 0. 5), L 1), (50)
c (x,z, 0) = 0, x Î[0 ,L 1], z Î((L 2 +l 2) * 0. 5), L 2] (51)
z Î[0, L 2],(52)
z Î[0, L 2], (53)
z Î((L 2 -l 2) * 0. 5, (L 2 +l 2) * 0. 5], (54)
z Î((L 2 -l 2) * 0. 5, (L 2 +l 2) * 0. 5], (55)
x Î[0, (L 1 -l 1) * 0. 5], (56)
x Î[0, (L 1 -l 1) * 0. 5], (57)
x Î[(L 1 +l 1) * 0. 5 ,L 1], (58)
x Î[(L 1 +l 1) * 0. 5 ,L 1], (59)
T. ,
L 1 x,
L 2 Z,
l 1 ( ) x,
l 2 ( ) Z,
c 0 .
6.
( ) 2 . 8. . 7 , , . 9 . , , , , . 7-9 , ( , Z) . .
. 6. . 2
. 7. 2
. 8. 2
. 9. , 2
2
01 # include <stdio.h>
02 # define SizeX (46) // X
03 # define SizeZ (46) // Z
04 # define SizeT (128) //
05 # define SizeXWin (14) // X
06 # define SizeZWin (6) // Z
07 # define C0d (104) //
08 # define C0k (0) //
09 # define DtauD (0.625) // DtauD=D1*tau/(h*h)
10 # define DtauDW (0.0625) // DtauDW=D2*tau/(h*h) "-
// - "
11 # define DtauK (0.025) // DtauK=D3*tau/(h*h)
12 # define DtauKW (0.25) // DtauKW=D4*tau/(h*h) "-
// "
13 int main(void)
14 {
15 int iZ,iX,k;
16 double *Ck, *Ck1;
17 FILE *dif_dat;
18 dif_dat = fopen(" :\\ \\ \\ dif_dat.dat", "w");
19 if (dif_dat == NULL){
20 printf(" dif_dat.dat .\n");
21 return 1;
22 }
[1] diffusio - , .
[2] "" .
[3] , , , .
|
|
[4] k