Mathematica真的什么都能求出来吗
2014-12-04
展开全部
Mathematica 强大的符号计算和化简能力相信会让不少人震撼不已。输入 Sum[1/n^2, {n, 1, ∞}] , Mathematica 竟然知道它等于 π^2/6 。我不禁问自己, Mathematica 真的什么都能化简出来吗?今天,我偶然遇到一个简单的表达式, Mathematica 竟然不知道它的精确值。
在 Mathematica 中输入 Cot[π/2] , Mathematica 会告诉你它等于 0 ;在 Mathematica 中输入 Cot[π/4] , Mathematica 会告诉你它等于 1 ;但在 Mathematica 中输入 Cot[π/8] , Mathematica 返回的却还是一个 Cot[π/8] ,并没有给出它的值。而 Cot[π/8] 并不是一个复杂到无法用四则运算和平方开方表达出来的数。在一个边长为 1 的正八边形中,每条边的所对应的“圆心角”为 2π/8 = π/4 ,因此“圆周角” α 就等于 π/8 。由下图我们可以轻易看出, Cot[π/8]=√2+1 。
哈哈!我大笑,原来 Mathematica 也有做不到的事情!于是,我查了查 Mathematica 的帮助文档,想看看 Mathematica 对这个问题有何说明。万万没有想到的是,其实 Mathematica 并不是不知道 Cot[π/8] 等于多少,只是智能地保留了 Cot[π/8] 的形式。如果你愿意的话,可以用 FunctionExpand 函数将其展开,得到 Cot[π/8] 的精确结果。
Mathematica 真有那么无敌吗?不妨继续拿三角函数考考 Mathematica ,试探出 Mathematica 的极限。由于正十七边形可以用尺规作图作出,因此 π/17 的三角函数值理论上说是可以表示出来的。而无所不知的 Mathematica 也再一次给出了我们期待的结果:
联想到正 65537 边形也能用尺规作图完成,这表明 π/65537 的三角函数值也能展开为用有限次加减乘除和平方开方构成的表达式。 Mathematica 还能算出 π/65537 的三角函数值吗?这下 Mathematica 似乎无能为力了。
由此可见, Mathematica 并不是万能的。 Mathematica 之所以能求出 π/17 的三角函数值,可能仅仅是因为它预先存储了这个值。
我又开始在想, Mathematica 化简不出,别的符号计算软件能把它化简出来吗?是否存在这么一个牛 B 的数学软件,输进去的任意表达式都可以化简成你想要的形式?后来我想到,这和软件牛不牛 B 是没有关系的。任意符号表达式的化简求值从理论上说就是一个不可能完成的任务。
首先,我们将说明化简求值至少是 NP-hard 的。我们下面将说明,我们能够把任意一个整数线性规划问题“编码”为级数的化简求值问题。例如,考虑下面这个整数规划问题:
最大化 x+y 的值,其中 x 、 y 满足:
x > 0
y > 0
x ≤ 5
y ≤ 5
2x + y < 12.5
x + 3y < 16.5
我们将考虑它的两个判定问题: x+y 是否能取到 8 ? x+y 是否能取到 9 ?
为了把这个问题用一个级数表达出来,我们只需要用到这么一个函数: f(x)=x/√x^2 。这个初等函数有一个非常有用的性质:当 x 大于 0 时, f(x) = 1 ;当 x 小于 0 时, f(x) = -1 。因此, (f(a - b) + 1)/2 就可以用来判断 a 是否大于 b (假设 a 、 b 不相等)。如果 a 大于 b ,函数值为 1 ;否则,函数值为 0 。
为了判断出 x+y 是否能取到 8 ,我们只需要计算下面这个级数的值即可(我们用“大于 7.5 ”来代替&l
在 Mathematica 中输入 Cot[π/2] , Mathematica 会告诉你它等于 0 ;在 Mathematica 中输入 Cot[π/4] , Mathematica 会告诉你它等于 1 ;但在 Mathematica 中输入 Cot[π/8] , Mathematica 返回的却还是一个 Cot[π/8] ,并没有给出它的值。而 Cot[π/8] 并不是一个复杂到无法用四则运算和平方开方表达出来的数。在一个边长为 1 的正八边形中,每条边的所对应的“圆心角”为 2π/8 = π/4 ,因此“圆周角” α 就等于 π/8 。由下图我们可以轻易看出, Cot[π/8]=√2+1 。
哈哈!我大笑,原来 Mathematica 也有做不到的事情!于是,我查了查 Mathematica 的帮助文档,想看看 Mathematica 对这个问题有何说明。万万没有想到的是,其实 Mathematica 并不是不知道 Cot[π/8] 等于多少,只是智能地保留了 Cot[π/8] 的形式。如果你愿意的话,可以用 FunctionExpand 函数将其展开,得到 Cot[π/8] 的精确结果。
Mathematica 真有那么无敌吗?不妨继续拿三角函数考考 Mathematica ,试探出 Mathematica 的极限。由于正十七边形可以用尺规作图作出,因此 π/17 的三角函数值理论上说是可以表示出来的。而无所不知的 Mathematica 也再一次给出了我们期待的结果:
联想到正 65537 边形也能用尺规作图完成,这表明 π/65537 的三角函数值也能展开为用有限次加减乘除和平方开方构成的表达式。 Mathematica 还能算出 π/65537 的三角函数值吗?这下 Mathematica 似乎无能为力了。
由此可见, Mathematica 并不是万能的。 Mathematica 之所以能求出 π/17 的三角函数值,可能仅仅是因为它预先存储了这个值。
我又开始在想, Mathematica 化简不出,别的符号计算软件能把它化简出来吗?是否存在这么一个牛 B 的数学软件,输进去的任意表达式都可以化简成你想要的形式?后来我想到,这和软件牛不牛 B 是没有关系的。任意符号表达式的化简求值从理论上说就是一个不可能完成的任务。
首先,我们将说明化简求值至少是 NP-hard 的。我们下面将说明,我们能够把任意一个整数线性规划问题“编码”为级数的化简求值问题。例如,考虑下面这个整数规划问题:
最大化 x+y 的值,其中 x 、 y 满足:
x > 0
y > 0
x ≤ 5
y ≤ 5
2x + y < 12.5
x + 3y < 16.5
我们将考虑它的两个判定问题: x+y 是否能取到 8 ? x+y 是否能取到 9 ?
为了把这个问题用一个级数表达出来,我们只需要用到这么一个函数: f(x)=x/√x^2 。这个初等函数有一个非常有用的性质:当 x 大于 0 时, f(x) = 1 ;当 x 小于 0 时, f(x) = -1 。因此, (f(a - b) + 1)/2 就可以用来判断 a 是否大于 b (假设 a 、 b 不相等)。如果 a 大于 b ,函数值为 1 ;否则,函数值为 0 。
为了判断出 x+y 是否能取到 8 ,我们只需要计算下面这个级数的值即可(我们用“大于 7.5 ”来代替&l
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询