數值計算 設計演算法的若干原則

2021-10-04 02:55:08 字數 1260 閱讀 4988

當x充分大時:

對於小的正數ε:

sin(x+ε) – sinx=2cos(x+ε/2)sin(ε/2)

(: sin(x) – sin(y)=2 cos [(x+y)/2] sin [(x-y)/2] )

在五位浮點十進位制計算機上,計算

y=54321+0.4+0.3+0.4

如果按從左到右的順序進行加法運算,後三個數都在對階過程中被當作零,得出含有較大絕對誤差的結果y=54321。要避免這種大數「吃掉」小數的現象,可以調整計算順序,採用先小數後大數的計算次序,即先將0.4,0.3,0.4加起來,然後再加上54321,結果等於54322。

一般情況下,若干數相加,採用絕對值較小者先加的演算法,結果的相對誤差限較小。

通常,計算多項式

pn(x)=anxn+ an-1xn-1+…+ a1x+a0

的值,若直接計算再逐項相加,一共需做n(n+1)/2次乘法和n次加法。

若採用pn(x)=(…((anx+an-1)x+an-2)x+…+a1)x+a0即「秦九韶演算法」。

則只需n次乘法和n次加法就可以算出pn(x)的值。「秦九韶演算法」的優點是不僅運算量小,而且數值穩定。

例項**如下:

;}當x接近於0時(1-cosx)/sinx的分子、分母都近0,為避免絕對值小的數作接除數,可將原式

化為(1-cosx)/sinx=sinx/(1+cosx)

數值計算 GPU加速演算法

典型的cuda程式的執行流程如下 分配host記憶體,並進行資料初始化 分配device記憶體,並從host將資料拷貝到device上 呼叫cuda的核函式在device上完成指定的運算 將device上的運算結果拷貝到host上 釋放device和host上分配的記憶體。下面為kernel的執行緒...

設計演算法1

題目 有一幢的大廈,兩部手機,讓你設計一種演算法確切地知道這部手機在第幾樓摔下會壞 分析 第一步手機是用來決定在0 100層之間需要劃分幾個區間 第二步手機是用來在已發現可以導致手機摔壞的區間內一級一級往上加樓層已具體測試是哪一層的工具。假設第一步手機劃分的區間為a個,每個區間包含的層數為b。則可以...

設計演算法1

題目 有一幢的大廈,兩部手機,讓你設計一種演算法確切地知道這部手機在第幾樓摔下會壞 分析 第一步手機是用來決定在0 100層之間需要劃分幾個區間 第二步手機是用來在已發現可以導致手機摔壞的區間內一級一級往上加樓層已具體測試是哪一層的工具。假設第一步手機劃分的區間為a個,每個區間包含的層數為b。則可以...