测试一个e的大数幂级
来源:互联网 发布:阿帕奇 知乎 编辑:程序博客网 时间:2024/05/21 07:11
测试一个e的大数幂级
因为e^x=1+x^1*1/1!+x^2*1/2!+...+x^n*1/n!
下面的代码是测试当x取很大时候,n 在多大的时候才能保证等式的两边相等。
下面写程序来证明:
(defun pow (num count)
(if (or (> count 1) (eq count 1) )
(* num
(pow num
(- count 1) ) )
1))
(defun slayerex (num count)
(if (or (> count 1) (eq count 1) )
(* num
(slayerex
(1- num)
(- count 1) ) )
1))
(defun slayer ( count)
(if (or (> count 1) (eq count 1) )
(* count
(slayer
(- count 1) ) )
1))
(defun expr (x n)
(if (eq n 0)
1.0
(+ (expr x
(1- n))
(/ (pow x n)
(slayer n )))))
(setq e (expr 1
20))
(defun formula (n)
(pow e n))
(defun test (n)
(if (> n 0)
(progn
(print (expr n n))
(print 'compare)
(print (formula n))
(test (- n 1)))
(print 'over)))
(test 50)
发现(print (formula n))比(print (expr n n))要大,同样从e^x的展开式中也可以看出,其中n应该是无穷大的,而这里的n为x,所以当x=n时,数列甚至都还是发散的,所以明显有以下公式成立:
e^n > 1+n^1*1/1!+n^2*1/2!+...+n^n*1/n! (因为其中必须保证n^n*1/n!是收敛的时候与e^n才能化等号,但x也变为无穷大之后, 已经没有无穷大的n可以保证n^n*1/n!是收敛的)
将上式化简有:
e^n > n^n*1/n!
Go
n!>(n/e)^n
GO
这样就可以得到算法分析中的重要公式:
(log n!)>(log (n/e)^n )
GO
(log n!)>n *(log (n/e) )
GO
(log n!)>n *(log n -1 )
Go
(log n!)>n *log n
- 测试一个e的大数幂级
- 测试一个大数是否是素数
- 求一个大数的阶乘
- 求一个大数的平方根
- 求一个大数的位数
- 大数(一个大数乘上一个int的数)
- hdu 的一个简单的大数加法
- 初学java写的一个大数计算器
- 以前写的一个大数计算器
- 判断一个大数是否11的倍数
- 一个简单的大数乘法算法
- C语言 求一个大数的阶乘
- 关于大数相乘的一个简单算法。
- 就一个简单的大数计算
- 一个很好用的大数模板
- 大数的幂
- 2013级测试赛 --E(Kruskal)
- 14级第一次测试 E - The Snail
- 关于C#调用存储过程,带输出参数,存储过程
- Silverlight中 非UI线程更新UI 的几种方法
- 那年,西冲
- 排序算法的发现
- Android OpenGL Gallery Cover Flow
- 测试一个e的大数幂级
- 关于e存在的意义
- 集合和泛型
- directdraw YUV直接显示,怎么显示在MFC的picture控件上呢?
- 经典排列公式的正向推导
- 特殊的变形组合公式求和的推导
- ubuntuServer命令行下面中文乱码问题解决心得
- VS无法启动调试:“生成下面的模块时,启用了优化或没有调试信息...”
- 命名空间和程序集