R語言編程數(shù)學分析重讀微積分理解極限算法
1 狀態(tài)變化
若將數(shù)學整體劃分為三類,則可概括為代數(shù)、幾何與分析。對于前兩者,我們很早就建立了直觀的概念,對于空間結構及其性質的研究,即為幾何;以數(shù)為核心的研究領域,即為代數(shù)。
而分析則具備更多的非數(shù)學的內涵,所以初學者往往難以看透數(shù)學分析所指向的數(shù)學本質,如果望文生義,會更傾向于將“分析”理解為一門數(shù)學技巧,而非數(shù)學領域。
我們最先接觸數(shù)學分析時,是將其等同為微積分的??梢哉J為微積分是數(shù)學分析最基本的知識對象,而微積分的理論基礎建立在極限之上。所以,我們可以將極限作為分析學的根基,為此,需要去理解極限的本質,而極限本身則是一個動態(tài)的過程,例如下面這個重要極限

畫圖方法有很多,在此使用R語言,在RStudio中畫出,之所以用RStudio,是因為其界面對初學者來說更友好。輸入
> x = c(1:100) #定義x為1到100的數(shù)組 > y = x*sin(1/x) > plot(x,y,type='l',xlab='x',ylab='y=x·sin(1/x)') #畫圖
得到

可以非常清晰地看到,當x逐漸變大的時候,y是趨于1的。這個趨勢可以讓我們更加容易理解:極限是一種動態(tài)過程;同時有助于形成對分析學的更加直觀的印象——分析是建立在狀態(tài)變化上的一種動態(tài)的數(shù)學。
一旦建立了這種動態(tài)的思維,就會發(fā)現(xiàn)原本安定本分的數(shù)學世界也發(fā)生了微妙的變化,例如,我們又將如何理解1這個整數(shù)。
例如無限循環(huán)小數(shù)0.999...=1這個反直覺的等式是否嚴格。在初等的觀點看來,可以很容易得到 10 × 0.999... = 9.999... → ( 10 − 1 ) ∗ 0.999... = 9 → 0.999... = 1 。
進而敏銳地發(fā)現(xiàn),若用一種不厭其煩的方式去求解分式1 \1,會更加自然地得到0.999...
但無論如何,0.999...=1是反直覺的,反來自于初等數(shù)學的直覺。換句話說,初等數(shù)學的直覺存在矛盾,我們需要一個更加嚴格的有關極限的定義和表示,尤其需要建立一種可以稱之為相等的映射關系。
2 極限語言
初學數(shù)學分析的時候,很多人包括我在內,都對 ε − N深惡痛絕,更妙的是,不理解這種表達方式,對做題似乎影響不大。大部分人通過加深對上面的那三個約定(以及更多約定)的記憶來完成解題,從而避免了加深對數(shù)學對象的理解。
其實這個語句并不難理解,當我們最開始接觸無窮大這個概念的時候,是在描述自然數(shù)的個數(shù)。那時我們常說的可能是,無論你舉出一個多么大的自然數(shù),我都能舉出一個更大的數(shù),所以自然數(shù)是無窮的。

> x = c(10:100) > y = 1-x*sin(1/x) > > plot(x,y,type='l',xlab='x',ylab='y=1-x·sin(1/x)')
其圖像為


3 序列與函數(shù)
若從映射的角度去考察序列與函數(shù),則二者最大的區(qū)別是定義域。序列是定義域為正整數(shù)的特殊函數(shù)。相比之下,微積分中大多名之為函數(shù)的映射,都定義在實數(shù)域上。從而在函數(shù)的定義域中,隨便抽選出一個區(qū)間,其元素個數(shù)都是無窮多的。即對于區(qū)間 [ a , b ]而言,只要 a ≠ b ,則區(qū)間中的元素個數(shù)就是無窮多個。
好在我們有了極限的概念,極限在 ε − N意義上重新定義了相等,從而意味著每一個實數(shù)都包含了無窮多種初等的表示,即 1 = 0.999...0 = 0.999...1 = 0.999... n , n 1=0.999...0=0.999...1=0.999...n,n為任意長度的數(shù)串,中間的無窮多位,導致末位信息在變得毫無意義,乃至于根本不存在最后一位。
這時我們會異想天開地希望建立整數(shù)與實數(shù)的對應關系,例如將整數(shù)環(huán)映射到區(qū)間 [ − 1 , 1 ] 內,這個區(qū)間也會出現(xiàn)實數(shù)區(qū)間的性質,即任意一個長度大于一的子區(qū)間,存在無窮多個元素。但眾所周知,實數(shù)的個數(shù)是比整數(shù)更高的無窮,也就是說實數(shù)區(qū)間 [ − 1 , 1 ] 的元素個數(shù)是遠多于整數(shù)的。

