高斯求积正交多项式的工具
orthop的Python项目详细描述
关于正交多项式的所有内容。
Orthopy为 lines, triangles, quadrilaterals, disks, spheres, hexahedra,和 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=0 | n=2, k=1 | n=3, k=1 |
vals=orthopy.triangle.tree(x,4,'normal',symbolic=False)
可用的标准化是
'normal'
(规范化多项式,即平方函数的积分等于1)和'1'
其中多项式在三角形的至少一个角上1
。
四边形
n=1, k=0 | n=2, k=1 | n=3, k=1 |
vals=orthopy.quadrilateral.tree(x,4,symbolic=False)
所有多项式都在四边形上规范化。
磁盘
n=1, k=0 | n=2, k=1 | n=4, k=3 |
vals=orthopy.disk.tree(x,4,symbolic=False)
所有多项式在单位圆盘上都是标准化的。
具有权重函数exp的二维空间(-r2)
n=1, k=0 | n=2, k=1 | n=3, k=1 |
vals=orthopy.e2r2.tree(x,4,symbolic=False)
所有的多项式都是在量度上归一化的。
球体
n=1, k=0 | n=2, k=1 | n=5, k=3 |
复数球谐函数,用 cplot着色。
vals=orthopy.sphere.tree_sph(polar,azimuthal,n,standardization='quantum mechanic',symbolic=False)
六面体
n=1, k=0 | n=2, k=1 | n=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。