Math
排列组合¶
scipy 计算排列组合的具体数值¶
from scipy.special import comb, perm
# 排列
perm(3, 2)
6.0
# 组合
comb(3, 2)
3.0
itertools 获取排列组合的全部情况数¶
from itertools import combinations, permutations
permutations([1, 2, 3], 2)
<itertools.permutations at 0x7febfd880fc0>
# 可迭代对象
list(permutations([1, 2, 3], 2))
[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
list(combinations([1, 2, 3], 2))
[(1, 2), (1, 3), (2, 3)]
numpy¶
- 矩阵求逆
import numpy as np a = np.array([[1, 2], [3, 4]]) # 初始化一个非奇异矩阵(数组) print(np.linalg.inv(a)) # 对应于MATLAB中 inv() 函数 # 矩阵对象可以通过 .I 更方便的求逆 A = np.matrix(a) print(A.I)
-
求广义逆
import numpy as np # 定义一个奇异阵 A A = np.zeros((4, 4)) A[0, -1] = 1 A[-1, 0] = -1 A = np.matrix(A) print(A) # print(A.I) 将报错,矩阵 A 为奇异矩阵,不可逆 print(np.linalg.pinv(a)) # 求矩阵 A 的伪逆(广义逆矩阵),对应于MATLAB中 pinv() 函数
-
小数转换为分数
使矩阵里的小数转为分数
import fractions
np.set_printoptions(formatter={'all':lambda x: str(fractions.Fraction(x).limit_denominator())})
print(A_inv)
sage 中常用操作¶
- 求逆元
inv=inverse_mod(30,1373) print(30*inv%1373) #1
- 扩展的欧几里得算法
d,u,v=xgcd(20,30) #d:10 u:-1 v:1
-
求离散对数
# 2**x mod 23==13 x=discrete_log(mod(13,23),mod(2,23)) #或discrete_log(13,mod(2,23)) print(x)
-
求摸根
# x**22==5 mod 41 x=mod(5,41) r=x.nth_root(22)
-
欧拉函数
print(euler_phi(71)) #70
- GF(2^8)中求逆元和乘法
P.<x> = PolynomialRing(GF(2)) f=x^8+x^4+x^3+x+1 c.<x>=GF(2^8,modulus=f) d0=x^6 + x^4 + x^2 + x + 1 d1=x^7 + x + 1 print(inverse_mod(d0,f)) print(d0*d1)
-
讲表达式转换为近似值
result=pi^2 result.numerical_approx()
-
素数分布pi(x)
result=prime_pi(1000)/(1000/log(1000)) result.numerical_approx() #1.16050288686900
-
在整数域中的椭圆曲线
# 输出所有点 a4=2;a6=3;F=GF(7); E=EllipticCurve(F,[0,0,0,a4,a6]) print(E.cardinality()) #6 print(E.points()) #[(0 : 1 : 0), (2 : 1 : 1), (2 : 6 : 1), (3 : 1 : 1), (3 : 6 : 1), (6 : 0 : 1)]
-
创建点
point1=E([2,1]) point2=E([3,6]) print(point1+point2)#(6 : 0 : 1) print(point1-point2)#(2 : 6 : 1)
画个心¶
print'\n'.join([''.join([('LOVEYOU!'[(x-y)%7]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0 else' ')for x in range(-30,30)])for y in range(15,-15,-1)])
本页面的全部内容在 CC BY-NC-SA 4.0 协议之条款下提供,附加条款亦可能应用。