基於泰勒展開式的高精三角函式實現,方法三

2021-07-11 06:04:05 字數 1045 閱讀 5929

對sin()的高精演算法又進一步改進,分享一下,歡迎吧友們指正。

還是針對sin()函式的泰勒展開式進行計算:

用到改進公式:

sinx=x−x⋅x^2(4⋅5⋅6⋅7⋅8⋅9−x^2(6⋅7⋅8⋅9−x^2(8⋅9−x^2)))/9!.............  此公式為本人原創,適合泰勒展開式中一部分公式加速運算,缺點是需要預先根據精度估算出所需的泰勒級數,程式變得複雜,冗餘量很大,我在程式中最後沒有採用了,此處只是作為參考。         

倍角公式:       sin3x=3sinx-4(sinx)^3     這裡用到的原理是:使自變數x盡量縮小到0附近,可以極大減少泰勒公式項數,降低了計算量

倍角公式理論上可以無限把角x分小,而無限趨近於零,在設定精度減少泰勒級數,但這裡沒有兩全其美的事,隨著倍角公式的細分,細分級數增加,泰勒公式計算結果返回後的運算量也在急劇增加,我粗略除錯了一下,

針對一萬精度,倍角公式細分60次,泰勒級數設為精度除以30,運算速度相對我的演算法二,速度提高8倍,基礎乘法也改進了一下,速度提高一倍,現在的速度是一萬精度sinx,用時6秒左右,下面是流程:

x = x mod  2pi                           '弧度化簡,x \2pi,取餘數,餘數為角x,  sinx值不變,x 現在小於2pi

x = x mod  pi                            '弧度化簡,x \pi,取餘數,餘數為角x,  sinx絕對值不變, x 現在小於pi 

使  x 小於pi/2                            『這一步有點不好表達,咱用中文程式設計                 

temp = 3^60

x = x /  temp

x = mysin (x)                            ' 通過優化的泰勒公式計算sinx的值  ,步驟見我的第一遍文章。             

for i = 1 to 60                        '倍角公式返回後運算部分,是不是太簡單!

x=3x-4x^3

next

三角函式與反三角函式的使用

假設該三角形是直角三角形。那麼 依照數學基礎是 sin b b c 其中b是邊b對應的角 但是在c c 程式上面稍微有點不同 那就是弧度制與角度制的區分 先說三角函式,在 程式設計裡面 舉sin 為例 sin 弧度制 只有裡面放弧度制,才能算的精準,假設要算45 的sin值 那麼對45 進行轉換為弧...

三角函式, 的含義

90度和 2表示一樣的角度。角的度量有弧度法和角度法。角度法就是將圓周分成360等分,每一等分就是1度。弧度法是將角所對應弧長於半徑之比作為較大小的單位。因元的周長為2 r,所以整個圓周的大小就是2 弧度。請問正切函式的定義域 怎麼理解?k又代表什麼?k為整數 2,1,0,1,2,正切函式tan s...

基本的三角函式總結

設有乙個直接三角形,分別有三個角 設為 大寫的 x y z如下圖所示 其中 x 與 y的對邊寫作為小 x與 小 y z的對邊就是斜邊 如下圖所示 速度記住方法 正 可以理解為是 對的意思.代表的是對邊 弦 可以看作是乙個很長的結他弦 代表長.而直角三角形中.弦長的就是 斜邊了.餘 可以看作剩餘.旁邊...