數值計算的可靠性(二)
<< 接上篇
已知 a0 = 1 - 1/e, an = 1 - nan-1 (n > 0),我們有:
a0 = -(1/e - 1)
a1 = +(1/e - 0)
a2 = -(2/e - 1)
a3 = +(6/e - 2)
a4 = -(24/e - 9)
a5 = -(120/e - 44)
a6 = -(720/e - 265)
顯然
an = (-1)n+1(n!/e - bn)
利用 1,0,1,2,9,44,265 在 OEIS 上搜尋,得到 OEIS A000166,因此:
an = (-1)n+1(n!/e - !n)
其中:
因此:
而最後一行的表示式收斂極快,於是我們可以用以下 C 語言程式來計算 a999:
#include <stdio.h>
#include <math.h>
double a(int n)
{
double v = 0, t = 1;
for (n++; t != 0; n++) t /= n, v += t, t = -t;
return v;
}
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): %.12lf %16.12lf\n", i-1, a(i-1), v);
}
執行結果:
a( 0): 0.632120558829 0.632120558829
a( 1): 0.367879441171 0.367879441171
a( 2): 0.264241117657 0.264241117657
a( 3): 0.207276647029 0.207276647029
a( 15): 0.059017540879 0.059033793642
a( 16): 0.055719345931 0.055459301730
a( 17): 0.052771119169 0.057191870597
a( 18): 0.050119854958 -0.029453670752
a( 19): 0.047722755796 1.559619744279
a( 20): 0.045544884076 -30.192394885584
a( 21): 0.043557434408 635.040292597259
a(998): 0.001000000999 -inf
a(999): 0.000999001995 inf
參考資料
相關文章
- 數值計算的可靠性(三)
- 數值計算的可靠性(一)
- 【數值計算方法】數值積分&微分
- python計算對數值Python
- 【數值計算方法】常微分方程數值解-數值實驗
- 計算機系統002 – 數值運算計算機
- 【數值計算方法】線性方程組的迭代解法-數值實驗
- 計算二叉樹的層數二叉樹
- 【數值計算方法】非線性方程求根-數值實驗
- 計算機中數值和字串怎麼用二進位制表示?計算機字串
- Shell程式設計-04-Shell中變數數值計算程式設計變數
- 圖解計算機中的數值範圍和浮點運算圖解計算機
- 計算int變數中攸多少bit的值是1變數
- 平行計算π值
- 計算機組成與體系結構-數值表示範圍-浮點數計算計算機
- 數值計算:高斯-勒朗德積分公式公式
- 「學習記錄」《數值分析》第二章計算實習題(Python語言)Python
- python 計算中位數、四分位數、最大值、最小值等Python
- 介紹一種二維線性插值計算方法
- python 計算 sin 值Python
- SHELL之數值運算
- 資料處理02:Python數值計算包NumPyPython
- # 數值計算:三角形積分
- 樹,計算父節點的值
- 計算機計算小數除法的陷阱計算機
- Zsh 開發指南(第七篇 數值計算)
- 不用電的計算機(二)計算機
- 【DA】z檢驗p值的計算
- OpenCV計算機視覺學習(2)——影像算術運算 & 掩膜mask操作(數值計算,影像融合,邊界填充)OpenCV計算機視覺
- 如何從字串文字中拆解出多個數值並計算字串
- 數值計算:前向和反向自動微分(Python實現)Python
- 通過層次遍歷計算二叉樹的層數二叉樹
- RPC框架的可靠性設計RPC框架
- greenplum分佈鍵的hash值計算分析
- RAG知識庫的可靠性評估(二)
- 數值設計的基本概念
- 【數值計算方法】線性方程組迭代演算法的Python實現演算法Python
- 五種C語言非數值計算的常用經典排序演算法C語言排序演算法