歐 鵬 王紹恒 高成政 劉雪蓮 吳夢蝶
(重慶三峽學(xué)院數(shù)學(xué)與統(tǒng)計學(xué)院,重慶萬州,404100)
借助數(shù)學(xué)軟件輔助教學(xué)多年以來,[1]收到了較好的效果.積分是高等數(shù)學(xué)系列課程的重要組成部分,某些題目的積分計算量較大,過程繁瑣,甚至無法用學(xué)過的數(shù)學(xué)方法求解.為使學(xué)生借助Mathematica軟件快速、準(zhǔn)確地解決上述問題,筆者結(jié)合實驗與學(xué)習(xí)經(jīng)歷,通過借助Mathematica軟件計算積分的典型例子,總結(jié)了幾種常見方法,供讀者參考.
Mathematica軟件的命令格式:Integrate[f[x],x],運行的結(jié)果就是f[x]的原函數(shù)F[x],但不帶任意常數(shù).
命令I(lǐng)ntegrate與命令D表示一對互逆運算,即命令D[f [x],x]表示函數(shù)f [x]對x求導(dǎo).
含參數(shù)不定積分:命令I(lǐng)ntegrate中,若被積函數(shù)含有積分變量以外的變量,運行時均獨立于積分變量而把此類變量當(dāng)做常量.
由此可見,正確指定積分變量的重要性.
積分變量可以為任何表達式.
(其中f( x)可以是任意函數(shù)表達式)
大多數(shù)情況下,積分可以純粹的根據(jù)諸如指數(shù)函數(shù)、對數(shù)函數(shù)和三角函數(shù)等基本初等函數(shù)進行運算.事實上,如果給出一個僅含這種初等函數(shù)的積分,那么Integrate的重要能力之一是如果該積分能用初等函數(shù)表示,那么Integrate總能成功計算出結(jié)果.
有些函數(shù)的不定積分不能用初等函數(shù)表示,這里Mathematica軟件通常能夠用特殊內(nèi)部函數(shù)表示.
其中LogIntegral[x]為系統(tǒng)內(nèi)部函數(shù).
有時候為了某種特殊需要,需修改命令I(lǐng)ntegrate的參數(shù),例如下面的積分不能用初等函數(shù)來表示.
如果想加入自己定義的積分規(guī)則,需要把函數(shù)Integrate的保護屬性去掉,即:
運行Unprotect[Integrate]得
{Integrate}
定義自己的積分規(guī)則:例如定義函數(shù)
sin(cos(a+ bx))的積分為 [,]/ JSinCos a x b.運行Integrate[Sin[Cos[a_.+b_.x_]],x_]:=JSinCos[a,x]/b之后再運行
退出系統(tǒng)后,對Integrate的修改自動還原.
如果不定積分既不能用初等函數(shù)表示,也無法用特殊函數(shù)表示,Mathematica直接以不定積分形式輸出.
對于簡單的定積分,只需按照命令格式輸入相應(yīng)的被積函數(shù),積分變量及積分限即可進行計算.
計算定積分時,也可首先通過先求不定積分,然后計算相應(yīng)積分限處的值的辦法,但值得注意的是有些函數(shù)的不定積分不能用初等函數(shù)表示,但其定積分仍可以計算.
運行Integrate[Cos[Sin[x]],x]
Integrate[Cos[Sin[x]],{x,0,2Pi}]
得2 BesselJ[0,1].
與不定積分一樣,在計算定積分的時候,積分變量也可以為任何表達式.對于那些積分變量以外的變量均當(dāng)作常量處理.
在計算定積分時,有時求出來的定積分結(jié)果里面含有特殊函數(shù),這些函數(shù)是Mathematica內(nèi)部函數(shù),我們可以對求出的結(jié)果取近似值得出近似解.如對例9中的定積分.
運行Integrate[Cos[Sin[x]],{x,0,2Pi}]得2 BesselJ[0,1]再運行N[%]得4.80788也可以直接運行NIntegrate[Cos[Sin[x]],{x,0,2Pi}]得到同樣結(jié)果.
計算定積分時,還可對命令I(lǐng)ntegrate進行設(shè)置參數(shù),通過這些參數(shù)設(shè)置,可以更加靈活地計算定積分.在我們常見的函數(shù)中,參數(shù)GenerateConditions以及參數(shù)Assumpions使用較多.對于參數(shù)GenerateConditions的使用,如設(shè)置GenerateConditions->False,則 Mathematica會把被積函數(shù)中的參數(shù)當(dāng)作最普通的值,不考慮其特殊情況.
例11:運行
Integrate[x^n,{x,0,1},GenerateConditions-> False得1/n+1.不加參數(shù)GenerateConditions->False的計算結(jié)果參看例17.
在Mathematica中,當(dāng)積分算不出準(zhǔn)確值時,我們可以通過NIntegrate[f[x],{x,a,b}]求近似值.而且對于命令 Integrate能夠計算的,NIntegrate也能計算;有些函數(shù)不能用 Integrate計算的,用函數(shù)NIntegrate還能計算.
此類定積分用人工計算比較復(fù)雜,但借助函數(shù)Integrate計算較容易.
運行
如果希望得到近似數(shù)值解,運行:
NIntegrate[x*Exp[x]Sin[x],{x,0,1}]得0.643678
對于NIntegrate命令的一個重要的作用是能處理被積函數(shù)無界的函數(shù),函數(shù)NIntegrate在積分區(qū)間內(nèi)自動檢查被積函數(shù)有無瑕點,因此對無界函數(shù)仍可直接用 NIntegrate 命令計算.NIntegrate[f,{x,xmin,xmax}]會從xmin到xmax積分f,在每個點檢查其奇異性.
由于x=0是瑕點,直接用函數(shù)NIntegrate將給出出錯信息.
如果在5.0版本下運行NIntegrate[1/Sqrt[Abs[x]],{x,-1,1}]將輸出
該提示表明x=0為被積函數(shù)的瑕點.我們只要加入0作為中間點,就可以計算其數(shù)值解了.
運行NIntegrate[1/Sqrt[Abs[x]],{x,-1,0,1}]得4.
在7.0以上版本下運行
NIntegrate[1/Sqrt[Abs[x]],{x,-1,1}]
可以直接得出結(jié)果4.
除此之外,數(shù)值積分不但可以求近似解,而且還可以設(shè)置參數(shù)WorkingPrecision的值控制輸出結(jié)果的精度.
運行NIntegrate[Exp[-x^5],{x,-1,0,1},WorkingPrecision->20]得
2.094968171321203348 4.
該命令等價于
N[Integrate[Exp[-x^5],{x,-1,0,1}],20].
NIntegrate利用自適應(yīng)算法計算積分的近似值,它對積分區(qū)間進行分割,直到達到指定的精確度為止.
無窮區(qū)間上的廣義積分的計算仍然可行.
如果廣義積分發(fā)散,Mathematica就給出一個提示后原樣輸出.
運行
Integrate[1/x^(1/2),{x,1,Infinity}]輸出提示:
如果廣義積分的斂散性與某個符號的取值有關(guān),Mathematica也能給出在不同情況下的積分結(jié)果.
一般地,我們采用分別討論a與p的取值,去判斷積分收斂或者發(fā)散,而利用 Mathematica求解上述廣義積分:運行Integrate[1/x^p,{x,a,Infinity}]得
無界函數(shù)的廣義積分有時要把間斷點加入才能計算.
類似地,如果b為瑕點有:
如果c(a<c<b)為瑕點時:
對于重積分的計算,在Mathematica中,處理方式與定積分相似,只是在處理多個變量積分時,需要給出它們各自的取值范圍.
與我們在數(shù)學(xué)上處理積分時原則一樣,Mathematica先對y積分時,積分限可以為x的函數(shù).同時,多重積分限也可以為任何表達式.
運行Integrate[x^2+y^2,{x,a,b},{y,x,x+1}]得
運用Integrate求解重積分的確方便快捷.但不足之處是沒有體現(xiàn)積分過程.那么運用Mathematica求解積分,到底能不能將其過程展現(xiàn)出來呢?我們的答案是肯定的.只是在求解過程中,要運用到更多的參數(shù)選項.其命令格式相對較復(fù)雜.
可讀性計算程序如下:
Clear[x,y];
f[x_,y_]:=x^2+4y^2+1;Print[“f(x,y)=”,f[x,y]];
a= -1;b=1;c=-Sqrt[1-x^2];d=Sqrt[1-x^2];
If[NumberQ[a]&&NumberQ[b], g[x_]:=Integrate[f[x,y],{y,c,d}];Print[g[x]];Integrate[g[x],{x,a,b}],h[y_]:=Integrate[f[x,y],{x,a,b}];Print[h[y]];Integrate[h[y],{y,c,d}]]
求解過程及結(jié)果為:
[1]王紹恒.利用Mathematica與Lingo求解優(yōu)化問題之比較[J].重慶三峽學(xué)院學(xué)報,2007(3).
[2]嘉木工作室編.Mathematica應(yīng)用實例教程[M].北京:機械工程出版社,2002.
[3][美]D.尤金.Mathematica使用指南[M].鄧建松,彭冉冉,譯.北京:科學(xué)出版社,2002.
[4]郝艷莉,張濱燕.數(shù)學(xué)軟件 Mathematica在高等數(shù)學(xué)教學(xué)中的應(yīng)用[J].南通航運職業(yè)技術(shù)學(xué)院學(xué)報,2009(3).