數值計算的可靠性(一)
考慮數列:a0 = 1 - 1/e, an = 1 - nan-1 (n > 0)
其中 e 是自然對數的底。求 a999 的近似值。
提示:1 > a0 > a1 > a2 > a3 > ... > 0 。
我們使用以下 C 語言程式來計算 a999 的近似值:
#include <stdio.h>
#include <math.h>
int main(void)
{
double v = 1 - 1 / M_E;
for (int i = 1; i <= 1000; v = 1 - i++ * v)
if (i < 5 || (i > 15 && i < 23) || i > 998)
printf("a(%3d): %16.12lf\n", i - 1, v);
}
執行結果如下所示:
a( 0): 0.632120558829
a( 1): 0.367879441171
a( 2): 0.264241117657
a( 3): 0.207276647029
a( 15): 0.059033793642
a( 16): 0.055459301730
a( 17): 0.057191870597
a( 18): -0.029453670752
a( 19): 1.559619744279
a( 20): -30.192394885584
a( 21): 635.040292597259
a(998): -inf
a(999): inf
可以看出,從 a17 開始的值肯定是錯誤的,這是由於雙精度浮點數的精度是是有限的,而兩個非常相近的浮點數相減,得到的結果只有很少幾位有效數字,造成了很大的數值誤差。
>> 接下篇
相關文章
- 數值計算的可靠性(二)
- 數值計算的可靠性(三)
- Octave 數值計算
- 數值計算基礎
- 數值計算 插值與擬合
- 使用AWK計算某一列的所有數值和
- python計算對數值Python
- 計算機系統002 – 數值運算計算機
- 計算機系統002 - 數值運算計算機
- 33:計算分數加減表示式的值
- Shell程式設計-04-Shell中變數數值計算程式設計變數
- 圖解計算機中的數值範圍和浮點運算圖解計算機
- 計算機組成與體系結構-數值表示範圍-浮點數計算計算機
- 平行計算π值
- 數值計算:高斯-勒朗德積分公式公式
- (高階)繼承的值與計算的值繼承
- MapReduce程式設計基礎(二)——數值概要(計算最大值、最小值、平均值)程式設計
- 一個數學表示式的計算
- # 數值計算:三角形積分
- 遊戲設計的本質(一):數值的本質遊戲設計
- 一個浮點數計算的問題
- 利用字串實現高精度數值運算(一)字串
- 樹,計算父節點的值
- 36:計算多項式的值
- 資料處理02:Python數值計算包NumPyPython
- Zsh 開發指南(第七篇 數值計算)
- 已計算的關鍵值和限制的關鍵值
- 雲端計算普及受制於安全性和可靠性(轉)
- 使用 Python 計算 π 值Python
- 從0開始的數值設計實戰(一)
- 資訊學奧賽一本通 1010:計算分數的浮點數值 | OpenJudge NOI 1.3 05
- FCC - 253 計算一個整數的階乘
- 【DA】z檢驗p值的計算
- 雲端計算專業技能的價值
- 看板數量的計算
- 如何從字串文字中拆解出多個數值並計算字串
- 簡單的計算最值的MapReduce程式
- OpenCV計算機視覺學習(2)——影像算術運算 & 掩膜mask操作(數值計算,影像融合,邊界填充)OpenCV計算機視覺