當然,我們此后會接觸更多的讓人摸不著頭腦的函數(shù),這些函數(shù)過于奇葩,以至于上面的這些似乎完全不適用呢。。。
4 極限常數(shù)
圓周率 π
歷史上很早就產(chǎn)生了極限思想,而割圓術就是這種思想的絕佳體現(xiàn)。

N = c(3:100) Pi = N*sin(pi/N) plot(N,Pi,type='l',xlab='N',ylab='Pi')

由于到了后面,誤差變得越來越小,所以用對數(shù)來看一下誤差的變化
N = c(3:10000) err =log(pi-N*sin(pi/N),10) plot(N,err,type='l',xlab='N',ylab='err')

可見割到了正10000邊形,也只能得到 1 0 − 7 10^{-7} 10−7的精度,通過計算可以得到正10000邊形算出的圓周率約為3.14159260,所以我們至今也無法知道祖沖之他老人家到底是怎么得到的。
options(digits=15) 10000*sin(pi/10000) [1] 3.14159260191267
圓周率的這種定義其實也提供了一個重要極限,即

自然對數(shù)e
很多人喜歡把自然對數(shù)和復利計算聯(lián)系在一起。

問題來了,是不是隨著 n n n逐漸增大,一年的收獲會越來越多呢?
為了計算方便,假設 x = 1 ,即正常 W 存一年,一年之后本息翻倍為2W。
結果發(fā)現(xiàn)

最終這個值趨近于一個常數(shù),這個常數(shù)就定義為 e,看來一年最多翻e倍,這個方法沒辦法發(fā)財了。但至少明白了一個著名的極限

很合理。
歐拉常數(shù) γ
對 e兩側以 e為底取對數(shù),可得

是一個常數(shù):
N = c(1:10000)
for(i in c(1:0000)){
H[i]=sum(1/N[0:i])
}
plot(N,gamma,type='l',xlab='N',ylab='gamma')
gamma[10000]
[1] 0.577265664068198

我們猜對了,這個常數(shù)即歐拉常數(shù)。
其證明過程也不復雜

5 洛必達法則
令 N 為常數(shù),則常規(guī)的極限運算大致有以下幾種

所以,盡管二者都為0,但0和0也有不同。問題是這種不同是否明顯?如果定義域在 [ − 1 , 1 ] 這個區(qū)間,的確看不出太多的區(qū)別
x = seq(-1,1,0.01) #生成等差數(shù)列 plot(x,x^2,type='l') lines(x,x^3) lines(x,x^4) lines(x,x^5) lines(x,x^6)

然而隨著坐標尺度的縮小,區(qū)別變得明顯起來
> x = seq(-0.1,0.1,0.001) > plot(x,x^2,type='l') > lines(x,x^3)

這意味著越是逼近0,不同階數(shù)的冪函數(shù)將漸行漸遠,回顧極限的定義,對于

受到這種運算形式的啟發(fā),對于一個相對復雜的表達式,或許可以對上式進行一點更改

可以畫圖驗證一下二者在趨近于0時的特性
x = seq(-0.01,0.01,0.001) plot(x,x,ylab="x/sin(x)") lines(x,sin(x),col='red')

由于實在靠的太近,所以用差的對數(shù)來表示一下
x = seq(-0.1,0.1,0.001) err = log(abs(x-sin(x)),10) plot(x,err,type='l')

可見這個收斂速度是很快的,當 x = 0.001時,二者之間的差就已經(jīng)達到了 10^ -9
以上就是R語言編程重讀微積分數(shù)學分析理解極限算法 的詳細內容,更多關于R語言編微積分數(shù)學分析極限算法 的資料請關注腳本之家其它相關文章!
相關文章
R語言數(shù)據(jù)框合并(merge)的幾種方式小結
這篇文章主要介紹了R語言數(shù)據(jù)框合并(merge)的幾種方式小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03

