更多數學趣題:求對數

===》點我返回目錄《===

在數學中,對數是對求冪的逆運算,如果a的x次方等於N,那麼數x叫做以a爲底N的對數(logarithm),記作x=logaN。

這是我們現代人的理解方式,而從歷史上,其實不是這樣的。1614年John Napier提出了對數,而指數是才後來發明出來的概念,歐拉1770年寫道“對數源於指數”。

歷史上對數是爲了簡化計算,將乘除化爲加減,將乘方開方化爲乘除。爲什麼對數能簡化運算?這源自對數的一個獨特的特性:log(ab)=log(a)+log(b).

例如,我們計算1234.56*3456.78,直接相乘會很繁瑣。運用以10爲底的對數表,我們可以分別查出a=log(1234.56)=3.09151和b=log(3456.78)=3.53867這兩個數,然後相加c=a+b=6.63018,之後用c再查反對數表得出最後的結果4267563.59。當有大量乘除計算的時候,對數大大減輕了計算量。

對數常用的底有2,10和e。

 

(Babbage手工計算的對數表,一直沿用了一百多年)

對數表的製作是歷史上的大事件,我們現在就來重走這條道路,手工計算一下。

算法是怎麼樣的呢?最笨的辦法就是一點點試,比如以2爲底,計算3的對數,肯定>1並且<2,所以又可以用二分法計算。這個是笨辦法,程序跟算平方根類似。我相信最早的一批人Napier他們就是這麼幹的,可見對數表何其來之不易,一格一數當念心力維艱。

後來數學家們仔細研究了函數計算的問題,就有了Taylor泰勒級數,大致可以敘述爲:函數在一個點的鄰域內的值可以用函數在該點的值及各階導數值組成的無窮級數表示出來。這個大約是在300年前由英國數學家Taylor泰勒提出的,兩三百年來Taylor折磨了一代一代學數學的大學生,實際上他的本意是爲了簡化問題。

當我們用計算機實現基本的加減乘除操作後,我們發現泰勒級數是真的簡化了問題。比如計算對數,計算Sin, Cos三角函數,通過級數我們可以用四則運算來逼近函數的值,不用級數還真是難算。自然,我們實際計算的時候,不可能用無窮級數,總是取有限個值的。

好,我們看泰勒級數怎麼計算對數。公式爲:

 

有了這個公式,其實程序並不難編寫。我不演示這段程序了,因爲這個展開式有兩個比較大的問題:第一呢,它是正負交錯的,收斂起來比較慢,第二呢,它只能對付1附近的值,太大或者太小就不行了。所以我們需要進行變換後再編程。

我們弄一個新的值y,設y=(x-1)/(x+1),這樣展開式就變成了下面的樣子:

 

這個展開式現在不是正負交錯的了,所以收斂起來會很快。

程序如下:

def ln(x):

    y = (x-1)/(x+1)

    i = 0

    sum = 0

    while y**(2*i)/(2*i+1) > 0.0000001:

        sum = sum + y**(2*i)/(2*i+1)

        i = i+1

    return 2 * y * sum



print(ln(2))

運行的結果是0.693147,用計算器檢驗,正確。

這個變換後的展開式也有問題,就是值太大或者太小的時候收斂困難。不要緊,我們用對數的一個特性可以解決這個問題。

我們知道對數可以變乘除爲加減,即ln(ab)=ln(a)+ln(b),ln(a/b)=ln(a)-ln(b)。所以,對很大的數,如3456000,我們可以改成3.456000*1000000,然後只要計算ln(3.456)這個值,再加上ln(1000000)就可以了。同理,對很小的數,如0.0000123,我麼你可以改成1.23/100000,然後計算ln(1.23)的值,再減去ln(100000)就可以。(這個辦法要求我們手上有一個整數的對數表)。

你們自己補充這一部分程序。

事非親躬不知難,即便有了泰勒展開,手工的計算量還是相當大的。有了雖然笨但是快速的計算機,我們看到它確實極大地推動了科學和工程的進展。前人說對數延長了天文學家的生命,伽利略曾經宣稱:“給我空間、時間及對數,我就可以創造一個宇宙。”

泰勒展開還可以計算很多別的函數,我們再看幾個個:

我們引入複數,把iθ帶入第一個指數方程,得到如下結果:

到此,我們將指數函數與三角函數聯繫在一起了,如果知道複數的幾何意義,其實上面的公式是顯然的,它是二維平面上同一個點的兩種不同表述方式而已。指數函數是按照旋轉的角度表述的,三角函數是按照直角座標系的點座標表述的。

下面是驚豔的時刻到了,如果θ=π,則上面的公式就變成了這個樣子:

這就是Euler歐拉公式,這是最美的公式,確實,數學上的這幾個基本量竟然有這樣的完美關係,讓人不得不感嘆造物的神奇和真理最深處的美。歐拉把這個公式刻在了皇家科學院的大門口。

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章