高等数学-级数

阶乘

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

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]

开根号有个快速方法,还未看:https://blog.youkuaiyun.com/Skywalker1111/article/details/116295522

pi

https://www.zhihu.com/question/402311979

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

常用泰勒级数展开式
https://zhuanlan.zhihu.com/p/38

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值