continuous-integration - 约束曲面上的数值积分
问题描述
我对空间中表面积分的数值计算感兴趣,二次约束由非对角矩阵 g 确定,它有效地限制了椭球表面上的积分。到目前为止,我试图通过狄拉克三角函数的高斯近似将约束包含在积分符号下,但这显着减慢了收敛速度。
是否有一个最佳库来有效地实现这种集成?可能在 Python 中?
解决方案
一个好的方法是首先生成域的三角剖分,例如,使用pygalmesh
import pygalmesh
import numpy as np
class Surface(pygalmesh.DomainBase):
def __init__(self):
self.G = np.array([
[1.0, 3.0, -1.0],
[2.0, 1.0, 2.0],
[0.0, 0.0, 1.0],
])
super().__init__()
def eval(self, x):
return np.dot(x, self.G @ x) - 1.0
def get_bounding_sphere_squared_radius(self):
return 10.0
d = Surface()
mesh = pygalmesh.generate_surface_mesh(d, max_radius_surface_delaunay_ball=0.1)
mesh.write("out.vtk")
然后,您可以使用quadpy在三角剖分上集成任何函数。
推荐阅读
- python - VSCode python重构:重命名符号不适用于类运算符实现中的属性
- r - 具有第三个变量 R 平均值的双向表
- javascript - useSelector 在一个页面中返回初始状态,在其他页面中返回正确状态
- kubernetes - 等待服务部署到 K8s
- javascript - 如何从 node.js webapp 中的 mysql 查询重定向?
- r - gglasso - x 和 y 有不同的行数 [R]
- javascript - Apollo GraphQL - TypeError:无法读取未定义的属性“findOrCreateUser”
- loops - Picat中的分区函数P
- python - 在单词列表pyspark中过滤列值的行
- database - 在进程之间共享 Postgres(或其他 DBMS)事务上下文