最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

怎樣手算π次根號5

2023-01-19 14:02 作者:小給貓  | 我要投稿

前段時間看了一個手算開平方的視頻,感覺還是不夠通用。

說起通用,首先把我們要計算的根式通用化。我們常見的平方根、立方根,或者叫二次方根、三次方根,其實都可以寫成冪函數(shù)的形式。

%5Csqrt%5Bx%5D%7Ba%7D%20%3Da%5E%7B%5Cfrac%7B1%7D%7Bx%7D%7D

說一個日常的小習(xí)慣。大家如果平時用Excel的話,遇到計算平方根的時候會怎么做呢?Excel內(nèi)置的函數(shù)中SQRT()就是計算平方根的。如果計算根號2,就是SQRT(2)。但是我平時喜歡寫成冪函數(shù)形式,也就是a ^ x的形式。根號2就是2 ^ 0.5 。

※這里說指數(shù)函數(shù)也行。函數(shù)變量是底數(shù)叫冪函數(shù),變量是指數(shù)叫指數(shù)函數(shù)

個人覺得,根式的冪函數(shù)形式寫起來更順暢,做一些規(guī)則也更方便。

?

回到主題。我們現(xiàn)在需要手工計算π次根號5 。

%5Csqrt%5B%CF%80%5D%7B5%7D%20%3D5%5E%7B%5Cfrac%7B1%7D%7B%CF%80%7D%7D

我之前寫過一篇用泰勒展開式手算三角函數(shù)的,這回也還是用老辦法。以e(自然對數(shù)的底)為底數(shù)的指數(shù)函數(shù)有一個比較簡潔的泰勒展開式。

e%5Ex%3D%5Csum_%7Bn%3D0%7D%5E%20%20%E2%88%9E%20%5Cfrac%7Bx%5En%20%7D%7Bn!%7D

想用這個公式就必須要把冪函數(shù)轉(zhuǎn)換成以e為底的指數(shù)函數(shù),那就套個換底公式。

a%5Ex%3De%5E%7Bx%5Ccdot%20%20ln(a)%7D

那么我們要計算的就是:

5%5E%5Cfrac%7B1%7D%7B%CF%80%7D%20%3De%5E%5Cfrac%7Bln(5)%7D%7B%CF%80%7D

那么問題來了,對數(shù)怎么算呢?ln(5)怎么計算。

其實我們不妨再套一次泰勒展開。

ln(x%2B1)%3D%5Csum_%7Bn%3D1%7D%5E%E2%88%9E%5Cfrac%7B(-1)%5E%7Bn%2B1%7D%20%7D%7Bn%7D%20x%5En%20

不過這個式子有一個前提,x的范圍必須是-1~1之間(可以等于1,不可等于-1)。

所以這個方法至多計算到ln(2)。算ln(5)就超范圍了。但是我們可以用對數(shù)的特性解決這個事情。5=2×2×1.25,那么:

ln(5)%3Dln(2%5Ctimes%202%5Ctimes%201.25)%3D2%5Ctimes%20ln(2)%2Bln(1.25)

ln(1.25)不就能算了嗎。

ln(0.25%2B1)%3D%5Csum_%7Bn%3D1%7D%5E%E2%88%9E%5Cfrac%7B(-1)%5E%7Bn%2B1%7D%20%7D%7Bn%7D0.25%5En

好了,現(xiàn)在只要把n取的足夠大,就能得到我們想要的精度的結(jié)果。老辦法我們用Excel內(nèi)置的VBA來實現(xiàn)這個新函數(shù),看看n與精度的關(guān)系。代碼如下:

Function PowTay(a As Double, x As Double, n As Integer) As Double

Dim i As Integer

Dim at As Double

Dim an As Integer

Dim k As Double

Do While a > 2

?an = an + 1

?a = a / 2

Loop

at = an * Log(2)

a = a - 1

For i = 1 To n

?at = at + ((-1) ^ (i + 1)) * (a ^ i) / i

