计算器是如何计算sin、cos等科学函数的值呢?
計(jì)算器是如何計(jì)算sin、cos等科學(xué)函數(shù)的值呢?
?
在小型計(jì)算器(需帶有函數(shù)計(jì)算功能)上,計(jì)算sin45的值為:(本文用sin45為例)
sin45=0.707106781
??? 這種小型計(jì)算器提供了10位有效數(shù)字顯示,但其實(shí)內(nèi)部還有幾位有效數(shù)字,可以再通過(guò)下述方法顯示出來(lái):在上述結(jié)果上,再乘以10000,得7071.067812(這里顯示已經(jīng)多了一位),再減去整數(shù)部分7071,得0,067812,再乘以1000,得67.81187(這里又多了3位)。所以這種小型計(jì)算器內(nèi)部可以計(jì)算得到函數(shù)值為14位有效數(shù)字(最后一位是四舍五入)。
在電腦操作系統(tǒng)自帶的計(jì)算器上,也可以完成此運(yùn)算,如下圖:
對(duì)比小型計(jì)算器的結(jié)果,可見電腦獲得的有效位數(shù)多達(dá)32位,功能十分強(qiáng)大。
在帶有函數(shù)計(jì)算功能的計(jì)算器上除了sin、cos等三角函數(shù),還指數(shù)對(duì)數(shù)函數(shù)、冪函數(shù)等各類函數(shù)計(jì)算計(jì)算功能,那么機(jī)器內(nèi)是如何得到這些值的呢,是否也有一個(gè)表存儲(chǔ)大量的值用于查找呢?肯定不是的。
?
?
下面從數(shù)列、級(jí)數(shù)、泰勒公式等知識(shí),大致推導(dǎo)得到計(jì)算機(jī)的計(jì)算方法:
??? 先介紹數(shù)列和級(jí)數(shù)的概念:
了解了數(shù)列和級(jí)數(shù),跟計(jì)算sin45值還差得遠(yuǎn)了。先介紹一位數(shù)學(xué)家:布魯克·泰勒( Brook Taylor ),1685年8月18日出生于英格蘭密德薩斯埃德蒙頓,1731年11月30日逝世于倫敦,是一名英國(guó)數(shù)學(xué)家,他主要以泰勒公式和泰勒級(jí)數(shù)出名。
那么泰勒公式是如何用來(lái)計(jì)算sin45的值呢,當(dāng)然這里用sin45為例,泰勒公式能計(jì)算的函數(shù)多了。
首先,設(shè)sin是一個(gè)函數(shù),表達(dá)成:f(x)=sinx,也有寫有y=sinx,實(shí)質(zhì)是一樣的。這個(gè)函數(shù)除了幾個(gè)特殊值,我們可從三角學(xué)來(lái)求得,如sin90=1,sin0=0等,其他值根本無(wú)法求得。如果能把這個(gè)f(x)=sinx分解成一個(gè)冪級(jí)數(shù),先不管這個(gè)f(x)能否真的能夠分解為下式,這里先假設(shè)能分解為下式:
式中盡管把函數(shù)f(x)展開成一個(gè)級(jí)數(shù),但各項(xiàng)的系數(shù)a還是未知的,所以無(wú)法用①式求任意函數(shù)值。為了求各項(xiàng)系數(shù),對(duì)公式①進(jìn)行逐項(xiàng)求導(dǎo)數(shù)(或說(shuō)多次求導(dǎo)),可以得到f(x)的各階導(dǎo)數(shù)式,如下:
上面4個(gè)式子,是分別對(duì)f(x)求一階、二階、三階、n階導(dǎo)數(shù)得到。這里用到了微積分的知識(shí)。對(duì)于任意的一個(gè)x,上面1到5式都應(yīng)該成立,這里設(shè)x=0(對(duì)應(yīng)于f(x)=sinx就相當(dāng)于sin0)就能通過(guò)①—⑤來(lái)求得各個(gè)系數(shù)的值:
把x=0代入①式,得a0=f(0);
把x=0代入②式,含x的第二項(xiàng)及后面各項(xiàng),都變?yōu)?,所以有:f’(0)=a1,即系數(shù)a1的值為函數(shù)f(x)取x=0時(shí)的一階導(dǎo)數(shù)的值。對(duì)于sinx的一階導(dǎo)數(shù)為cosx,所以f’(0)=cos0=1。
依次把x=0代入①—⑤式,整理得到:
再把各項(xiàng)系數(shù)代入①式,就得到了所謂的麥克勞林公式:
這個(gè)麥克勞林公式,是泰勒公式當(dāng)x0=0的一個(gè)特例,如果用泰勒級(jí)數(shù)表達(dá),則為
看來(lái),公式①僅僅是假設(shè)的,是否成立還不一定,只要能夠找到各項(xiàng)系數(shù)的表達(dá)及計(jì)算方法,就可以認(rèn)為公式是成立的。通過(guò)上述逐級(jí)求導(dǎo)的方法,只要f(x)的各階導(dǎo)數(shù)都存在,公式6則這種表達(dá)就可以成立。所幸對(duì)于許多函數(shù)來(lái)說(shuō),如sin、cos、對(duì)數(shù)指數(shù)等,甚至較復(fù)雜的冪函數(shù),大多可以符合條件,找到這種級(jí)數(shù)的展開表示法。
對(duì)于函數(shù)f(x)=sinx,通過(guò)計(jì)算各項(xiàng)系數(shù),再展開為級(jí)數(shù):
從上面幾個(gè)式子可以看出,sinx的各階導(dǎo)數(shù)呈現(xiàn)規(guī)律為:順序循環(huán)為0,1,0,-1,所以根據(jù)這個(gè)規(guī)律把求出的各階導(dǎo)數(shù)值代入公式7,可以寫出sinx展開后的麥克勞林公式為:
?
但是,至此還看不出這種表達(dá)式的任何好處,相反,總覺得把一個(gè)簡(jiǎn)單的函數(shù)弄得相當(dāng)復(fù)雜,似乎無(wú)助于問(wèn)題的解決,那個(gè)sin45還是可望而不可及。但觀察(8)式,對(duì)于一個(gè)具體確定的x值,每一項(xiàng)都是可以計(jì)算的,一些分式上x的次方也是整數(shù),也是可以求出的,盡管計(jì)算相當(dāng)繁復(fù),但編制程序由計(jì)算機(jī)處理,將變得極為容易,不像sin45一樣讓人束手無(wú)策。
但是,這里還存在二個(gè)問(wèn)題,一是對(duì)于三角函數(shù),需把角度轉(zhuǎn)換成弧度,才能代入公式計(jì)算;二是這個(gè)級(jí)數(shù)有無(wú)數(shù)多項(xiàng),又如何進(jìn)行計(jì)算呢?
對(duì)于f(x)=sin45,得先表達(dá)成弧度形式,45是角度值,轉(zhuǎn)換成弧度就是∏/4。
對(duì)于級(jí)數(shù)有無(wú)數(shù)項(xiàng),其實(shí)這又是泰勒級(jí)數(shù)的精妙所在:隨著n的增大,后面各項(xiàng)的值將越來(lái)越小,直到趨向于0,用數(shù)學(xué)術(shù)語(yǔ)來(lái)表達(dá)的話,就叫級(jí)數(shù)是收斂的,也即當(dāng)n趨向于無(wú)窮大時(shí)通項(xiàng)的極限=0,所以只需計(jì)算前面若干項(xiàng)就可以得到函數(shù)的近似值,當(dāng)然,項(xiàng)數(shù)取得越多,最終計(jì)算得到的精度也越高。如果級(jí)數(shù)是通項(xiàng)不趨向0,則級(jí)數(shù)是發(fā)散的。這就無(wú)法用于上述計(jì)算了。
下面通過(guò)取前4項(xiàng)的來(lái)進(jìn)行計(jì)算:
1.??????? x=∏/4 =? 0.78539816339744830961566084581988
2.??????? -x^3/3! = -0.08074551218828078170696957048724
3.??????? x^5/5! =? 0.00249039457019272016001579842157
4.??????? -x^7/7! =- 0.00003657620418217725078660518698
?? Sin45=sin(∏/4)=? 0.707106469575178070817920468567
???(這里的運(yùn)算還是使用了計(jì)算器,主要是為了能說(shuō)明問(wèn)題。手工計(jì)算也行,只是量相當(dāng)大,特別是取有效位數(shù)多的時(shí)候,估計(jì)如果手工計(jì)算,沒幾人能算得下來(lái)。而且上述過(guò)程沒有考慮太多近似計(jì)算的理論。)
??? 與計(jì)算器或計(jì)算機(jī)的運(yùn)算結(jié)果對(duì)比,前6位有效數(shù)字是正確的。從上述計(jì)算級(jí)數(shù)的前4項(xiàng)的值來(lái)看,可以明顯看出,當(dāng)n增大時(shí),對(duì)應(yīng)項(xiàng)的絕對(duì)值是急劇減小。
??? 理論上函數(shù)展開后的泰勒級(jí)數(shù)為無(wú)窮級(jí)數(shù),但工程實(shí)際上需要的僅是合適精度的近似值。即使是電腦中的科學(xué)計(jì)算器得到的結(jié)果也是一個(gè)32位的近似值,如果需要更高的精度,只需編寫電腦程序來(lái)實(shí)現(xiàn)。至此,已基本解決sin45度值如何得到的問(wèn)題,其他三角函數(shù)、指數(shù)對(duì)數(shù)函數(shù)等都可以通過(guò)上述方法來(lái)進(jìn)行理論推導(dǎo)和近似計(jì)算。
轉(zhuǎn)載于:https://www.cnblogs.com/lifeifei_heyang/archive/2011/08/24/4291319.html
總結(jié)
以上是生活随笔為你收集整理的计算器是如何计算sin、cos等科学函数的值呢?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 股票出货和洗盘的区别
- 下一篇: 苹果被传将于3月16日举行春季发布会 新