- 前言
- HskEta函数
- HskKsi函数
- 广义HskEta函数
- 定义式
- 主项分析
- 余项分析
由于毕设的数学推导中涉及了 ∑ n = 1 ∞ x n n ! × n sum_{n=1}^{infty}{frac{x^n}{n!times n}} ∑n=1∞n!×nxn 和 ∑ n = 1 ∞ x n n ! × n 2 sum_{n=1}^{infty}{frac{x^n}{n!times n^2}} ∑n=1∞n!×n2xn 这两个神奇的函数,其中 ∑ n = 1 ∞ x n n ! × n sum_{n=1}^{infty}{frac{x^n}{n!times n}} ∑n=1∞n!×nxn 倒是和指数积分函数 E i ( x ) mathrm{Ei}left(xright) Ei(x) 有关,后面的以及推广形式就没有什么特殊的地方了。于是我给这两个函数命名为了 η ( x ) = ∑ n = 1 ∞ x n n ! × n eta left( x right) =sum_{n=1}^{infty}{frac{x^n}{n!times n}} η(x)=∑n=1∞n!×nxn 和 ξ ( x ) = ∑ n = 1 ∞ x n n ! × n 2 xi left( x right) =sum_{n=1}^{infty}{frac{x^n}{n!times n^2}} ξ(x)=∑n=1∞n!×n2xn 。
反正闲得无聊,最后我的算法是要在 C++ 平台上进行实现的,不如自己造一手轮子。所以顺便研究了一般形式 ∑ n = 1 ∞ x n n ! × n k sum_{n=1}^{infty}{frac{x^n}{n!times n^k}} ∑n=1∞n!×nkxn 的递推计算表达式,并用数学证明给出了余项估计。
注意:因为我的场景只涉及 x ⩾ 0 xgeqslant0 x⩾0 的情形,所以没有取绝对值,如果要应用到一般场景,需要在判断条件处加绝对值
HskEta函数注:为了与已有函数区分,函数名前均加了Hsk,Hsk是我的ID的缩写(羽咲->Hasaki->Hsk)
令
a
n
(
x
)
=
x
n
n
!
×
n
(1.1)
a_nleft( x right) =frac{x^n}{n!times n}tag{1.1}
an(x)=n!×nxn(1.1)
则
η
(
x
)
=
∑
n
=
1
∞
x
n
n
!
×
n
=
∑
n
=
1
N
a
n
(
x
)
+
∑
n
=
N
+
1
∞
a
n
(
x
)
=
η
N
(
x
)
+
R
N
+
1
(
x
)
(1.2)
begin{aligned} eta left( x right) &=sum_{n=1}^{infty}{frac{x^n}{n!times n}}\ &=sum_{n=1}^N{a_nleft( x right)}+sum_{n=N+1}^{infty}{a_nleft( x right)}\ &=eta _Nleft( x right) +R_{N+1}left( x right)\ end{aligned}tag{1.2}
η(x)=n=1∑∞n!×nxn=n=1∑Nan(x)+n=N+1∑∞an(x)=ηN(x)+RN+1(x)(1.2)
其中前面的
η
N
(
x
)
eta _Nleft( x right)
ηN(x) 称为主项,
R
N
+
1
(
x
)
R_{N+1}left( x right)
RN+1(x) 称为余项,我们将在第3章证明在给定误差
ε
varepsilon
ε 较小时有
∣
R
N
(
x
)
∣
<
2
∣
a
N
+
1
(
x
)
∣
left| R_Nleft( x right) right|<2left| a_{N+1}left( x right) right|
∣RN(x)∣<2∣aN+1(x)∣ 成立,并证明了递推表达式
a
n
−
1
(
x
)
×
[
(
1
−
1
n
)
1
n
]
x
a_{n-1}left( x right)times left[ left( 1-frac{1}{n} right) frac{1}{n} right] x
an−1(x)×[(1−n1)n1]x 。
因此写出代码
#define HSK_EPSILON 0.000001
double HskEta (double x) {
double ans = 0;
double an = x; // a1(x)
double n;
for (n = 2; 2 * an > HSK_EPSILON; ++ n) {
ans += an;
double coff = 1 / n;
an *= coff * (1 - coff) * x; // a{n}(x) <- a{n-1}(x)
}
return ans;
}
HskKsi函数
令
a
n
(
x
)
=
x
n
n
!
×
n
2
(2.1)
a_nleft( x right) =frac{x^n}{n!times n^2}tag{2.1}
an(x)=n!×n2xn(2.1)
则
ξ
(
x
)
=
∑
n
=
1
∞
x
n
n
!
×
n
=
∑
n
=
1
N
a
n
(
x
)
+
∑
n
=
N
+
1
∞
a
n
(
x
)
=
ξ
N
(
x
)
+
R
N
+
1
(
x
)
(2.2)
begin{aligned} xi left( x right) &=sum_{n=1}^{infty}{frac{x^n}{n!times n}}\ &=sum_{n=1}^N{a_nleft( x right)}+sum_{n=N+1}^{infty}{a_nleft( x right)}\ &=xi _Nleft( x right) +R_{N+1}left( x right)\ end{aligned}tag{2.2}
ξ(x)=n=1∑∞n!×nxn=n=1∑Nan(x)+n=N+1∑∞an(x)=ξN(x)+RN+1(x)(2.2)
其中前面的
ξ
N
(
x
)
xi _Nleft( x right)
ξN(x) 称为主项,
R
N
+
1
(
x
)
R_{N+1}left( x right)
RN+1(x) 称为余项,我们将在第3章证明在给定误差
ε
varepsilon
ε 较小时有
∣
R
N
(
x
)
∣
<
2
∣
a
N
+
1
(
x
)
∣
left| R_Nleft( x right) right|<2left| a_{N+1}left( x right) right|
∣RN(x)∣<2∣aN+1(x)∣ 成立,并证明了递推表达式
a
n
−
1
(
x
)
×
[
(
1
−
1
n
)
2
1
n
]
x
a_{n-1}left( x right)times left[ left( 1-frac{1}{n} right) ^2frac{1}{n} right] x
an−1(x)×[(1−n1)2n1]x 。
因此写出代码
#define HSK_EPSILON 0.000001
double HskKsi (double x) {
double ans = 0;
double an = x; // a1(x)
double n;
for (n = 2; 2 * an > HSK_EPSILON; ++ n) {
ans += an;
double coff = 1 / n;
an *= coff * (1 - coff) * (1 - coff) * x; // a{n}(x) <- a{n-1}(x)
}
return ans;
}
广义HskEta函数
这部分给出上面内容的数学推导与严格证明。
定义式令
a
n
(
x
)
=
x
n
n
!
×
n
k
(3.1)
a_nleft( x right) =frac{x^n}{n!times n^k}tag{3.1}
an(x)=n!×nkxn(3.1)
则
η
(
x
)
=
∑
n
=
1
∞
x
n
n
!
×
n
k
=
∑
n
=
1
N
a
n
(
x
)
+
∑
n
=
N
+
1
∞
a
n
(
x
)
=
η
N
(
x
)
+
R
N
+
1
(
x
)
(3.2)
begin{aligned} eta left( x right) &=sum_{n=1}^{infty}{frac{x^n}{n!times n^k}}\ &=sum_{n=1}^N{a_nleft( x right)}+sum_{n=N+1}^{infty}{a_nleft( x right)}\ &=eta _Nleft( x right) +R_{N+1}left( x right)\ end{aligned}tag{3.2}
η(x)=n=1∑∞n!×nkxn=n=1∑Nan(x)+n=N+1∑∞an(x)=ηN(x)+RN+1(x)(3.2)
主项迭代式
a
n
(
x
)
=
x
n
−
1
(
n
−
1
)
!
×
(
n
−
1
)
k
×
(
n
−
1
)
k
n
k
+
1
x
=
x
n
−
1
(
n
−
1
)
!
×
(
n
−
1
)
k
×
[
(
1
−
1
n
)
k
1
n
]
x
=
a
n
−
1
(
x
)
×
[
(
1
−
1
n
)
k
1
n
]
x
(3.3)
begin{aligned} a_nleft( x right) &=frac{x^{n-1}}{left( n-1 right) !times left( n-1 right) ^k}times frac{left( n-1 right) ^k}{n^{k+1}}x\ &=frac{x^{n-1}}{left( n-1 right) !times left( n-1 right) ^k}times left[ left( 1-frac{1}{n} right) ^kfrac{1}{n} right] x\ &=a_{n-1}left( x right)times left[ left( 1-frac{1}{n} right) ^kfrac{1}{n} right] x\ end{aligned}tag{3.3}
an(x)=(n−1)!×(n−1)kxn−1×nk+1(n−1)kx=(n−1)!×(n−1)kxn−1×[(1−n1)kn1]x=an−1(x)×[(1−n1)kn1]x(3.3)
其中主项
η
N
(
x
)
=
∑
n
=
1
N
a
n
(
x
)
(3.4)
eta _Nleft( x right) =sum_{n=1}^N{a_nleft( x right)}tag{3.4}
ηN(x)=n=1∑Nan(x)(3.4)
我们要求余项 $left| R_{N+1}left( x right) right| 我们将证明:若
2
∣
a
N
+
1
(
x
)
∣
<
0.1
2left| a_{N+1}left( x right) right|<0.1
2∣aN+1(x)∣<0.1 且
k
=
1
,
2
k=1,2
k=1,2 有
∣
R
N
(
x
)
∣
<
2
∣
a
N
+
1
(
x
)
∣
left| R_Nleft( x right) right|<2left| a_{N+1}left( x right) right|
∣RN(x)∣<2∣aN+1(x)∣ 成立。 证明: ①若
N
+
2
>
2
∣
x
∣
N+2> 2left| x right|
N+2>2∣x∣ 即
∣
x
∣
N
+
2
<
1
2
frac{left| x right|}{N+2}< frac{1}{2}
N+2∣x∣<21 ,则有下放缩式成立
∣
a
N
+
1
+
p
(
x
)
∣
=
∣
x
∣
N
+
1
+
p
(
N
+
1
+
p
)
!
(
N
+
1
+
p
)
k
=
∣
x
∣
N
+
1
(
N
+
1
)
!
(
N
+
1
+
p
)
k
∣
x
∣
p
(
N
+
2
)
⋯
(
N
+
1
+
p
)
⩽
∣
x
∣
N
+
1
(
N
+
1
)
!
(
N
+
1
)
k
(
∣
x
∣
N
+
2
)
p
<
∣
a
N
+
1
(
x
)
∣
×
(
1
2
)
p
(3.5)
begin{aligned} left| a_{N+1+p}left( x right) right| &=frac{left| x right|^{N+1+p}}{left( N+1+p right) !left( N+1+p right) ^k}\ &=frac{left| x right|^{N+1}}{left( N+1 right) !left( N+1+p right) ^k}frac{left| x right|^p}{left( N+2 right) cdots left( N+1+p right)}\ &leqslant frac{left| x right|^{N+1}}{left( N+1 right) !left( N+1 right) ^k}left( frac{left| x right|}{N+2} right) ^p\ &
∣
R
N
+
1
(
x
)
∣
=
∑
n
=
N
+
1
∞
a
n
(
x
)
=
∑
p
=
0
∞
a
N
+
1
+
p
(
x
)
<
∑
p
=
0
∞
∣
a
N
+
1
(
x
)
∣
×
(
1
2
)
p
=
2
∣
a
N
+
1
(
x
)
∣
(3.6)
begin{aligned} left| R_{N+1}left( x right) right| &=sum_{n=N+1}^{infty}{a_nleft( x right)}\ &=sum_{p=0}^{infty}{a_{N+1+p}left( x right)}\ &< sum_{p=0}^{infty}{left| a_{N+1}left( x right) right| times left( frac{1}{2} right) ^p}\ &=2left| a_{N+1}left( x right) right|\ end{aligned} tag{3.6}
∣RN+1(x)∣=n=N+1∑∞an(x)=p=0∑∞aN+1+p(x)
此时(对于
k
=
1
,
2
k=1,2
k=1,2 )
2
∣
a
N
+
1
(
x
)
∣
⩾
2
∣
a
N
+
1
(
N
+
2
2
)
∣
=
2
(
N
+
2
2
)
N
+
1
(
N
+
1
)
!
(
N
+
1
)
k
>
0.1
(3.7)
begin{aligned} 2left| a_{N+1}left( x right) right|&geqslant 2left| a_{N+1}left( frac{N+2}{2} right) right|\ &=frac{2left( frac{N+2}{2} right) ^{N+1}}{left( N+1 right) !left( N+1 right) ^k}\ &>0.1\ end{aligned} tag{3.7}
2∣aN+1(x)∣⩾2∣∣∣∣aN+1(2N+2)∣∣∣∣=(N+1)!(N+1)k2(2N+2)N+1>0.1(3.7)
关于这里第3行的不等式的证明会十分繁琐,我们可以用 mathematica 画图来展示这一点的正确性,并且展示其他
k
k
k 值对
ε
varepsilon
ε 的要求。
Table[NMinimize[{(2 ((x + 2)/2)^(x + 1))/((x + 1)! (x + 1)^k), x > 0,
x < 50}, x], {k, 0, 10}]
Plot[(2 ((x + 2)/2)^(x + 1))/((x + 1)! (x + 1)^1), {x, 0, 10}]
这与前提 2 ∣ a N + 1 ( x ) ∣ < 0.1 2left| a_{N+1}left( x right) right|<0.1 2∣aN+1(x)∣<0.1 相矛盾,舍去。
证毕。
这意味着在对于 ε < 0.1 varepsilon<0.1 ε<0.1 的情形总有 ∣ R N ( x ) ∣ < 2 ∣ a N + 1 ( x ) ∣ left| R_Nleft( x right) right|<2left| a_{N+1}left( x right) right| ∣RN(x)∣<2∣aN+1(x)∣ 成立,所以我们可以用 2 ∣ a N + 1 ( x ) ∣ 2left| a_{N+1}left( x right) right| 2∣aN+1(x)∣ 作为余项的上界。事实上,可以用斯塔林公式证明最紧的渐近上界为 e e − 1 ∣ a N + 1 ( x ) ∣ frac{mathrm{e}}{mathrm{e}-1}left| a_{N+1}left( x right) right| e−1e∣aN+1(x)∣ ,与这里的结论相差无几。



