Boost C++ Libraries Home Libraries People FAQ More

Boost.Math

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)


Boost.Math 提供了以下類庫:

類庫

描述

複數反三角函數

HTML 文檔

PDF 文檔

這些複數算法是當前出現在C++標準中的反三角函數. 與這些函數等價的函數是C99標準的一部分, 同樣也是 C++技術報告之庫擴展的一部分.

最大公約數和最小公倍數

HTML 文檔

PDF 文檔

頭文件 <boost/math/common_factor.hpp> 中的類模板和函數模板 提供運行時和編譯時的兩個數的最大公約數(GCD) 或 最小倍數(LCM)的計算. 對於面向數值計算的編程問題這些類和函數是十分有用的.

八元數

HTML 文檔

PDF 文檔

八元數, 像四元數一樣, 是與複數類似的一種數.

八元數在理論物理中有一定的應用.

在實際的術語中, 一個八元數只不過是我們可以寫作o = α + βi + γj + δk + εe' + ζi' + ηj' + θk', 這種形式的八維實數(α,β,γ,δ,ε,ζ,η,θ). 其中i, jk 與它們在四元數中的含義是一樣的, 而 e', i', j'k' 是和 i (or j or k) 本質上起相同作用的不同對像.

定義在八元數上的加法和乘法運算推廣了在四元數上的加法和乘法運算. 主要的新奇之處在於八元數的乘法運算是不可交換的, 甚至也是不可結合 (例如. 對於八元數: x, yz 那麼 x(yz) ≠ (xy)z). 一種記住這些規則的方法是使用下面的乘法表:

octonion_blurb17

八元數 (以及它的同類數) 在其它的 文檔 (附帶 勘誤和補遺) 中有更詳細的描述.

一些傳統的概念, 例如 指數, 可以不需要太大的更改就可以在八元數中延用下去, 但是其它的一些概念, 例如 求平方根, 就不以在八元數中延用 ( 指數有一個 關閉形式( closed form )的事實源於作者, 但是八元數存在指數運算的事實在很久以前就被人們所知曉).

特殊函數

HTML 文檔

PDF 文檔

提供了一些高質量的特殊函數, 最初這些函數以及C++技術報告之庫擴展中的相關函數集中於統計學應用程序中使用的函數.

當前實現的函數是gamma, beta & erf 以及不完全的 gamma 和 beta 函數 (每一個函數都有四種不同的變型) 以及這些函數的所有可能的反函數, 外加 digamma, 各種不同的階乘函數, 貝賽爾函數, 橢圓積分, sinus cardinals (以及它們的雙曲變型), 反雙曲函數, Legrendre 多項式 , 拉格朗日多項式 , 哈米特多項式 以及各種特別的冪函數和對數函數.

所有的這些實現都是完全的泛型 並且支持任意實數類型, 雖然它們對於那些已知significand sizes(或者 mantissa sizes )的類型是最優的 (譯注: significand 在wikipedia中的解釋為,一個浮點數包含它的有效數字的那一部分) 大小: 代表性地 float, double or long double.

統計 分佈

HTML 文檔

PDF 文檔

提供了相當全面的統計分佈, 基於這些統計分佈可以建立高層次的統計測試.

最初的關注焦點在中央單變量分佈(central univariate distributions)之上. 類庫提供了連續分佈(像 正態分佈 & 費歇爾分佈) 和 離散分佈 (像 二項分佈 & 泊松分佈) .

提供了一個很全面的手冊, 以及一系列用於說明如何使用這個類庫來構造統計測試的可運行的例子.

四元數

HTML 文檔

PDF 文檔

四元數是與複數類似的一種數.

四元數實際上是建立在實數之上的一個小的層次結構的一部分, 這個層次結構僅僅包含實數集(習慣上叫做 R), 複數集(習慣上叫做 C), 四元數集(習慣上叫做 H) 以及八元數集(習慣上叫做 O), 這些數集具有有趣的數學特性(最主要的一點在於它們是可除代數(division algebras), 即. 下面的性質為真: 如果 y 是可除代數集的一個元素並且不等於0, 且 yx = yx', 其中xx' 是可除代數的元素, 則一定有 x = x'). 這個層次結構中的每一個成員 都是前者的超集(super-set).

四元數最重要的方面之一在於它提供了一種高效的方法用於參數化(parameterize)在R3 (通常所說的三維空間) 和 R4(四維空間)中的旋轉(幾何旋轉).

在實際的術語中, 一個四元數只不過是我們可以寫作 q = α + βi + γj + δk 這種形式的四維實數(α,β,γ,δ), 其中 i 與它們在複數中的含義是一樣的, 而jk 是和i本質上起相同作用的不同對像 .

定義在這種四元數之上的加法與乘法運算, 是實數和複數上的加法與乘法運算的推廣. 這裡主要的新奇之處在於 乘法運算是不可交換的 (也就是說, 對於四元數 xy 那麼 xy ≠ yx)(譯注:也即是不滿足交換律). 一種記憶這些規則的好方法是通過使用下面的公式 i*i = j*j = k*k = -1.

在其它的 文檔 中, 四元數 (以及它們的同類數)有更加詳細的描述 ((附帶 勘誤表和補遺).

一些傳統的概念,例如指數,不需要太大的改變就可以在四元數的中繼續延用, 但是其它的一些概念,比如求平方根就不能繼續延用.

下面的Boost類庫也是面向數學的:

類庫

描述

整數

用於簡化處理整數類型的頭文件.

區間

就像它的名字所暗示的那樣, 這個庫用於幫助操作數學區間, 它由一個單獨的頭文件<boost/numeric/interval.hpp> 組成以及以及一個可以用作interval<T>的主要類型.

多維數組

Boost.MultiArray 提供了一個泛化的N維數組的定義以及 N維數組接口的通用實現.

數值轉換

Boost 數值轉換庫是用於描述和實現不同數值類型的數值之間的轉換的工具集.

運算符

頭文件 <boost/operators.hpp> 提供了一些類模板( 在名字空間 boost 中). 通過提供最少數量的基本運算符的方式, 這些模板定義了在名字空間作用域中的運算符.

隨機數

隨機數在各種各樣的應用程序中都是很有用的. Boost 隨機數庫 (簡稱 Boost.Random) 提供了大量不同的發生器 和分佈(distributions) 用於產生具有有用屬性的隨機數, 例如 均勻分佈.

有理數

頭文件 rational.hpp 提供了有理數的一種實現. 這種實現是基於模板的, 以一種類似於標準庫中的複數類的形式.

uBLAS

uBLAS 是一個 C++ 模板類庫, 它提供BLAS level 1, 2, 3 功能針對於密集矩陣、壓縮矩陣和稀疏矩陣. 通過運算符重載以及基於表達式模板的高效代碼生成技術來設計和實現統一的數學符號.

Last revised: May 28, 2008 at 10:39:25 +0100