I-
26 Ck1=new double [(SizeX+1)*(SizeZ+1)]; //
// (i+1)-
27 //
28 for (iX=0; iX<SizeX+1; iX++) { // " () "
29 *(Ck+iX)=0;
30 *(Ck1+iX)=0;
31 }
32 for (iZ=1; iZ<aZ+1; iZ++) { //
33 for (iX=0; iX<SizeX+1; iX++) {
34 *(Ck+iZ*(SizeX+1)+iX)=C0d;
35 *(Ck1+iZ*(SizeX+1)+iX)=C0d;
36 }
37 }
38 for (iZ=aZ+1; iZ<bZ+1; iZ++) { //
39 for (iX=aX; iX<bX+1; iX++) {
40 *(Ck+iZ*(SizeX+1)+iX)=C0d;
41 *(Ck1+iZ*(SizeX+1)+iX)=C0d;
42 }
43 }
44 for (iZ=aZ+1; iZ<bZ+1; iZ++) { //
45 for (iX=0; iX<aX; iX++) {
46 *(Ck+iZ*(SizeX+1)+iX)=C0k;
47 *(Ck1+iZ*(SizeX+1)+iX)=C0k;
48 }
49 }
50 for (iZ=aZ+1; iZ<bZ+1; iZ++) { //
51 for (iX=bX+1; iX<SizeX+1; iX++) {
52 *(Ck+iZ*(SizeX+1)+iX)=C0k;
53 *(Ck1+iZ*(SizeX+1)+iX)=C0k;
54 }
55 }
56 for (iZ=bZ+1; iZ<SizeZ+1; iZ++) { //
57 for (iX=0; iX<SizeX+1; iX++) {
58 *(Ck+iZ*(SizeX+1)+iX)=C0k;
59 *(Ck1+iZ*(SizeX+1)+iX)=C0k;
60 }
61 }
62 //
63 for (k=0; k<SizeT; k++){
64 for (iZ=1; iZ<aZ-1; iZ++) //
65 for (iX=1; iX<SizeX; iX++)
*(Ck1+iX+iZ*(SizeX+1))=*(Ck+iX+iZ*(SizeX+1))+DtauD*
(*(Ck+iX+(iZ+1)*(SizeX+1))+(*(Ck+iX+(iZ-1)*(SizeX+1)))+
(*(Ck+iZ*(SizeX+1)+iX+1))+(*(Ck+iZ*(SizeX+1)+iX-1))-
(*(Ck+iX+iZ*(SizeX+1)))*4);
66 for (iX=1; iX<aX+1; iX++) // ,
// "-"
*(Ck1+iX+(aZ-1)*(SizeX+1))=*(Ck+iX+(aZ-1)*(SizeX+1))+DtauDW*
(*(Ck+iX+aZ*(SizeX+1))+(*(Ck+iX+(aZ-2)*(SizeX+1)))+(*(Ck+
(aZ-1)*(SizeX+1)+iX+1))+(*(Ck+(aZ-1)*(SizeX+1)+iX-1))-(*(Ck+
iX+(aZ-1)*(SizeX+1)))*4);
67 for (iX=aX+1; iX<bX; iX++) // , (
// 66)
*(Ck1+iX+(aZ-1)*(SizeX+1))=*(Ck+iX+(aZ-1)*(SizeX+1))+DtauD*
(*(Ck+iX+aZ*(SizeX+1))+(*(Ck+iX+(aZ-2)*(SizeX+1)))+(*(Ck+
(aZ-1)*(SizeX+1)+iX+1))+(*(Ck+(aZ-1)*(SizeX+1)+iX-1))-(*(Ck+
iX+(aZ-1)*(SizeX+1)))*4);
68 for (iX=bX; iX<SizeX; iX++) // ,
"-" ( 67)
*(Ck1+iX+(aZ-1)*(SizeX+1))=*(Ck+iX+(aZ-1)*(SizeX+1))+DtauDW*
(*(Ck+iX+aZ*(SizeX+1))+(*(Ck+iX+(aZ-2)*(SizeX+1)))+(*(Ck+
(aZ-1)*(SizeX+1)+iX+1))+(*(Ck+(aZ-1)*(SizeX+1)+iX-1))-
(*(Ck+iX+(aZ-1)*(SizeX+1)))*4);
69 for (iZ=aZ; iZ<bZ+1; iZ++) // ,
// "-"
*(Ck1+aX+1+iZ*(SizeX+1))=*(Ck+aX+1+iZ*(SizeX+1))+DtauDW*
(*(Ck+aX+1+(iZ+1)* (SizeX+1))+(*(Ck+aX+1+(iZ-1)*(SizeX+1)))+
(*(Ck+iZ*(SizeX+1)+aX+2))+(*(Ck+iZ*(SizeX+1)+aX))-(*(Ck+aX+
1+iZ*(SizeX+1)))*4);
70 for (iZ=aZ; iZ<bZ+1; iZ++) // ,
// "-"
*(Ck1+bX-1+iZ*(SizeX+1))=*(Ck+bX-1+iZ*(SizeX+1))+DtauDW*
|
|
(*(Ck+bX-1+(iZ+1)*(SizeX+1))+(*(Ck+bX-1+(iZ-1)*(SizeX+1)))+
(*(Ck+iZ*(SizeX+1)+bX))+(*(Ck+iZ*(SizeX+1)+bX-2))-(*(Ck+
bX-1+iZ*(SizeX+1)))*4);
71 for (iZ=aZ; iZ<bZ+1; iZ++) //
for (iX=aX+2; iX<bX-1; iX++)
*(Ck1+iX+iZ*(SizeX+1))=*(Ck+iX+iZ*(SizeX+1))+DtauD*
(*(Ck+iX+(iZ+1)*(SizeX+1))+(*(Ck+iX+(iZ-1)*(SizeX+1)))+
(*(Ck+iZ*(SizeX+1)+iX+1))+(*(Ck+iZ*(SizeX+1)+iX-1))-
(*(Ck+iX+iZ*(SizeX+1)))*4);
72 for (iX=1; iX<aX+1; iX++) // ,
// "-"
*(Ck1+iX+(bZ+1)*(SizeX+1))=*(Ck+iX+(bZ+1)*(SizeX+1))+DtauKW*
(*(Ck+iX+(bZ+2)*(SizeX+1))+(*(Ck+iX+bZ*(SizeX+1)))+(*(Ck+(bZ+1)*
(SizeX+1)+iX+1))+(*(Ck+(bZ+1)*(SizeX+1)+iX-1))-
(*(Ck+iX+(bZ+1)*(SizeX+1)))*4);
73 for (iX=aX+1; iX<bX; iX++) // , (
// 72)
*(Ck1+iX+(bZ+1)*(SizeX+1))=*(Ck+iX+(bZ+1)*(SizeX+1))+DtauK*
(*(Ck+iX+(bZ+2)*(SizeX+1))+(*(Ck+iX+bZ*(SizeX+1)))+(*(Ck+
(bZ+1)*(SizeX+1)+iX+1))+(*(Ck+(bZ+1)*(SizeX+1)+iX-1))-
(*(Ck+iX+(bZ+1)*(SizeX+1)))*4);
74 for (iX=bX; iX<SizeX; iX++) // ,
// "-"
*(Ck1+iX+(bZ+1)*(SizeX+1))=*(Ck+iX+(bZ+1)*(SizeX+1))+DtauKW*
(*(Ck+iX+(bZ+2)*(SizeX+1))+(*(Ck+iX+bZ*(SizeX+1)))+(*(Ck+
(bZ+1)*(SizeX+1)+iX+1))+(*(Ck+(bZ+1)*(SizeX+1)+iX-1))-(*(Ck+
iX+(bZ+1)*(SizeX+1)))*4);
75 for (iZ=bZ+2; iZ<SizeZ; iZ++) //
76 for (iX=1; iX<SizeX; iX++)
*(Ck1+iX+iZ*(SizeX+1))=*(Ck+iX+iZ*(SizeX+1))+DtauK*
(*(Ck+iX+(iZ+1)*(SizeX+1))+(*(Ck+iX+(iZ-1)*(SizeX+1)))+
(*(Ck+iZ*(SizeX+1)+iX+1))+(*(Ck+iZ*(SizeX+1)+iX-1))-
(*(Ck+iX+iZ*(SizeX+1)))*4);
77 for (iZ=0; iZ<SizeZ+1; iZ++) // (i+1)-
i-
78 for (iX=0; iX<SizeX+1; iX++)
79 *(Ck+iX+iZ*(SizeX+1))=*(Ck1+iX+iZ*(SizeX+1));
80 for (iX=0; iX<aX; iX++) { //
// :
81 *(Ck+iX+aZ*(SizeX+1))=*(Ck1+iX+(aZ-1)*(SizeX+1)); //
// "-",
82 *(Ck+iX+bZ*(SizeX+1))=*(Ck1+iX+(bZ+1)*(SizeX+1)); //
// "-"
83 }
84 for (iX=bX+1; iX<SizeX+1; iX++) { //
// :
85 *(Ck+iX+aZ*(SizeX+1))=*(Ck1+iX+(aZ-1)*(SizeX+1)); //
// "-",
86 *(Ck+iX+bZ*(SizeX+1))=*(Ck1+iX+(bZ+1)*(SizeX+1)); //
// "-"
87 }
88 for (iZ=aZ; iZ<bZ+1; iZ++) { //
// :
89 *(Ck+aX+iZ*(SizeX+1))=*(Ck1+aX+1+iZ*(SizeX+1)); //
// "-",
90 *(Ck+bX+iZ*(SizeX+1))=*(Ck1+bX-1+iZ*(SizeX+1)); //
// "-"
91 }
92 for (iZ=0; iZ<aZ; iZ++) { //
// X- :
93 *(Ck+iZ*(SizeX+1))=*(Ck1+1+iZ*(SizeX+1)); //
//
94 *(Ck+SizeX+iZ*(SizeX+1))=*(Ck1+SizeX-1+iZ*(SizeX+1)); //
//
95 }
96 }
97 for (iZ=0; iZ<SizeZ+1; iZ++){ // "dif_dat"
98 for (iX=0; iX<SizeX+1; iX++)
99 fprintf(dif_dat," %7.3f",*(Ck+iX+iZ*(SizeX+1)));
100 fprintf(dif_dat,"\n");
101 }
|
|
102 delete Ck; //
103 delete Ck1;
104 fclose(dif_dat);
105 return 0;
106 }
:
( ) .
18 . , () .
2830 " - ". ( ) , .
4455 , ( ). 44, 47, 52, 53 , 46, 47, 52, 53 iZ bZ.
66 " ".
67 66, .
68 " ". 67.
72 " ".
73 72, .
74 " ". 73.
89 90 " " .
, , . , , .
5
D, q, R , , .10.
, S , ,
(60)
d S , (8).
(61)
CGS , ,
(62)
(62) ε- , , E . D
.10.
, R / R , n, (61)
(63)
D
(64)
, 4π , , . .
(64) . : " (64) , ?" ; , , , . , "" , -, q ( - , R / R ∙ n ), , -, ( , , ). .11 , .
|
|
(65)
, . .
q, ρ(x,y,z) Δ V, Δ S, (64)
(66)
-, (66)
(67)
(67), ,
(68)
, (62), (68) D - φ,
. 11.
. (69)
,
, (70)
(70) (69) ()
(71)
, (71) . , , ρ(x,y,z) , .
[9] , , (71) ( ), . [10] , , , , , , , , , . , , , . , p n , , ,
(72)
(73)
(74)
e= 4,8032 10-10 CGSEq (1,6022 10-19 ) ,
p 0 , -3,
n 0 , -3,
NA p -, -3,
ND n -, -3,
|
|
n , CGSEV (1 = 3,34 10-3 CGSEV),
p , CGSEV,
x 0 p n , .
(72)
(75)
1,161040,13,3410-3=3,87 , , , ex (1+ x) , e 3,855 ≈47, (1+ x)=4,855 ( ~860 %). eφ < kT ( 300 26 ) ex ≈ 1+ x .
(76)
, ni << NA < ND, (72)-(74)
(77)
(78)
(79)
n , ,
p -, ,
, -3,
, . .
(77)-(79)
(80)
(81)
(82)
(80)-(82) [11] , (81)-(82), , p n ( , "" -∞ "" +∞). , , ( - ), (80)
(83)
:
(84)
(k +1)- , k- . (83)-(84) ( ), :
(85)
, (86)
x 1 " p - ", ,
x 2 " n - ", ,
p -, ..,
p -, ..
(83) (84) (85) (86), (x 2- x 1)→0.
01 # include <stdio.h>
02 # include <math.h>
03 #include <conio.h>
04 #include <graphics.h>
05 int main()
06 {
07 int i,j;
08 double v,d,M;
09 double *fi1; //
10 double *; //
11 double *ro; //
12 double r=1; // ro
13 double *h; //
14 int size=1000; // ( )
15 int l=2; // -
//
16 double f=5; // fi1
17 double e=1; // D
18 double m=0.01; //
19 double eps=0.001; // -
// k (k +1)
//
20 double h0=0.001; //
//
21 double An=0.5; //
22 double border1=0.3; // x 1 size
23 double border2=0.5; // x 2 size
24 FILE *dif_dat;
25 dif_dat = fopen(":\\\\\\dif_dat.dat", "w");
26 if (dif_dat == NULL){
27 printf(" dif_dat.dat .\n");
28 return 1;
29 }
30 int gdriver = DETECT, gmode, errorcode;
31 initgraph(&gdriver,&gmode,":\\\\BGI\\");
32 errorcode = graphresult();
33 if (errorcode!= grOk) {
34 printf("Graphics error: %s\n", grapherrormsg(errorcode));
35 printf("Press any key to halt:");
36 getch();
37 return 1;
38 }
39 fi1=new double [size];
40 =new double [size];
41 ro=new double [size];
42 h=new double [size];
43 for (j=0; j<size*border1; j++) { //
|
|
44 *(fi1+j)=3;
45 *(h+j)=h0;
46 }
47 for (j=size*border1; j<size*border2; j++) {
48 *(fi1+j)=0;
49 *(h+j)=h0;
50 }
51 for (j=size*border2; j<size; j++) {
52 *(fi1+j)=10;
53 *(h+j)=m*h0;
54 }
55 int scrY=getmaxy(); // ψ(x)
56 for (i=0; i<size; i+=l)
57 putpixel(ceil(i/l), scrY*0.30-ceil(f*(*(fi1+i))), 5);
58 i=0;
59 do {
60 M=0;
61 for (j=1; j<size*border1; j++) { // ψ(x) x<x 1
62 v=(*(fi1+j+1)+(*(fi1+j-1))+(*(h+j))*(*(h+j))*An*
(expl(-(*(fi1+j)-3))-1))/2;
63 d=fabs(*(fi1+j)-v);
64 *(fi1+j)=v;
65 if (M<d)
66 M=d;
67 else if (d>eps) //
68 (*(h+j))*=(1-eps/d);
69 }
70 for (j=size*border1; j<size* (border1+border2)/2; j++) {// ψ(x)
x 1 ≤x< (x 1 +x 2) / 2
71 v=(*(fi1+j+1)+(*(fi1+j-1)))/2;
72 d=fabs(*(fi1+j)-v);
73 *(fi1+j)=v;
74 if (M<d)
75 M=d;
76 else if (d>eps) //
77 (*(h+j))*=(1-eps/d);
78 for (j=size*border2; j<size-1; j++) { // ψ(x) x≥x 2
79 v=(*(fi1+j+1)+(*(fi1+j-1))-(*(h+j))*(*(h+j))*(expl((*(fi1+j)-10))-1))/2;
80 d=fabs(*(fi1+j)-v);
81 *(fi1+j)=v;
82 if (M<d)
83 M=d;
84 else if (d>eps) //
85 (*(h+j))*=(1-eps/d);
86 }
87 i++;
88 } while (M>eps);
89 printf("%d\n",i);
90 for (j=1; j<11; j++) { // ψ (x) dif_dat
91 for (i=size*(j-1)/10; i<size*j/10; i++)
92 fprintf(dif_dat," %7.3f",*(fi1+i));
93 fprintf(dif_dat,"\n");
94 }
95 for (i=0; i<size-1; i++) // (x)
96 *(+i)=-(*(fi1+i+1)-(*(fi1+i)))/(*(h+j));
97 for (i=1; i<size-1; i++) // ρ(x)
98 *(ro+i)=-(*(fi1+i+1)-2*(*(fi1+i))+(*(fi1+i-1)))/(*(h+j))/(*(h+j));
99 setcolor(5);
100 for (i=0; i<size; i+=l) // ψ(x)
101 putpixel(ceil(i/l), scrY*0.30-ceil(f*(*(fi1+i))), 2);
102 for (i=0; i<size-1; i+=l) // D (x)
103 putpixel(ceil(i/l), scrY*0.5+ceil(e*(*(+i))), 3);
104 for (i=1; i<size-1; i+=l) // ro(x)
105 putpixel(ceil(i/l), scrY*0.8+ceil(r*(*(ro+i))), 4);
106 getch();
107 closegraph();
108 delete fi1;
109 delete E;
110 delete ro;
111 fclose(dif_dat);
112 return 0;
113 }
, .
12 15 : (x 2- x 1)= 0.5* size, (x 2- x 1)=0.3* size, (x 2- x 1)= 0.2* size (x 2- x 1)= 0.0 . , 10 , . 12 , , . . " " , , . , . 13 14, . , , 15 ( ).
. 12. (x 2- x 1) = 0.5* size
. 13. (x 2- x 1) = 0.3* size
. 14. (x 2- x 1) = 0.2* size
. 15. (x 2- x 1) = 0.0
, , , 1 μi q i, φ, , ,
. (87)
(7)
(88)
(19)
, (89)
(13)
. (90)
(62), (69) (71) , , , , , (89) (90) :
, (91)
. (92)
, , ci ≡ ci (x,y,z,t), E ≡ E (x,y,z,t) ρ ≡ ρ(x,y,z,t),