头条新闻
Mathematica 5 发布
作者:Eric W. Weisstein
2003年6月23日——今日,总部位于伊利诺伊州香槟市的 , Inc. 宣布发布其强大的数学计算系统 Mathematica 的一个重要新版本。Mathematica 5 具有许多新的数学和编程函数,并对其数值引擎进行了全面改革,在任意精度算术以及闪电般快速的数值线性代数方面产生了令人印象深刻的速度提升。在拥有令人印象深刻的速度和功能增强的同时,Mathematica 5 构建于之前版本的坚实技术之上,这些技术在过去 15 年中已被全球数百万人使用。
6 月 23 日对于这样一个重要的新版本来说是一个特别合适的发布日期,因为它也标志着 成立 15 周年。正如公司历史时间线所示,Mathematica 5 已经酝酿了四年,之前的点版本发布于 1999 年 3 月。
的读者将极大地受益于 Mathematica 5 的新增和增强功能,该版本已广泛用于网站上出现的计算和推导,以及为 1000 多个单独条目提供的可下载 Mathematica 笔记本中。以下示例仅展示了 Mathematica 5 中可用新功能的冰山一角。更详细的列举可以在 的“Version 5 新功能”页面上找到。
内置统计函数
在版本 5 中,常见的统计函数,例如平均值, 方差,以及中位数现在已内置于内核中,不再需要通过软件包加载。此外,便捷的新函数总和现在可以用来高效地添加数字列表。
SeedRandom[1234]; data = Table[Random[Integer, {1, 10}], {10}] {1, 4, 5, 5, 1, 9, 8, 4, 5, 9} Total[data] 51 Median[data] 5 Mean[data] 51/10 Variance[data] 749/90
内置向量和矩阵范数
在 Mathematica 5 中,向量和矩阵范数现在已内置。新函数Norm因此提供了一种方便的方法来计算各种数学范数。相同的命令也可用于计算复数范数。
Norm[Range[4], #]& /@ {1, 2, Infinity} {10, Sqrt[30], 4} Norm[Partition[Range[9], 3], #]& /@ {1, 2, Frobenius, Infinity} {18, Sqrt[(3*(95 + Sqrt[8881]))/2], Sqrt[285], 24} Norm[1 + 2I] Sqrt[5]
增强的积分功能
Mathematica 的Integrate功能在版本 5 中得到了简化、改进和系统扩展。特别地,对于定积分中具有任意复数值的参数,条件生成得到了显著改进。当与 Mathematica 5 增强的Assumptions和新的Assuming技术结合使用时,这为计算困难的积分(即使是那些具有复杂参数的积分)提供了坚实的框架,具有前所未有的准确性和严谨性。
Integrate[D[x Sqrt[Sin[x]], x], x] x*Sqrt[Sin[x]] Integrate[Sqrt[(x - y)^2], {x, 0, 1}, {y, 0, 1}] 1/3 Integrate[Abs[x - y], {x, 0, 1}, {y, 0, 1}] 1/3 Integrate[Sqrt[(x1 - x2)^2 + (y1 - y2)^2], {x1, 0, 1}, {x2, 0, 1}, {y1, 0, 1}, {y2, 0, 1}] (2 + Sqrt[2] + 5*ArcSinh[1])/15 Integrate[Log[x], {x, a, b}, Assumptions -> 0< a <b] a - b - a*Log[a] + b*Log[b] << Statistics`MultinormalDistribution`; p = PDF[MultinormalDistribution[{0, 0}, {{1, rho}, {rho, 1}}], {x1, x2}]; Integrate[p, {x1, -Infinity, 0}, {x2, -Infinity, 0}, Assumptions -> 0 < rho < 1] (Pi + 2*ArcSin[rho])/(4*Pi)
改进的递推方程求解器
命令RSolve已针对 Mathematica 5 完全重写并提升为内核函数。它包含一个最先进的求解器,可以解决大量常见的递推方程。例如,RSolve现在可以找到 logistic 方程的三个精确可解情况的解
xn+1 = xn(1-xn). | (1) |
RSolve[{x[n+1] == # x[n](1-x[n]), x[0] == x0}, x[n], n]& /@ {-2, 2, 4} {{{x[n] -> (1 + 2*Cos[2^n*ArcCos[(-1 + 2*x0)/2]])/2}}, {{x[n] -> (1 - (1 - 2*x0)^2^n)/2}}, {{x[n] -> (1 - Cos[2^n*ArcCos[1 - 2*x0]])/2}}}
使用求解 Pell 方程Reduce
Pell 方程是二次丢番图方程的一个简单示例。Pell 方程是
x2 - d y2 = 1, | (2) |
由于 Mathematica 5 强大的新Reduce语法,可以使用以下命令轻松找到此方程在整数上的通解。
Reduce[x^2 - 61y^2 == 1, {x, y}, Integers] C[1] \[Element] Integers && C[1] >= 0 && x == (-(1766319049 - 226153980*Sqrt[61])^C[1] - (1766319049 + 226153980*Sqrt[61])^C[1])/2 && y == -((1766319049 - 226153980*Sqrt[61])^C[1] - (1766319049 + 226153980*Sqrt[61])^C[1])/(2*Sqrt[61]) || C[1] \[Element] Integers && C[1] >= 0 && x == (-(1766319049 - 226153980*Sqrt[61])^C[1] - (1766319049 + 226153980*Sqrt[61])^C[1])/2 && y == ((1766319049 - 226153980*Sqrt[61])^C[1] - (1766319049 + 226153980*Sqrt[61])^C[1])/(2*Sqrt[61]) || C[1] \[Element] Integers && C[1] >= 0 && x == ((1766319049 - 226153980*Sqrt[61])^C[1] + (1766319049 + 226153980*Sqrt[61])^C[1])/2 && y == -((1766319049 - 226153980*Sqrt[61])^C[1] - (1766319049 + 226153980*Sqrt[61])^C[1])/(2*Sqrt[61]) || C[1] \[Element] Integers && C[1] >= 0 && x == ((1766319049 - 226153980*Sqrt[61])^C[1] + (1766319049 + 226153980*Sqrt[61])^C[1])/2 && y == ((1766319049 - 226153980*Sqrt[61])^C[1] - (1766319049 + 226153980*Sqrt[61])^C[1])/(2*Sqrt[61])
这是通解,给出了此方程在指定域(整数)上所有可能解的完整参数化。要仅获得达到某个限制的解,可以使用以下语法。
Reduce[x^2 - 61y^2 == 1 && x > 0 && 0 < y < 10^9, {x, y}, Integers] x == 1766319049 && y == 226153980
使用几何证明Resolve
Mathematica 5 现在可以使用量词消除来严格证明许多几何恒等式和不等式。例如,来自三角形几何的一个优美恒等式指出,边长为 a、b 和 c,对应角为 A、B 和 C 的三角形的内切圆半径 r 和外接圆半径 R 之间存在以下关系:
1 + r/R = cos A + cos B + cos C. | (3) |
手动演示这个恒等式对于几何学学生来说是一个很好的练习,但计算机并不擅长。但是,可以通过将问题表述为逻辑表达式“对于所有对应于三角形边长的 a、b 和 c,恒等式 (3) 成立”,然后评估结果是否为真(命题正确)或假(命题不正确)。注意到三个数字作为三角形边长的条件由下式给出:
a, b, c > 0, a + b > c, b + c > a, a + c > b. | (4) |
然后可以在 Mathematica 中编写如下。
Resolve[ForAll[{a, b, c}, a > 0 && b > 0 && c > 0 && a + b > c && b + c > a && a + c > b, Cos[A] + Cos[B] + Cos[C] == r/R + 1 /.{ r -> Sqrt[(b + c - a)(c + a - b)(a + b - c)/(a + b + c)]/2, R -> a b c/Sqrt[(a + b + c)(b + c - a)(c + a - b)(a + b - c)], Sequence @@ Thread[{A, B, C} -> (ArcCos[(-#1^2 + #2^2 + #3^2)/(2#2#3)]&@@@NestList[RotateLeft, {a, b, c}, 2])] }]]真
由于结果是真, 该命题已得到证明。
参考文献, Inc. “Mathematica 5。” http://www.wolfram.com/mathematica/
, Inc. “Version 5 新功能。” http://www.wolfram.com/mathematica/newin5/