- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用有限差分计算存储在 3d 数组 a(n1,n2,n3) 中的函数 a(x,y,z) 的一阶和二阶导数。这里边界处的函数值为零。这是 Fortran 语言的代码:
implicit none
integer i1,i2,i3
integer, parameter :: n1 = 33
integer, parameter :: n2 = 33
integer, parameter :: n3 = 32
real*8 pi, a(n1,n2,n3), a2(n1,n2,n3), z(n3),x(n1),y(n2),h,a1(n1,n2,n3)
real*8 num(n1,n2,n3),deno(n1,n2,n3),diff(n1,n2,1),A0,dx,dy
pi=3.14159265358979323846d0
dx=2.0d0*pi/(n1-1)
dy=4.0d0*pi/(n2-1)
do i1=1,n1
x(i1)=-pi+(i1-1)*dx
do i2=1,n2
y(i2)=-2.0d0*pi+(i2-1)*dy
do i3=1,n3
z(i3)=(i3-1)*2.0d0*pi/n3
a(i1,i2,1)= dcos(x(i1)/2.0d0) * dcos(y(i2)/4.0d0) !input array
a1(i1,i2,1)= - 0.25d0*dcos(x(i1)/2.0d0) * dsin(y(i2)/4.0d0) !analytical expression of first order y-derivative
enddo
enddo
enddo
do i1=1,n1
do i2=1,n2
write(20,*)x(i1),y(i2),a(i1,i2,1)
enddo
enddo
call d1y(n1,n2,n3,a,a2)
do i1=1,n1
do i2=1,n2
num(i1,i2,1)=(a2(i1,i2,1)-a1(i1,i2,1)) !numerator of error calculation
deno(i1,i2,1)=a2(i1,i2,1) !denomenator of error calculation
if (dabs(deno(i1,i2,1)) .lt. 1e-10)deno(i1,i2,1)=1.0d0
diff(i1,i2,1)=dabs(num(i1,i2,1))/dabs(deno(i1,i2,1)) !relative error in 1st order derivative calculation
write(21,*)x(i1),y(i2),a(i1,i2,1),a2(i1,i2,1),diff(i1,i2,1),a1(i1,i2,1)
write(21,*)
enddo
enddo
end
subroutine d1y(n1,n2,n3,a,a2)
implicit none
integer n1, n2, n3, i1, i2, i3
real*8 pi, a(n1,n2,n3), a2(n1,n2,n3), z(n3),x(n1),y(n2),h,a1(n1,n2,n3)
pi=3.14159265358979323846d0
h=4.0d0*pi/(n2-1)
do i1=1,n1
do i3=1,n3
do i2=1,n2
if(i2 .eq. 1)then
a2(i1,i2,i3)=( -3.0d0*a(i1,i2,i3) + 4.0d0*a(i1,i2+1,i3) - a(i1,i2+2,i3) )/ (2.0d0*h)
else if(i2 .eq. n2)then
a2(i1,i2,i3)=( 3.0d0*a(i1,i2,i3) - 4.0d0*a(i1,i2-1,i3) + a(i1,i2-2,i3) )/ (2.0d0*h)
else
a2(i1,i2,i3)=( a(i1,i2+1,i3) - a(i1,i2-1,i3) )/ (2.0d0*h)
endif
enddo
enddo
enddo
end subroutine
我的输入函数a(i1,i2,1)= dcos(x(i1)/2.0d0) * dcos(y(i2)/4.0d0)
,因此示例输入数据(对于网格编号 17*17*16)
-3.1415926535897931 -6.2831853071795862 3.7493994566546440E-033
-3.1415926535897931 -5.4977871437821380 1.1945836920083898E-017
-3.1415926535897931 -4.7123889803846897 2.3432602026631496E-017
-3.1415926535897931 -3.9269908169872414 3.4018865378450254E-017
-3.1415926535897931 -3.1415926535897931 4.3297802811774670E-017
-3.1415926535897931 -2.3561944901923448 5.0912829964730140E-017
-3.1415926535897931 -1.5707963267948966 5.6571305614385013E-017
-3.1415926535897931 -0.78539816339744828 6.0055777714832775E-017
-3.1415926535897931 0.0000000000000000 6.1232339957367660E-017
-3.1415926535897931 0.78539816339744828 6.0055777714832775E-017
-3.1415926535897931 1.5707963267948966 5.6571305614385013E-017
-3.1415926535897931 2.3561944901923439 5.0912829964730146E-017
-3.1415926535897931 3.1415926535897931 4.3297802811774670E-017
-3.1415926535897931 3.9269908169872423 3.4018865378450242E-017
-3.1415926535897931 4.7123889803846897 2.3432602026631496E-017
-3.1415926535897931 5.4977871437821371 1.1945836920083910E-017
-3.1415926535897931 6.2831853071795862 3.7493994566546440E-033
-2.7488935718910690 -6.2831853071795862 1.1945836920083898E-017
-2.7488935718910690 -5.4977871437821380 3.8060233744356645E-002
-2.7488935718910690 -4.7123889803846897 7.4657834050342639E-002
-2.7488935718910690 -3.9269908169872414 0.10838637566236967
-2.7488935718910690 -3.1415926535897931 0.13794968964147156
-2.7488935718910690 -2.3561944901923448 0.16221167441072892
-2.7488935718910690 -1.5707963267948966 0.18023995550173702
-2.7488935718910690 -0.78539816339744828 0.19134171618254495
-2.7488935718910690 0.0000000000000000 0.19509032201612833
-2.7488935718910690 0.78539816339744828 0.19134171618254495
-2.7488935718910690 1.5707963267948966 0.18023995550173702
-2.7488935718910690 2.3561944901923439 0.16221167441072895
-2.7488935718910690 3.1415926535897931 0.13794968964147156
-2.7488935718910690 3.9269908169872423 0.10838637566236962
-2.7488935718910690 4.7123889803846897 7.4657834050342639E-002
-2.7488935718910690 5.4977871437821371 3.8060233744356686E-002
-2.7488935718910690 6.2831853071795862 1.1945836920083898E-017
-2.3561944901923448 -6.2831853071795862 2.3432602026631496E-017
-2.3561944901923448 -5.4977871437821380 7.4657834050342639E-002
-2.3561944901923448 -4.7123889803846897 0.14644660940672630
-2.3561944901923448 -3.9269908169872414 0.21260752369181418
-2.3561944901923448 -3.1415926535897931 0.27059805007309856
-2.3561944901923448 -2.3561944901923448 0.31818964514320852
-2.3561944901923448 -1.5707963267948966 0.35355339059327384
-2.3561944901923448 -0.78539816339744828 0.37533027751786530
-2.3561944901923448 0.0000000000000000 0.38268343236508984
-2.3561944901923448 0.78539816339744828 0.37533027751786530
-2.3561944901923448 1.5707963267948966 0.35355339059327384
-2.3561944901923448 2.3561944901923439 0.31818964514320858
-2.3561944901923448 3.1415926535897931 0.27059805007309856
-2.3561944901923448 3.9269908169872423 0.21260752369181410
-2.3561944901923448 4.7123889803846897 0.14644660940672630
-2.3561944901923448 5.4977871437821371 7.4657834050342722E-002
-2.3561944901923448 6.2831853071795862 2.3432602026631496E-017
-1.9634954084936207 -6.2831853071795862 3.4018865378450254E-017
-1.9634954084936207 -5.4977871437821380 0.10838637566236967
-1.9634954084936207 -4.7123889803846897 0.21260752369181418
-1.9634954084936207 -3.9269908169872414 0.30865828381745519
-1.9634954084936207 -3.1415926535897931 0.39284747919355117
-1.9634954084936207 -2.3561944901923448 0.46193976625564342
-1.9634954084936207 -1.5707963267948966 0.51327996715933677
-1.9634954084936207 -0.78539816339744828 0.54489510677581865
-1.9634954084936207 0.0000000000000000 0.55557023301960229
-1.9634954084936207 0.78539816339744828 0.54489510677581865
-1.9634954084936207 1.5707963267948966 0.51327996715933677
-1.9634954084936207 2.3561944901923439 0.46193976625564348
-1.9634954084936207 3.1415926535897931 0.39284747919355117
-1.9634954084936207 3.9269908169872423 0.30865828381745508
-1.9634954084936207 4.7123889803846897 0.21260752369181418
-1.9634954084936207 5.4977871437821371 0.10838637566236978
-1.9634954084936207 6.2831853071795862 3.4018865378450254E-017
-1.5707963267948966 -6.2831853071795862 4.3297802811774670E-017
-1.5707963267948966 -5.4977871437821380 0.13794968964147156
-1.5707963267948966 -4.7123889803846897 0.27059805007309856
-1.5707963267948966 -3.9269908169872414 0.39284747919355117
-1.5707963267948966 -3.1415926535897931 0.50000000000000011
-1.5707963267948966 -2.3561944901923448 0.58793780120967942
-1.5707963267948966 -1.5707963267948966 0.65328148243818829
-1.5707963267948966 -0.78539816339744828 0.69351992266107376
-1.5707963267948966 0.0000000000000000 0.70710678118654757
-1.5707963267948966 0.78539816339744828 0.69351992266107376
-1.5707963267948966 1.5707963267948966 0.65328148243818829
-1.5707963267948966 2.3561944901923439 0.58793780120967942
-1.5707963267948966 3.1415926535897931 0.50000000000000011
-1.5707963267948966 3.9269908169872423 0.39284747919355101
-1.5707963267948966 4.7123889803846897 0.27059805007309856
-1.5707963267948966 5.4977871437821371 0.13794968964147170
-1.5707963267948966 6.2831853071795862 4.3297802811774670E-017
-1.1780972450961724 -6.2831853071795862 5.0912829964730140E-017
-1.1780972450961724 -5.4977871437821380 0.16221167441072892
-1.1780972450961724 -4.7123889803846897 0.31818964514320852
-1.1780972450961724 -3.9269908169872414 0.46193976625564342
-1.1780972450961724 -3.1415926535897931 0.58793780120967942
-1.1780972450961724 -2.3561944901923448 0.69134171618254492
-1.1780972450961724 -1.5707963267948966 0.76817775671141630
-1.1780972450961724 -0.78539816339744828 0.81549315684891710
-1.1780972450961724 0.0000000000000000 0.83146961230254524
-1.1780972450961724 0.78539816339744828 0.81549315684891710
-1.1780972450961724 1.5707963267948966 0.76817775671141630
-1.1780972450961724 2.3561944901923439 0.69134171618254503
-1.1780972450961724 3.1415926535897931 0.58793780120967942
-1.1780972450961724 3.9269908169872423 0.46193976625564326
-1.1780972450961724 4.7123889803846897 0.31818964514320852
-1.1780972450961724 5.4977871437821371 0.16221167441072909
-1.1780972450961724 6.2831853071795862 5.0912829964730140E-017
-0.78539816339744828 -6.2831853071795862 5.6571305614385013E-017
-0.78539816339744828 -5.4977871437821380 0.18023995550173702
-0.78539816339744828 -4.7123889803846897 0.35355339059327384
-0.78539816339744828 -3.9269908169872414 0.51327996715933677
-0.78539816339744828 -3.1415926535897931 0.65328148243818829
-0.78539816339744828 -2.3561944901923448 0.76817775671141630
-0.78539816339744828 -1.5707963267948966 0.85355339059327373
-0.78539816339744828 -0.78539816339744828 0.90612744635288778
-0.78539816339744828 0.0000000000000000 0.92387953251128674
-0.78539816339744828 0.78539816339744828 0.90612744635288778
-0.78539816339744828 1.5707963267948966 0.85355339059327373
-0.78539816339744828 2.3561944901923439 0.76817775671141642
-0.78539816339744828 3.1415926535897931 0.65328148243818829
-0.78539816339744828 3.9269908169872423 0.51327996715933655
-0.78539816339744828 4.7123889803846897 0.35355339059327384
-0.78539816339744828 5.4977871437821371 0.18023995550173721
-0.78539816339744828 6.2831853071795862 5.6571305614385013E-017
-0.39269908169872414 -6.2831853071795862 6.0055777714832775E-017
-0.39269908169872414 -5.4977871437821380 0.19134171618254495
-0.39269908169872414 -4.7123889803846897 0.37533027751786530
-0.39269908169872414 -3.9269908169872414 0.54489510677581865
-0.39269908169872414 -3.1415926535897931 0.69351992266107376
-0.39269908169872414 -2.3561944901923448 0.81549315684891710
-0.39269908169872414 -1.5707963267948966 0.90612744635288778
-0.39269908169872414 -0.78539816339744828 0.96193976625564337
-0.39269908169872414 0.0000000000000000 0.98078528040323043
-0.39269908169872414 0.78539816339744828 0.96193976625564337
-0.39269908169872414 1.5707963267948966 0.90612744635288778
-0.39269908169872414 2.3561944901923439 0.81549315684891721
-0.39269908169872414 3.1415926535897931 0.69351992266107376
-0.39269908169872414 3.9269908169872423 0.54489510677581843
-0.39269908169872414 4.7123889803846897 0.37533027751786530
-0.39269908169872414 5.4977871437821371 0.19134171618254514
-0.39269908169872414 6.2831853071795862 6.0055777714832775E-017
0.0000000000000000 -6.2831853071795862 6.1232339957367660E-017
0.0000000000000000 -5.4977871437821380 0.19509032201612833
0.0000000000000000 -4.7123889803846897 0.38268343236508984
0.0000000000000000 -3.9269908169872414 0.55557023301960229
0.0000000000000000 -3.1415926535897931 0.70710678118654757
0.0000000000000000 -2.3561944901923448 0.83146961230254524
0.0000000000000000 -1.5707963267948966 0.92387953251128674
0.0000000000000000 -0.78539816339744828 0.98078528040323043
0.0000000000000000 0.0000000000000000 1.0000000000000000
0.0000000000000000 0.78539816339744828 0.98078528040323043
0.0000000000000000 1.5707963267948966 0.92387953251128674
0.0000000000000000 2.3561944901923439 0.83146961230254535
0.0000000000000000 3.1415926535897931 0.70710678118654757
0.0000000000000000 3.9269908169872423 0.55557023301960207
0.0000000000000000 4.7123889803846897 0.38268343236508984
0.0000000000000000 5.4977871437821371 0.19509032201612853
0.0000000000000000 6.2831853071795862 6.1232339957367660E-017
0.39269908169872414 -6.2831853071795862 6.0055777714832775E-017
0.39269908169872414 -5.4977871437821380 0.19134171618254495
0.39269908169872414 -4.7123889803846897 0.37533027751786530
0.39269908169872414 -3.9269908169872414 0.54489510677581865
0.39269908169872414 -3.1415926535897931 0.69351992266107376
0.39269908169872414 -2.3561944901923448 0.81549315684891710
0.39269908169872414 -1.5707963267948966 0.90612744635288778
0.39269908169872414 -0.78539816339744828 0.96193976625564337
0.39269908169872414 0.0000000000000000 0.98078528040323043
0.39269908169872414 0.78539816339744828 0.96193976625564337
0.39269908169872414 1.5707963267948966 0.90612744635288778
0.39269908169872414 2.3561944901923439 0.81549315684891721
0.39269908169872414 3.1415926535897931 0.69351992266107376
0.39269908169872414 3.9269908169872423 0.54489510677581843
0.39269908169872414 4.7123889803846897 0.37533027751786530
0.39269908169872414 5.4977871437821371 0.19134171618254514
0.39269908169872414 6.2831853071795862 6.0055777714832775E-017
0.78539816339744828 -6.2831853071795862 5.6571305614385013E-017
0.78539816339744828 -5.4977871437821380 0.18023995550173702
0.78539816339744828 -4.7123889803846897 0.35355339059327384
0.78539816339744828 -3.9269908169872414 0.51327996715933677
0.78539816339744828 -3.1415926535897931 0.65328148243818829
0.78539816339744828 -2.3561944901923448 0.76817775671141630
0.78539816339744828 -1.5707963267948966 0.85355339059327373
0.78539816339744828 -0.78539816339744828 0.90612744635288778
0.78539816339744828 0.0000000000000000 0.92387953251128674
0.78539816339744828 0.78539816339744828 0.90612744635288778
0.78539816339744828 1.5707963267948966 0.85355339059327373
0.78539816339744828 2.3561944901923439 0.76817775671141642
0.78539816339744828 3.1415926535897931 0.65328148243818829
0.78539816339744828 3.9269908169872423 0.51327996715933655
0.78539816339744828 4.7123889803846897 0.35355339059327384
0.78539816339744828 5.4977871437821371 0.18023995550173721
0.78539816339744828 6.2831853071795862 5.6571305614385013E-017
1.1780972450961720 -6.2831853071795862 5.0912829964730146E-017
1.1780972450961720 -5.4977871437821380 0.16221167441072895
1.1780972450961720 -4.7123889803846897 0.31818964514320858
1.1780972450961720 -3.9269908169872414 0.46193976625564348
1.1780972450961720 -3.1415926535897931 0.58793780120967942
1.1780972450961720 -2.3561944901923448 0.69134171618254503
1.1780972450961720 -1.5707963267948966 0.76817775671141642
1.1780972450961720 -0.78539816339744828 0.81549315684891721
1.1780972450961720 0.0000000000000000 0.83146961230254535
1.1780972450961720 0.78539816339744828 0.81549315684891721
1.1780972450961720 1.5707963267948966 0.76817775671141642
1.1780972450961720 2.3561944901923439 0.69134171618254503
1.1780972450961720 3.1415926535897931 0.58793780120967942
1.1780972450961720 3.9269908169872423 0.46193976625564331
1.1780972450961720 4.7123889803846897 0.31818964514320858
1.1780972450961720 5.4977871437821371 0.16221167441072912
1.1780972450961720 6.2831853071795862 5.0912829964730146E-017
1.5707963267948966 -6.2831853071795862 4.3297802811774670E-017
1.5707963267948966 -5.4977871437821380 0.13794968964147156
1.5707963267948966 -4.7123889803846897 0.27059805007309856
1.5707963267948966 -3.9269908169872414 0.39284747919355117
1.5707963267948966 -3.1415926535897931 0.50000000000000011
1.5707963267948966 -2.3561944901923448 0.58793780120967942
1.5707963267948966 -1.5707963267948966 0.65328148243818829
1.5707963267948966 -0.78539816339744828 0.69351992266107376
1.5707963267948966 0.0000000000000000 0.70710678118654757
1.5707963267948966 0.78539816339744828 0.69351992266107376
1.5707963267948966 1.5707963267948966 0.65328148243818829
1.5707963267948966 2.3561944901923439 0.58793780120967942
1.5707963267948966 3.1415926535897931 0.50000000000000011
1.5707963267948966 3.9269908169872423 0.39284747919355101
1.5707963267948966 4.7123889803846897 0.27059805007309856
1.5707963267948966 5.4977871437821371 0.13794968964147170
1.5707963267948966 6.2831853071795862 4.3297802811774670E-017
1.9634954084936211 -6.2831853071795862 3.4018865378450242E-017
1.9634954084936211 -5.4977871437821380 0.10838637566236962
1.9634954084936211 -4.7123889803846897 0.21260752369181410
1.9634954084936211 -3.9269908169872414 0.30865828381745508
1.9634954084936211 -3.1415926535897931 0.39284747919355101
1.9634954084936211 -2.3561944901923448 0.46193976625564326
1.9634954084936211 -1.5707963267948966 0.51327996715933655
1.9634954084936211 -0.78539816339744828 0.54489510677581843
1.9634954084936211 0.0000000000000000 0.55557023301960207
1.9634954084936211 0.78539816339744828 0.54489510677581843
1.9634954084936211 1.5707963267948966 0.51327996715933655
1.9634954084936211 2.3561944901923439 0.46193976625564331
1.9634954084936211 3.1415926535897931 0.39284747919355101
1.9634954084936211 3.9269908169872423 0.30865828381745491
1.9634954084936211 4.7123889803846897 0.21260752369181410
1.9634954084936211 5.4977871437821371 0.10838637566236972
1.9634954084936211 6.2831853071795862 3.4018865378450242E-017
2.3561944901923448 -6.2831853071795862 2.3432602026631496E-017
2.3561944901923448 -5.4977871437821380 7.4657834050342639E-002
2.3561944901923448 -4.7123889803846897 0.14644660940672630
2.3561944901923448 -3.9269908169872414 0.21260752369181418
2.3561944901923448 -3.1415926535897931 0.27059805007309856
2.3561944901923448 -2.3561944901923448 0.31818964514320852
2.3561944901923448 -1.5707963267948966 0.35355339059327384
2.3561944901923448 -0.78539816339744828 0.37533027751786530
2.3561944901923448 0.0000000000000000 0.38268343236508984
2.3561944901923448 0.78539816339744828 0.37533027751786530
2.3561944901923448 1.5707963267948966 0.35355339059327384
2.3561944901923448 2.3561944901923439 0.31818964514320858
2.3561944901923448 3.1415926535897931 0.27059805007309856
2.3561944901923448 3.9269908169872423 0.21260752369181410
2.3561944901923448 4.7123889803846897 0.14644660940672630
2.3561944901923448 5.4977871437821371 7.4657834050342722E-002
2.3561944901923448 6.2831853071795862 2.3432602026631496E-017
2.7488935718910685 -6.2831853071795862 1.1945836920083910E-017
2.7488935718910685 -5.4977871437821380 3.8060233744356686E-002
2.7488935718910685 -4.7123889803846897 7.4657834050342722E-002
2.7488935718910685 -3.9269908169872414 0.10838637566236978
2.7488935718910685 -3.1415926535897931 0.13794968964147170
2.7488935718910685 -2.3561944901923448 0.16221167441072909
2.7488935718910685 -1.5707963267948966 0.18023995550173721
2.7488935718910685 -0.78539816339744828 0.19134171618254514
2.7488935718910685 0.0000000000000000 0.19509032201612853
2.7488935718910685 0.78539816339744828 0.19134171618254514
2.7488935718910685 1.5707963267948966 0.18023995550173721
2.7488935718910685 2.3561944901923439 0.16221167441072912
2.7488935718910685 3.1415926535897931 0.13794968964147170
2.7488935718910685 3.9269908169872423 0.10838637566236972
2.7488935718910685 4.7123889803846897 7.4657834050342722E-002
2.7488935718910685 5.4977871437821371 3.8060233744356721E-002
2.7488935718910685 6.2831853071795862 1.1945836920083910E-017
3.1415926535897931 -6.2831853071795862 3.7493994566546440E-033
3.1415926535897931 -5.4977871437821380 1.1945836920083898E-017
3.1415926535897931 -4.7123889803846897 2.3432602026631496E-017
3.1415926535897931 -3.9269908169872414 3.4018865378450254E-017
3.1415926535897931 -3.1415926535897931 4.3297802811774670E-017
3.1415926535897931 -2.3561944901923448 5.0912829964730140E-017
3.1415926535897931 -1.5707963267948966 5.6571305614385013E-017
3.1415926535897931 -0.78539816339744828 6.0055777714832775E-017
3.1415926535897931 0.0000000000000000 6.1232339957367660E-017
3.1415926535897931 0.78539816339744828 6.0055777714832775E-017
3.1415926535897931 1.5707963267948966 5.6571305614385013E-017
3.1415926535897931 2.3561944901923439 5.0912829964730146E-017
3.1415926535897931 3.1415926535897931 4.3297802811774670E-017
3.1415926535897931 3.9269908169872423 3.4018865378450242E-017
3.1415926535897931 4.7123889803846897 2.3432602026631496E-017
3.1415926535897931 5.4977871437821371 1.1945836920083910E-017
3.1415926535897931 6.2831853071795862 3.7493994566546440E-033
输入输出功能如下图所示。
由于输出函数与 - 0.25d0*dcos(x(i1)/2.0d0) * dsin(y(i2)/4.0d0)
相同,这表明导数计算是正确的。在子程序“d1y”中,我使用前向和后向有限差分公式来计算边界处的导数以及位于两个边界之间的点的中心差。然后我计算了相对误差。我在 y 轴边界处得到了 0.003 的误差,在边界之间的点处得到了 0.0015 的误差,如下图 所示。
我使用相同的技术计算了二阶导数。子程序如下:
`subroutine d2y(n1,n2,n3,a,a2)
implicit none
integer n1, n2, n3, i1, i2, i3
real*8 pi, a(n1,n2,n3), a2(n1,n2,n3), z(n3),x(n1),y(n2),h
pi=3.14159265358979323846d0
h=4.0d0*pi/(n2-1)
a2=0.0d0
i3 =1
do i1=1,n1
do i2=1,n2
if(i2 == 1)then
a2(i1,i2,i3)=( 2.0d0*a(i1,i2,i3) - 5.0d0*a(i1,i2+1,i3) + 4.0d0*a(i1,i2+2,i3) - a(i1,i2+3,i3))/(h*h)
else if( i2 == n2)then
a2(i1,i2,i3)=( 2.0d0*a(i1,i2,i3) - 5.0d0*a(i1,i2-1,i3) + 4.0d0*a(i1,i2-2,i3) - a(i1,i2-3,i3))/(h*h)
else
a2(i1,i2,i3)= ( a(i1,i2+1,i3) - 2.0d0*a(i1,i2,i3) + a(i1,i2-1,i3) )/(h*h)
endif
enddo
enddo
! enddo
end subroutine
这里的边界误差也很大,事实上,与一阶导数相比,误差非常大,如图: 。
为什么边界误差这么大?请解释一下。
`
最佳答案
首先,我的观点是正确的。名称“前向差分”和“后向差分”通常指的是标准一阶公式。您确实有正确的二阶单边一阶导数公式。
二阶一阶导数前向差分公式由 x+h 和 x+2h 处的泰勒级数表达式推导如下:
f(x+h) = f(x) + h*f'(x) + h^2*f''(x)/2! + h^3*f'''(x)/3! ....
f(x+2h) = f(x) + 2h*f'(x) + 4h^2*f''(x)/2! + 8h^3*f'''(x)/3! ....
现在,取第一个系列的 4 倍并减去第二个系列并求解 f'(x)。请注意,二阶导数项消失了。
f'(x) = 3h/2 * f(x) - 2/h *f(x+h) + 1/(2h) * f(x+2h) + 0 - 4h^2*f' ''(x)/3!
这是您正在使用的公式,它是二阶精确的。这并不意味着精度与中心差精度相同,只是精度的顺序相同。
如果在保留误差项的情况下查看中心差的推导,您会发现误差项如下所示:
-h^2*f'''(x)/6
你有没有注意到,前向差分公式中的误差项前面有一个常数。一般来说,误差总是会比较大。但这并不是二阶准确的含义。准确度顺序告诉您当更改 h 时误差如何变化。
例如,如果将 h 减半,您应该获得大约 4 倍的准确度。这意味着在上面的示例中,中心差异误差将从约 0.0015 变为约 0.0004,边界误差将从约 0.003 变为约 0.0008
最终要点:您的程序是正确的,您的错误也是正确的!
关于fortran - 使用有限差分计算一阶和二阶导数时边界误差较大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53239057/
我的应用程序上有一个抽屉式菜单,它在桌面上运行良好,但在任何移动设备上我都看到一个丑陋的卡顿。 在 header 中,我有一个 bool 值,在单击汉堡包时将其设置为 true/false,这会将 o
在CLRS书中,自上而下的heapify构建堆的复杂度为O(n)。也可以通过反复调用插入来建立堆,其最坏情况下的复杂度为nlg(n)。 我的问题是:对于后一种方法性能较差的原因,是否有任何见解? 我问
我在所有层和输出上使用 sigmoid,得到的最终错误率为 0.00012,但是当我使用理论上更好的 Relu 时,我得到了最差的结果。谁能解释为什么会发生这种情况?我正在使用一个非常简单的 2 层实
我想计算有多少人(百分比)在我的测试中表现比我差。 这是我想要的结果: student | vak | resultaat | percentielscore ---------+-------
令人惊讶的是,使用 PLINQ 并没有在我创建的一个小测试用例上产生好处;事实上,它比通常的 LINQ 还要糟糕。 测试代码如下: int repeatedCount = 10000000;
我正在开发一个高度基于 map 的应用程序,并且我正在使用 MBXMapKit 框架(基于 MapKit 构建)以便在我的 MapView 中显示自定义 Mapbox map 图 block 而不是默
这个问题在这里已经有了答案: Is it always better to use 'DbContext' instead of 'ObjectContext'? (1 个回答) 关闭 9 年前。
我正在尝试使用 FFmpeg 进行一些复杂的视频转码(例如连接多个文件)。为此,我一直在尝试使用 filter_complex,但我注意到我之前使用普通视频过滤器看到的质量略有下降。 为了仔细检查,我
我是 R 中并行计算的新手,想使用并行包来加速我的计算(这比下面的示例更复杂)。但是,与通常的 lapply 函数相比,使用 mclapply 函数的计算时间更长。 我在我的笔记本电脑上安装了一个全新
我正在尝试使用 BERT 解决文档排名问题。我的任务很简单。我必须对输入文档进行相似度排名。这里唯一的问题是我没有标签——所以它更像是一个定性分析。 我正在尝试一系列文档表示技术——主要是 word2
如何计算两点的差?例如:(5,7) - (2,3) = (3,4) using point = boost::geometry::model::point point p1 (2, 3); point
我是 ARKit 的新手,在检查了一些示例代码后,如 https://developer.apple.com/sample-code/wwdc/2017/PlacingObjects.zip我想知道是
社区。 我正在编写一些机器学习代码,将一些数据分类。 我尝试了不同的方法,但是当我使用SVM时,我遇到了这个问题。 我有一组简单的数据(3 个类别,6 个特征),当我使用具有固定参数(C=10、gam
我只是在查看不同问题的答案以了解更多信息。我看到一个answer这表示在 php 中编写 是不好的做法 for($i=0;$i
我正在编写一个界面,我必须在其中启动 4 个 http 请求才能获取一些信息。 我用两种方式实现了接口(interface): 使用顺序 file_get_contents。 使用多 curl 。 我
我想用随机数来愚弄一下,如果 haskell 中的随机生成器是否均匀分布,因此我在几次尝试后写了下面的程序(生成的列表导致堆栈溢出)。 module Main where import System.
我在 Tensorflow 中构建了一个 LSTM 分类器(使用 Python),现在我正在做一系列基准测试来衡量执行性能。基准测试代码加载在训练期间保存的模型并针对大量输入执行它。我有一个 Pyth
不久前,我重构了单元格渲染器组件以实现性能提升(我有一个巨大的表格)。我从功能性无状态组件重构为 PureComponent。例如: import React from 'react'; import
当我改变缓冲区的大小时,我得到了无法从 BufferedReader 解释的奇怪结果。 我曾强烈期望性能会随着缓冲区大小的增加而逐渐增加, yield 递减设置相当快,此后性能或多或少会持平。但看起来
我正在尝试为 1000 个正面+负面标签的 IMDB 评论 (txt_sentoken) 和 Java 的 weka API 构建一个基于朴素贝叶斯的分类器。 由于我不知道 StringToWordV
我是一名优秀的程序员,十分优秀!