zuijianqiugen 发表于 2018-1-20 13:16:00

求定积分的极限值

本帖最后由 zuijianqiugen 于 2018-1-20 13:16 编辑

A(k) =(a → 0)∫(a,k/a)x)]dx =? .其中,k>0.

kastin 发表于 2018-1-20 16:38:10

注意到当 `x\to 0` 时 `\ln x \sim~ \mathrm{Ei}(-x)`,以及 `\mathrm{Ei}(-k/x)\to 0\;(k>0)`,这里 `\mathrm{Ei}(x)` 是指数积分\[\mathrm{Ei}(x)=\int_{-x}^{\infty}\frac{\mathrm{e}^{-t}}{t}\dif t\]不难计算出\

zuijianqiugen 发表于 2018-1-20 21:45:12

kastin 发表于 2018-1-20 16:38
注意到当 `x\to 0` 时 `\ln x \sim~ \mathrm{Ei}(-x)`,以及 `\mathrm{Ei}(-k/x)\to 0\;(k>0)`,这里 `\mat ...

用计算软件得出的数值与你算出的结果有偏差。

zuijianqiugen 发表于 2018-1-20 22:50:38

kastin 发表于 2018-1-20 16:38
注意到当 `x\to 0` 时 `\ln x \sim~ \mathrm{Ei}(-x)`,以及 `\mathrm{Ei}(-k/x)\to 0\;(k>0)`,这里 `\mat ...

用积分计算器:
函数式为:(1/x)*(1-2*(%e)^(-x))
x从0.001到1000
计算积分得1.152431829691975

wayne 发表于 2018-1-21 11:06:30

我用软件计算发现接近于0的地方 原函数的积分是发散的。

mathe 发表于 2018-1-21 11:55:19

是的,需要0和无穷部分相互抵消

zuijianqiugen 发表于 2018-1-21 14:35:59

wayne 发表于 2018-1-21 11:06
我用软件计算发现接近于0的地方 原函数的积分是发散的。

此积分取极限后,是一个不定型广义积分。端点关系不同,其积分值也不同。

mathe 发表于 2018-1-21 14:50:33

\
\=\lim_{a->0}\ln(\sqrt{k})-\ln(a)-E_1(a)\]
\=\lim_{a->0}\ln(\sqrt{k})-\ln(a)+\gamma+\ln(a)=\frac{\ln{k}}{2}+\gamma\]
http://mathworld.wolfram.com/En-Function.html

kastin 发表于 2018-1-21 14:58:49

zuijianqiugen 发表于 2018-1-20 22:50
用积分计算器:
函数式为:(1/x)*(1-2*(%e)^(-x))
x从0.001到1000


第一,判别准确性需要建立一个标准,取有限位数字并不能说明什么,因为根据问题的不同,收敛速度也会不一样。比如,众所周知调和级数`\sum_{k=1}^{\infty}\frac 1 k`是发散的,但取1到1000数值求和计算约等于7.485470860550345,这个结果与 `\infty` 相差甚远,能否说明调和级数结果是 `\infty` 的结论就不准确?再比如 `\D\lim_{x\to 0}\frac{\sin x}{x}=1`,然而采用数值验证 `x=0.0001`,发现结果约为0.00009999999983333334,跟1相差也很大,这种验证就能说明 `\D\lim_{x\to 0}\frac{\sin x}{x}=1` 不对吗?所以类似地,4#中取0.001到1000得到的结果说明不了什么。

第二,数值计算并不总能验证分析的结果,因为计算机本身能表示的精度是有限的,舍入误差会导致有效数字丢失。
至少在这两种情况下是如此:

1)存在无穷的加减
因为数值计算无论数值多么大,其本身仍是限数值的计算,服从四则运算规律,但无穷大量却不服从有限数的运算规律。所以,无论如何数值运算都得不到无穷大量加减运算的精确结果,楼主的问题正是这种情形。实际上楼主的问题更为复杂,因为还会牵扯到数值积分中用到的积分策略和规则,以及一些加速收敛技术等,这些对结果的好坏至关重要(下面将说明)。

2)软件的数值计算(比如级数求和,数值积分等)过程中使用不合适的方法
一些数学软件会在数值计算(微分方程数值求解、级数求和、数值积分、方程求根等)过程中会提供不同的方法(规则和策略)的选项供用户选择(比如MMA中NIntegrate函数对于数值积分中内置的策略和规则的使用 http://reference.wolfram.com/language/tutorial/NIntegrateOverview.html),以及加速策略(比如《数值积分中加速收敛法的应用》中提到的http://xueshu.baidu.com/s?wd=paperuri%3A%28010ce0851551bac1ceb32a37b56479e0%29&filter=sc_long_sign&tn=SE_xueshusource_2kduw22v&sc_vurl=http%3A%2F%2Fwww.doc88.com%2Fp-9992626528300.html&ie=utf-8&sc_us=16070319582609936229)。通常,软件会默认选择常用的方法(大多数情况下有效),但对一些特殊的问题(比如高振荡积分、慢收敛积分),必须人工指定方法和精度,否则就会产生很大的误差(甚至得不到收敛的结果)。另外,如果数值计算的中间过程中,变量的数值非常大(比如涉及到无穷大的加减无穷大很小的数的加减),会造成有效数字的丢失,从而出现非常大的累计误差,数值结果就不准确。

比如`k=1`时
`a=10^{-4}`,NIntegrate), {x, 10^-4, 1/10^-4}]结果约为0.5771156674014823
`a=10^{-105}`,NIntegrate), {x, 10^-105, 1/10^-105}] ,结果显示不收敛:
NIntegrate::ncvb: 在接近 {x} = {1.565264454266327*10^48} 处的 x 中进行 9 次迭代对分后,NIntegrate 无法收敛到规定的准确度. 对于积分和误差估计,NIntegrate 得到 8.941160395404722 和 17.35772152787667. >>
8.941160395404722

zuijianqiugen 发表于 2018-1-21 15:05:03

mathe 发表于 2018-1-21 14:50
\
\=\lim_{a->0}\ ...

A是何意?
页: [1] 2
查看完整版本: 求定积分的极限值