計算機如何自動計算不定積分,是一個長期感興趣的問題,1968年出現的Risch算法,以及在1976年的改進Risch–Norman算法在相當程度上解決了這個問題,這些算法可以自動求解初等函數的不定積分,前提是積分也是初等函數。
目前共有20篇帖子。
![]() |
參考:https://www-sop.inria.fr/cafe/Manuel.Bronstein/publications/issac98.pdf
|
![]() |
第一種情況,有理函數的積分。
有理函數是兩個多項式的商。根據代數基本定理,多項式一定能在代數閉域內分解為一次多項式的乘積,而在實數域內,則分解成一次多項式和判別式為負數的二次多項式的乘積: ![]() |
![]() |
如果上述D是有理函數的分母,那麼通過所謂部分分式展開,可以把有理函數寫成下列形式
![]() 其中P是多項式,Aik,Bjk,Cjk,ai,bj,cj都是實數。 那麼,要計算這個積分,只需要分別計算每一項的積分即可。多項式P的積分容易計算;其餘各項的積分如下: 1. 分母為一次式的k次方: ![]() ![]() 這裏的判別式4cj-bj^2<0. |
![]() |
3. 分母為二次式,k>1:
![]() 這樣就可以遞推式地降低k,直到k=1. |
![]() |
這種算法有一個重大缺陷:並沒有什麼算法可以得到所需的因式分解。這並不是說因式分解不存在,而是我們無法通過一種算法求解它。例如,五次方程x^5-x+1=0就沒有根式解。(即使通過特殊函數,也會涉及希爾伯特第十三問題而難以解決)
為了解決這個問題,我們首先需要對分母的因式分解進行限制,保證其有相應的算法。 巨大八爪鱼:從三次方程開始,精確的根式解就很複雜了,有的解含有虛數i,有的解要用雙層根號表示。甚至要用含有根號和虛數i的式子來表示一個實數。
巨大八爪鱼:另外,高次方程經常會遇到實部和虛部都是無理數的虛數解,有時這些無理數要用多層根號表示(三、四次方程)(根號裏面還可能含有虛數i),有時甚至完全無法用根號表示(五次方程以上),只能用有限小數近似值加省略號表示。
[查看詳情]
|
![]() |
如果多項式f有不可約因式g^m, 但g^{m+1}不是f的因式,那麼f和f導數f'的公因式(f,f')能被g^{m-1}整除,但不能被g^m整除。 我們用這個事實,可以得知公因式h=(f,f')的每個不可約因式的次數比f小1. |
![]() |
我們假設f是首一多項式,把相同重數的不可約因式放在一起,設
那麼,首一公因式(f,f')為 於是,我們有
|
![]() |
![]() 上述算法成功把分母的最高重數從m降到了m-1,因此重複上述步驟,就可以把有理積分化約為分母無平方因子的情況。這叫做厄爾米特約化(Hermite reduction)。 |
![]() |
根據厄爾米特約化,我們只需要求A/D, deg(A)<deg(D), D無平方因子,這種情況的不定積分。
我們考慮在複數域內對D進行分解,結果是互不相同(因為D無平方因子)的單項式的乘積,因此A/D有部分分式展開 此時,使用複對數,可以把積分表示為 其中C是任意常數。當然,我們是不會滿足於這種表示的,因為它很明顯仍然沒有規避高次方程求根的問題。 |
![]() |
這裏的ai顯然等於A/D在單極點ri的留數。設D=D1(x-ri), 那麼不難計算出
![]() 因此,ri是D和A-aiD'的公共零點。根據結式(https://zh.wikipedia.org/wiki/%E7%B5%90%E5%BC%8F)的性質,ai恰好就是結式 的根(即使得上述結式等於零的t)。 |