高斯求积正交多项式的工具

orthop的Python项目详细描述


orthopy

关于正交多项式的所有内容。

CircleCIcodecovCode style: blackorthogonalPyPi VersionDOIGitHub stars

Orthopy为 linestrianglesquadrilateralsdiskssphereshexahedra,和 n-cubes。 所有计算均采用数值稳定递推格式。 此外,所有函数都是完全矢量化的,可以在exact arithmetic中返回结果。

注意:在以前的版本中,正射影像包含了处理高斯求积的工具 规则也一样。他们已经转移到quadpy

具有权重函数(1-x)α(1-x)β

的线段[-1,+1]

雅各比,盖根鲍尔(α=β),切比雪夫1(α=β=-1/2),切比雪夫2(α=β=1/2),勒让德 (α=β=0)多项式。

vals=orthopy.line_segment.tree_jacobi(x,4,alpha,beta,'normal',symbolic=False)

递归系数可以通过

p0,a,b,c=orthopy.line_segment.recurrence_coefficients.jacobi(n,a,b,'monic')

标准化的可能选择是'monic''p(1)=(n+alpha over n)''normal'

相关勒让德多项式
vals=orthopy.line_segment.tree_alp(x,4,phi=None,standardization='natural',with_condon_shortley_phase=True,symbolic=False)

具有权重函数xαexp(-r)

的1d半空间

(广义)拉盖尔多项式。

vals=orthopy.e1r.tree(x,4,alpha=0,standardization='normal',symbolic=False)

具有权重函数exp的1d空间(-r2

厄米多项式。

vals=orthopy.e1r2.tree(x,4,'normal',symbolic=False)

所有的多项式都是在量度上归一化的。

三角形

n=1, k=0n=2, k=1n=3, k=1
vals=orthopy.triangle.tree(x,4,'normal',symbolic=False)

可用的标准化是

  • 'normal'(规范化多项式,即平方函数的积分等于1)和
  • '1'其中多项式在三角形的至少一个角上1

四边形

n=1, k=0n=2, k=1n=3, k=1
vals=orthopy.quadrilateral.tree(x,4,symbolic=False)

所有多项式都在四边形上规范化。

磁盘

n=1, k=0n=2, k=1n=4, k=3
vals=orthopy.disk.tree(x,4,symbolic=False)

所有多项式在单位圆盘上都是标准化的。

具有权重函数exp的二维空间(-r2

n=1, k=0n=2, k=1n=3, k=1
vals=orthopy.e2r2.tree(x,4,symbolic=False)

所有的多项式都是在量度上归一化的。

球体

n=1, k=0n=2, k=1n=5, k=3

复数球谐函数,cplot着色。

vals=orthopy.sphere.tree_sph(polar,azimuthal,n,standardization='quantum mechanic',symbolic=False)

六面体

n=1, k=0n=2, k=1n=5, k=5
vals=orthopy.hexahedron.tree(x,3,symbolic=False)

所有多项式都在六面体上规范化。

n立方

vals=orthopy.ncube.tree(x,6,symbolic=False)

所有多项式都在n维立方体上规范化。维度是 由X.shape[0]决定。

具有权重函数exp的nd空间(-r2

vals=orthopy.enr2.tree(x,4,symbolic=False)

所有的多项式都是在量度上归一化的。维度是 由X.shape[0]决定。

其他工具

  • Clenshaw algorithm用于 计算正交多项式的加权和:
    vals=orthopy.line_segment.clenshaw(a,alpha,beta,t)

符号和数值计算

默认情况下,所有操作都以数字方式执行。但是,如果 symbolic=True被指定,所有计算都以符号方式执行。这个 例如,可用于获取多项式的显式表示:

importnumpyimportorthopyimportsympyb0,b1,b2=sympy.Symbol('b0'),sympy.Symbol('b1'),sympy.Symbol('b2')tree=orthopy.triangle.tree(numpy.array([b0,b1,b2]),3,'normal',symbolic=True)print(sympy.expand(tree[3][1]))
42*sqrt(6)*b0*b2**2 - 24*sqrt(6)*b0*b2 + 2*sqrt(6)*b0 - 42*sqrt(6)*b1*b2**2
+ 24*sqrt(6)*b1*b2 - 2*sqrt(6)*b1

安装

骨科是available from the Python Package Index,所以用

pip install -U orthopy

您可以安装/升级。

测试

要运行测试,只需签出此存储库并运行

pytest

许可证

骨科发表在MIT license

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何使用泛型在Java中生成通用方法?   java从ISO/IEC 197944图像数据文件创建图像   java实现RSA的代码有什么问题?   javascript如何将JsonArray从解析云检索到安卓?   在vaadin中上传和下载java文件   java ListView自定义适配器OnClick启动URL链接   java在一个hbox中提供两个元素的独立对齐   java用类名创建类   java从unix命令行运行jar文件   java FTP下载在文件#146处停止