高等数学-级数

阶乘

import math
 
def factorial(n):
    if n == 0: return 1
    if n == 1: return 1
    if n == 2: return 2
    return n * factorial(n-1)
 
def factorial_for(n):
    if n == 0: return 1
    if n == 1: return 1
    if n == 2: return 2
    x = 1
    for i in range(1,n+1):
        x *= i
    return x
 
print([math.factorial(i) for i in range(0,5)])
print([factorial(i) for i in range(0,5)])
print([factorial_for(i) for i in range(0,5)])

运行如下:

[1, 1, 2, 6, 24]
[1, 1, 2, 6, 24]
[1, 1, 2, 6, 24]

速度对比:

import math
import time
 
def factorial_recur(n):
    if n == 0: return 1
    if n == 1: return 1
    if n == 2: return 2
    return n * factorial_recur(n-1)
 
def factorial_for(n):
    if n == 0: return 1
    if n == 1: return 1
    if n == 2: return 2
    x = 1
    for i in range(1,n+1):
        x *= i
    return x
 
num = 100
T0 = time.time()
print(math.factorial(num))
print(time.time()-T0,'\n')
 
T1 = time.time()
print(factorial_recur(num))
print(time.time()-T1,'\n')
 
T2 = time.time()
print(factorial_for(num))
print(time.time()-T2)

运行如下:

93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
3.0040740966796875e-05 
 
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
4.1961669921875e-05 
 
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
2.3603439331054688e-05

e

常数的e级数展开如下:

e=1+1/1!+1/2!+1/3!+1/4!+.....

import math
 
def factorial(n):
    if n == 0: return 1
    if n == 1: return 1
    if n == 2: return 2
    x = 1
    for i in range(1,n+1): x *= i
    return x
e = sum([1/factorial(i) for i in range(40)])
 
print(math.e)
print(e)

运行如下:

2.718281828459045
2.7182818284590455

根号

import math
 
def sqrt(x):
    if x == 0: return 0.0
    if x == 1: return 1.0
    left, right = 0, x
    middle = (left+right) / 2
    eps = 1e-13
    eps_v = 1
    while eps_v > eps:
        eps_v = middle ** 2 - x
        if eps_v < 0: 
            left = middle 
            middle = (left+right) / 2
            eps_v = abs(eps_v)
        elif eps_v > 0:
            right = middle
            middle = (left+right) / 2
        else: return middle
    return middle
 
print([math.sqrt(i) for i in range(0,9)])
print([sqrt(i) for i in range(0,9)])

运行如下:

[0.0, 1.0, 1.4142135623730951, 1.7320508075688772, 2.0, 2.23606797749979, 2.449489742783178, 2.6457513110645907, 2.8284271247461903]
[0.0, 1.0, 1.4142135623729928, 1.7320508075689105, 2.0, 2.2360679774997294, 2.449489742783168, 2.6457513110642026, 2.8284271247461987]

pi

import math
 
pi = 1/(2*math.sqrt(2)/9801 * sum([math.factorial(4*i)*(26390*i+1103)/math.factorial(i)**4/396**(4*i) for i in range(5)]))
 
print(math.pi)
print(pi)

运行如下:

3.141592653589793
3.141592653589793

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值