0
点赞
收藏
分享

微信扫一扫

SymPy学习笔记

颜娘娘的碎碎念 2022-03-11 阅读 71


SymPy学习笔记_python

SymPy其实是一个冷门Python库

介绍里说SymPy是个用于符号数学的Python库

现在来看依然是个大玩具,尽管看起来包罗万象(广度上对标Mathematica)

但是补充了python在符号计算的短板,这个项目还是挺牛的

​没打算学完​

我遇到好多地方找不到对应模块或者函数。。。

目录


  • ​​参考​​
  • ​​你可以用SymPy做什么​​
  • ​​数论​​
  • ​​丢番图方程​​
  • ​​discrete模块​​
  • ​​physics文件夹下​​
  • ​​optics模块​​

  • ​​高斯光学​​
  • ​​光学媒质​​



参考

​​​​https://docs.sympy.org/​​​​ 英语文档

​​​​https://tio.run​​​​ 一个在线IDE(语言选择python 3)

​​​​https://github.com/sympy/sympy​​​​ github仓库地址

你可以用SymPy做什么

范畴论

组合数学

密码学

偏微分方程

几何学

ODE

PDE

物理

。。。

数论

动态增长的埃拉托色尼筛

from sympy import sieve
sieve._reset()
sieve.extend(100)
# sieve.extend_to_no(30)
print(25 in sieve)
print(sieve._list)

数论函数,离散对数,连分数,埃及分数,等等

from sympy import *
from sympy.ntheory import *
from sympy.ntheory.factor_ import *
from sympy.ntheory.continued_fraction import *


print(mobius(13*7*5))
print(totient(30))
print(reduced_totient(30))
print(divisor_sigma(12,2))
print(udivisor_sigma(36,3))
print(core(15**11,10))
print(digits(27,b=2))
print(primenu(30))
print(primeomega(20))
print([legendre_symbol(i,7) for i in range(7)])
print(jacobi_symbol(60,121))
print(discrete_log(41,15,7))
print(continued_fraction_periodic(3,2,7))
print(egyptian_fraction(Rational(3,7)))
print(egyptian_fraction(Rational(3, 7), "Takenouchi"))

丢番图方程

from sympy import *
from sympy.solvers import *
from sympy.solvers.diophantine import *



x,y,z=symbols("x,y,z",integer=True)
print(diophantine(2*x+3*y-5))

discrete模块

讲了快速傅里叶变换,快速数论变换,快速Walsh-Hadamard变换,莫比乌斯变换,等等

from sympy  import *
from sympy.discrete.convolutions import *



x,y,z=symbols("x,y,z")
u,v,w=symbols("u,v,w")



####################################
tmp1=fft([1,2,3,4],dps=15)
tmp2=ifft(tmp1)
print(f'{tmp1}\n{tmp2}')


tmp3=ntt([1,2,3,4],prime=3*2**8+1)
tmp4=intt(tmp3,prime=3*2**8+1)
print(f'{tmp3}\n{tmp4}')


tmp5=fwht([4,2,2,0,0,2,-2,0])
tmp6=ifwht(tmp5)
print(f'{tmp5}\n{tmp6}')



tmp7=mobius_transform([x,y,z],subset=False)
tmp8=inverse_mobius_transform(tmp7,subset=False)
print(f'{tmp7}\n{tmp8}')




tmp9=convolution_subset([u,v],[x,y])
tmp10=covering_product([u,v],[x,y])
tmp11=intersecting_product([u,v],[x,y])
print(f'{tmp9}\n{tmp10}\n{tmp11}')

physics文件夹下

optics模块

高斯光学
from sympy.physics.optics import *


p=BeamParameter(530e-9,1,w=1e-3)
print(f'p.q {p.q}')
print(f'p.w {p.w}')
print(f'p.w_0 {p.w}')
print(f'p.gouy {p.gouy}')
print(f'p.radius {p.radius}')
print(p.q.n())
print(p.w_0.n())
print(p.z_r.n())



print("#######")
fs=FreeSpace(10)
p1=fs*p
print(p.w.n())
print(p1.w.n())
光学媒质
from sympy.abc import *
from sympy.physics.optics import *

m1=Medium('m1')
m2=Medium('m2',epsilon,mu)
print(f'm1.intrinsic_impedance {m1.intrinsic_impedance}')
print(f'm2.intrinsic_impedance {m2.intrinsic_impedance}')
# m1.intrinsic_impedance 149896229*pi*kilogram*meter**2/(1250000*ampere**2*second**3)
# m2.intrinsic_impedance sqrt(mu/epsilon)


print()
print(f'm1.refractive_index {m1.refractive_index}')
print(f'm2.refractive_index {m2.refractive_index}')
# m1.refractive_index 1
# m2.refractive_index 299792458*meter*sqrt(epsilon*mu)/second




print()
print(f'm1.permeability {m1.permeability}')
print(f'm2.permeability {m2.permeability}')
# m1.permeability pi*kilogram*meter/(2500000*ampere**2*second**2)
# m2.permeability mu



print()
print(f'm1.permittivity {m1.permittivity}')
print(f'm2.permittivity {m2.permittivity}')
# m1.permittivity 625000*ampere**2*second**4/(22468879468420441*pi*kilogram*meter**3)
# m2.permittivity epsilon


print()
print(f'm1.speed {m1.speed}')
print(f'm2.speed {m2.speed}')
# m1.speed 299792458*meter/second
# m2.speed 1/sqrt(epsilon*mu)



举报

相关推荐

0 条评论