
2004 年,我開始沉迷于計算積分,使用微積分學(xué)生已知的基本技術(shù)和 Davenport、Trager 和 Bronstein的Risch 算法及其擴(kuò)展 [1, 2, 3, 4, 5]。從George Beck的分步微分程序WalkD 中獲得靈感,我決定編寫一個計算不定積分的分步程序。
例如,很容易在Mathematica 中編寫一組簡單的替換規(guī)則來對(擴(kuò)展的)多項式進(jìn)行積分:
使用這些規(guī)則,我們現(xiàn)在可以對多項式進(jìn)行積分,例如
:
在花費太多深夜將集成技術(shù)作為模式匹配規(guī)則輸入 Mathematica 之后,我使代碼處于合理狀態(tài),并將其發(fā)送給Wolfram Research,以便可能將其包含在 Mathematica 中。不久之后,我 在Wolfram得到了一份工作,在那工作了幾年,主要致力于Wolfram|Alpha。我的逐步積分器仍在計算許多積分,其中一些我自己很可能已經(jīng)忘記了如何做。
順便說一句,使用基于規(guī)則的編程來計算不定積分的想法可以追溯到 1961 年,當(dāng)時麻省理工學(xué)院的 James Slagle使用符號自動積分器(SAINT)。SAINT 可以解決“大約相當(dāng)于優(yōu)秀大學(xué)新生水平的符號整合問題,事實上,它使用了許多與新生相同的方法(包括啟發(fā)式)”[6]。我編寫的逐步積分器使用了大約 350 條規(guī)則,可以對微積分教科書中 99% 以上的積分進(jìn)行積分。從那時起,Albert Rich 使用 Mathematica 創(chuàng)建了基于規(guī)則的積分器(Rubi),它使用了超過 6,700 條規(guī)則。
快進(jìn)到 2020 年,我已經(jīng)有十年沒有研究過積分了。我決定看看過去 10 年左右取得了哪些進(jìn)展。我對Manuel Kauers 開發(fā)的基于Gröbner 基的算法及由 Brian Miller 開發(fā)的擴(kuò)展特別感興趣,該算法在 AXIOM 計算機(jī)代數(shù)系統(tǒng)中的許多積分 [7, 8] 中似乎可以勝過 Risch 算法的代數(shù)情況。例如:
檢查結(jié)果很簡單:
再一次,我很快就迷上了積分,或者更具體地說,是不定積分的算法解決方案。
當(dāng)我最后一次查看符號積分時,我對 Risch 算法的先驗情況感興趣,其中 Mathematica 有一個近乎完整的實現(xiàn)。例如,下面是 Risch 算法先驗情況的簡單積分:
我對代數(shù)積分更感興趣,它不能與先驗 Risch 算法集成。Risch 算法的代數(shù)情況比先驗情況復(fù)雜得多,并且尚未在任何計算機(jī)代數(shù)系統(tǒng)中完全實現(xiàn)。
我最初考慮了許多微積分教科書中出現(xiàn)的代數(shù)積分:
|
|
如果我們很樂意通過分支切割快速而寬松地完成,那么我們可以將這個積分寫為:
|
|
對于這個積分,我們可以替換
,我們得到:
|
|
代入,我們得到:
|
|
這個答案有分支問題;但是,我們可以通過將
寫為
來解決此問題。那么我們就有了正確的反導(dǎo)數(shù):
我想知道這種使用Laurent 多項式替換來簡化代數(shù)積分的方法是否只是適用于該積分的技巧,還是對更通用方法的提示。事實證明,這個技巧適用于許多積分;例如,我們之前在 Kauers 算法中嘗試的積分
可以減少到
替換為u = x 4 + x –4。一旦糾正了分支切割問題,解決方案如下:
一般方法會尋求形式u =
的替代, 例如
其中R1(u), R2(u)是u的有理函數(shù),
是待定系數(shù)。
我們首先使用SolveAlways來計算u替換中的待定系數(shù):
所以我們有一個適合被積函數(shù)的基數(shù)部分的候選替換。這個替換是否適合被積函數(shù)的其余部分?我們可以這樣計算:

