You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用quadpy对二维多边形积分时遇QuadpyError错误求助

问题分析与解决

错误原因

你调用的quadpy.t2.get_good_scheme是专门用于二维三角形的积分方案,而传入的poly是4个顶点组成的四边形,quadpy无法识别该域的形状,因此抛出QuadpyError: Wrong domain shape。

解决方法

方法1:手动拆分四边形为三角形

将四边形拆分成两个不重叠的三角形,分别计算积分后求和:

import numpy as np
import quadpy

def f(x):
    return x[0]

# 拆分四边形为两个三角形(顶点按顺序排列)
triangle_1 = np.array([[0.0, 0.0], [1.0, 0.0], [0, 1]])
triangle_2 = np.array([[1.0, 0.0], [0, 1], [1, 1]])

# 初始化三角形积分方案
scheme = quadpy.t2.get_good_scheme(10)
# 分别计算两个三角形的积分
integral_1 = scheme.integrate(f, triangle_1)
integral_2 = scheme.integrate(f, triangle_2)
# 总积分
total_integral = integral_1 + integral_2

print(total_integral)  # 输出: [0.5]

方法2:使用quadpy多边形积分工具

利用quadpy.polygon.integrate自动处理多边形拆分,无需手动拆分:

import numpy as np
import quadpy

def f(x):
    return x[0]

# 确保多边形顶点按顺时针/逆时针连续排列(避免交叉)
poly = np.array([[0.0, 0.0], [1.0, 0.0], [1, 1], [0, 1]])

# 传入多边形与指定的三角形积分方案
total_integral = quadpy.polygon.integrate(f, poly, quadpy.t2.get_good_scheme(10))

print(total_integral)  # 输出: [0.5]

注意:多边形顶点必须按顺时针或逆时针的连续顺序排列,不能出现交叉,否则会导致积分结果错误。

内容的提问来源于stack exchange,提问作者Davide Modesto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:31:38