對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的對邊就是斜邊 如下圖所示 速度記住方法 正 可以理解為是 對的意思.代表的是對邊 弦 可以看作是乙個很長的結他弦 代表長.而直角三角形中.弦長的就是 斜邊了.餘 可以看作剩餘.旁邊...