我們對之前手動做的積分做了同樣的簡化,即
其中 u =
.
這個方法是在Wolfram函數(shù)庫中用IntegrateAlgebraic實現(xiàn)的。 (在2020年,我進(jìn)一步研究了用初等函數(shù)[9]計算偽橢圓積分。) 由于這種方法簡單,它適用的積分范圍很廣。
下面是一些例子:
與 Risch 算法的代數(shù)情況不同,該技術(shù)可以快速求解許多涉及參數(shù)的積分:

下面的積分呢?
與前面的例子不同,這個積分不能用 Laurent 多項式替換來求解。
1882 年,Günther 開發(fā)了一種計算一些困難的代數(shù)積分的方法 [10]。比如積分
p(x)和q(x)是x的多項式,Günther做了替換
使得積分變?yōu)?/span>
其中 s(x) = vQ–P+R–1 xQ–P+R–1 + vQ–P+R–2 xQ–P+R–2 + … + v1 x + v0, 其中P = degx(p(x)), Q = degx(q(x)), R = degx(r(x)) and v0, v1, …, vQ–P+R–1, c0, c1,c2, c3 是待定系數(shù), R(un是系數(shù)未定u n 中的有理函數(shù)。
我們可以使用 Günther 的方法來解決 Mathematica 中的這個積分,如下所示。替換的形式為:
我們假設(shè)u 中的被積函數(shù)具有以下形式:
那么x 中的被積函數(shù)由下式給出:
現(xiàn)在我們需要求解代入 ( v 0 , v 1 , v 2 ) 和有理被積函數(shù) ( w 0 , w 1 ) 中的未定系數(shù):
我們可以把這個解代入u中的被積函數(shù),然后替換
現(xiàn)在我們可以使用integral來計算得到的積分:
然后代回求解我們原來的積分:
快速檢查我們的解答是正確的:
Günther方法的一個推廣版本在IntegrateAlgebraic中實現(xiàn)。 這種方法可以解決許多比較困難的積分。 下面是一些例子:
此方法還處理包含參數(shù)的積分:
如果我們在將被積函數(shù)擴(kuò)展為項的總和后將這種方法與逐項積分相結(jié)合,我們可以處理更多奇特的代數(shù)積分:

將 Laurent 多項式替換方法與廣義 Günther 方法相結(jié)合并逐項積分,我們可以計算更復(fù)雜的積分:
在這種情況下,我們將積分寫為:
然后積分
減少到
代入u = 1 – x 3,而積分
減少到
代入s =
。
積分包含嵌套基元的表達(dá)式一直是一件棘手的事情。 一個眾所周知的例子是
可以使用替換
來計算。我們可以用GroebnerBasis進(jìn)行這種替換,如下所示:
我們需要用Dt [y]來表達(dá)這種關(guān)系:
我們現(xiàn)在可以整合u的有理函數(shù)并代回x:
這種方法可以解決更困難的涉及嵌套根的積分。例如:
在IntegrateAlgebraic 中使用了這種方法的概括。以下是一些具有挑戰(zhàn)性的示例:
與IntegrateAlgebraic 中的其他方法一樣,我們準(zhǔn)備好處理涉及參數(shù)的積分:
本帖中所有的積分都包含多項式根; 然而,這些方法推廣到有理根。 例如:
仍然有許多代數(shù)積分是這些方法不能計算的。 例如,下面的積分有一個初等解(盡管解很大):
然而,與在任何計算機(jī)代數(shù)系統(tǒng)中都沒有完全實現(xiàn)的 Risch-Trager-Bronstein 算法的代數(shù)情況相比,這些方法快速、簡單并且補(bǔ)充了 Mathematica 的Integrate函數(shù)的現(xiàn)有積分功能。我們目前正在考慮在即將發(fā)布的版本Integrate中包含IntegrateAlgebraic。
京ICP備09015132號-996 | 違法和不良信息舉報電話:4006561155
© Copyright 2000-2026 北京哲想軟件有限公司版權(quán)所有 | 地址:北京市海淀區(qū)西三環(huán)北路50號豪柏大廈C2座11層1105室
北京哲想軟件集團(tuán)旗下網(wǎng)站:哲想軟件 | 哲想動畫