第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Python - 計(jì)算 arcsin 時(shí)不準(zhǔn)確

Python - 計(jì)算 arcsin 時(shí)不準(zhǔn)確

吃雞游戲 2023-03-01 16:32:48
我正在嘗試在不使用任何外部庫的情況下在 Python 中實(shí)現(xiàn) arcsin。這是我的代碼:from time import process_time as ptclass TrigoCalc(metaclass=__readonly):    # This class evaluates various Trigonometric functions     # including Inverse Trigonometric functions    def __setattr__(self, name, value):        raise Exception("Value can't be changed")        @staticmethod    def asin(x):        '''Implementation from Taylor series        asin(x) => summation[(2k)! * x^(2k + 1) / (2^(2k) * (k!)^2 * (2k + 1))]                  k = [0, inf)        x should be real        '''        # a0 = 1                                                                                   # a1 = 1/(2*3)                                                                             # a2 = 1/2 * 3/(4*5)         # a3 = 1/2 * 3/4 * 5/(6*7)        # a4 = 1/2 * 3/4 * 5/6 * 7/(8*9)        # a5 = 1/2 * 3/4 * 5/6 * 7/8 * 9/(10*11)        # a6 = 1/2 * 3/4 * 5/6 * 7/8 * 9/10 * 11/(12*13)        # a7 = 1/2 * 3/4 * 5/6 * 7/8 * 9/10 * 11/12 * 13/(14*15)        # a8 = 1/2 * 3/4 * 5/6 * 7/8 * 9/10 * 11/12 * 13/14 * 15/(16*17)        # a9 = 1/2 * 3/4 * 5/6 * 7/8 * 9/10 * 11/12 * 13/14 * 15/16 * 17/(18*19)        # a10 = 1/2 * 3/4 * 5/6 * 7/8 * 9/10 * 11/12 * 13/14 * 15/16 * 17/18 * 19/(20*21)                # taking 10 coefficients for arriving at a common sequence                # N = n, D = n + 1; (N/D) --> Multiplication, number of times the coefficient number, n >= 1                start_time = pt()        coeff_list = []        NUM_ITER = 10000        for k in range(NUM_ITER):            if k == 0:                coeff_list.append(1)            else:                N = 1                D = N + 1                C = N/D                if k >= 2:                    for i in range(k-1):                        N += 2; D += 2                        C = C * N/D                coeff_list.append(C)        
查看完整描述

2 回答

?
翻翻過去那場(chǎng)雪

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊

的問題arcsin(1)是它arcsin(x)在 x=1 處垂直(導(dǎo)數(shù)無限增長(zhǎng))。像泰勒級(jí)數(shù)這樣的多項(xiàng)式逼近跟不上。您的收斂速度非常慢,并且需要大量的項(xiàng)才能獲得合適的近似值。你需要改變你處理問題的方式。

例如,對(duì)于小的 x,y = sin(pi/2 - x)近似為1 - x^2/2,您可以從中推導(dǎo)出近似值asin(y) = pi/2 - sqrt(2 - 2*y)。此近似值適用于非常接近 1 的值 - 您可以直接使用它。

如果你努力一點(diǎn),你可以證明確切的身份

asin(x) = pi/2 - 2*asin( sqrt( (1-x)/2 ) )

使用此恒等式,您可以使用適用于接近 0 的asin(x)x 的現(xiàn)有函數(shù)來計(jì)算接近 1 的 x 。asin

例如:要計(jì)算,asin(0.99)您將計(jì)算:

asin(0.99) = pi/2 - 2*asin( sqrt( (1-.99)/2 ) )
           = pi/2 - 2*asin( sqrt(.005) )
           = pi/2 - 2*asin(0.07071067811865475)

... 然后您將使用您現(xiàn)有的算法來獲得 的高質(zhì)量近似值asin(0.07071067811865475)。

這是在生產(chǎn)質(zhì)量數(shù)學(xué)庫實(shí)現(xiàn)中使用的技術(shù) - 例如參見OpenLibmfdlibm


查看完整回答
反對(duì) 回復(fù) 2023-03-01
?
慕村225694

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊

一個(gè)非?;镜慕浦祵⒔o出sum from 0 to N近似值(以弧度表示)。在這里,您以度為單位給出結(jié)果,因?yàn)槎群突《戎g存在大致的比率,您需要將arcsin 設(shè)置為近似值。arcsin1e(-N)1e2NUM_ITER = 1e(N+2)1e(-N)

因此,對(duì)于您的具體問題,您需要使用N = 1(大約 1 分)進(jìn)行測(cè)試,因此NUM_ITER = 1e(1+2) = 1,000. 這一點(diǎn)都不精確,但可以讓您了解您正在尋找的價(jià)值。

然后,如果您想查找確切的值,我看不到每次都使用精確的數(shù)學(xué)方法(無論 x.point 精度如何)。但是,您可以使用二分法算法來查找NUM_ITER,如果它是您算法的目標(biāo)。第一近似值將減少您的計(jì)算時(shí)間。

精確的近似值來自比率 orx^O(n)4^O(n),4^O(n)更大。我們可以用 來近似求和項(xiàng)O(1/10^n)。

如果有人可以進(jìn)行精確的微積分,我將非常高興看到它。


查看完整回答
反對(duì) 回復(fù) 2023-03-01
  • 2 回答
  • 0 關(guān)注
  • 238 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)