Next i

x = at * x

For i = 0 To n

?k = Application.WorksheetFunction.Fact(i)

?PowTay = PowTay + (x ^ i) / k

Next i

End Function

函數(shù)的名字叫PowTay,有3個變量。a是底數(shù),x是指數(shù),n是泰勒展開式中n的取值。

這里為了圖方便,ln(2)的值就當常數(shù)直接用了。

與工作表里不同,VBA里的對數(shù)函數(shù)Log()是以e為底的,相當于ln()。如果要用其他底數(shù)的話可以套個換底公式。

Application.WorksheetFunction.Fact(i)是調(diào)用工作表里的階乘函數(shù)FACT()。

我們可以計算一下n取1到10時,計算值與實際值得偏差,代碼如下:

Sub text2()

Dim a As Double

Dim x As Double

Dim n As Integer

Dim s As Double

a = 5

x = 1 / Application.WorksheetFunction.Pi()

s = a ^ x

For n = 1 To 10

?Cells(n + 1, 1).Value = n

?a = 5

?x = 1 / Application.WorksheetFunction.Pi()

?Cells(n + 1, 2).Value = s - PowTay(a, x, n)

Next n

End Sub

因為函數(shù)運算的時候a和x的值會改變,所以每次運算前要重新賦值(也可以把函數(shù)優(yōu)化一下)。運行結(jié)果如下:

通常我們有個n=4的精度其實也差不多了。所以就取n=4,寫成可以手算的形式。

π和ln(2)就取到小數(shù)點后5位。結(jié)果取小數(shù)點后4位。

π=3.14159,ln(2)=0.69315

ln(5)%3D2%5Ctimes%20ln(2)%2B%5Csum_%7Bn%3D1%7D%5E4%20%5Cfrac%7B(-1)%5E%7Bn%2B1%7D%20%7D%7Bn%7D0.25%5En%20%3D2%5Ctimes%200.69315%2B0.25-%5Cfrac%7B0.25%5E2%20%7D%7B2%7D%2B%5Cfrac%7B0.25%5E3%20%7D%7B3%7D-%5Cfrac%7B0.25%5E4%20%7D%7B4%7D

結(jié)果是1.60928

1.60928/3.14159是0.51225

%5Csqrt%5B%CF%80%5D%7B5%7D%20%3De%5E%7B0.51225%7D%3D%5Csum_%7Bn%3D0%7D%5E4%20%5Cfrac%7B0.51225%5En%20%7D%7Bn!%7D%3D1%2B0.51225%2B%5Cfrac%7B0.51225%5E2%20%7D%7B2%7D%2B%5Cfrac%7B0.51225%5E3%20%7D%7B6%7D%2B%5Cfrac%7B0.51225%5E4%20%7D%7B24%7D

這樣就變成有理數(shù)加減乘除的形式了。

計算結(jié)果是1.6687 。

?

這個方法具有很好的普適性,即便帶著無理數(shù)也能計算。你也可以試試看計算5的π次方會是什么結(jié)果。

當然,這個方法的弊端就是計算結(jié)果數(shù)值越大,n的取值就必須大一些才能滿足精度。我試了一下計算5的3次方,n要取到13才能讓結(jié)果大于124.9 。


怎樣手算π次根號5的評論 (共 條)

分享到微博請遵守國家法律
丰原市| 万荣县| 夹江县| 大新县| 抚顺县| 屏东县| 南岸区| 南京市| 延寿县| 荣成市| 磐安县| 内江市| 潼关县| 怀宁县| 西安市| 封丘县| 图们市| 西昌市| 宁安市| 五原县| 册亨县| 平度市| 梁河县| 宣城市| 安达市| 巴林右旗| 阿拉尔市| 西峡县| 伊宁县| 衡南县| 三江| 和静县| 闸北区| 长沙县| 浪卡子县| 清原| 长垣县| 额济纳旗| 阜新市| 宣恩县| 荣成市|