を使用して 8 次元空間のデータ ポイントを補間しようとしてscipy.interpolate.LinearNDInterpolator()
いますが、理解できないエラーが発生します。
scipy.spatial.qhull.QhullError: QH6154 Qhull precision error: Initial simplex is flat (facet 1 is coplanar with the interior point)
続いて、以下に投稿するより多くのテキストが続きます。オンラインで見つけたものを使用すると、コードのエラーを修正できません。それはすべて私には正しいように見えます(関連する部分のみをコピーしました):
from scipy import interpolate as inter
from numpy import array
npPoints = array(points)
npS = array(s)
inter.LinearNDInterpolator(npPoints, npS)
ここpoints
で、 はフロートの Nx8 ネストされたリストであり、s
はフロートの Nx1 リストであり、どちらも以前に定義されています。
ドキュメントで見たものから、私はそれを正しくやっているようです。私のエラーはどこですか?別の方法を使用する必要がありますか?
完全な Qhull エラーは次のとおりです。
Traceback (most recent call last):
File "BellDataFit", line 83, in <module>
inter.LinearNDInterpolator(npPoints, npS)
File "interpnd.pyx", line 248, in scipy.interpolate.interpnd.LinearNDInterpolator.__init__
File "qhull.pyx", line 1826, in scipy.spatial.qhull.Delaunay.__init__
File "qhull.pyx", line 354, in scipy.spatial.qhull._Qhull.__init__
scipy.spatial.qhull.QhullError: QH6154 Qhull precision error: Initial simplex is flat (facet 1 is coplanar with the interior point)
While executing: | qhull d Qbb Qx Qz Q12 Qt Qc
Options selected for Qhull 2015.2.r 2016/01/18:
run-id 704299719 delaunay Qbbound-last Qxact-merge Qz-infinity-point
Q12-no-wide-dup Qtriangulate Qcoplanar-keep _zero-centrum Qinterior-keep
Q3-no-merge-vertices-dim-high Pgood _max-width 5.6 Error-roundoff 3.5e-14
_one-merge 6.7e-13 Visible-distance 2.1e-13 U-coplanar-distance 2.1e-13
Width-outside 4.2e-13 _wide-facet 1.3e-12
precision problems (corrected unless 'Q0' or an error)
2 flipped facets
11 nearly singular or axis-parallel hyperplanes
11 zero divisors during back substitute
119436 zero divisors during gaussian elimination
The input to qhull appears to be less than 9 dimensional, or a
computation has overflowed.
Qhull could not construct a clearly convex simplex from points:
- p3(v9): -0.89 -0.89 0 0 0 -1.7 -3.1 -3.1 2.1
- p2(v8): -0.89 -0.89 0 0 0 -2.1 -3.1 -3.1 2.7
- p1(v7): -0.89 -0.89 0 0 0 -2.4 -3.1 -3.1 3.4
- p16(v6): -0.89 -0.89 0 0 0 2.8 -3.1 -3.1 4.3
- p2720(v5): 0 0 -0.89 0.89 0 -2.8 -3.1 -3.1 4.3
- p2448(v4): 0 0 -0.89 -0.89 0 -2.8 -3.1 -3.1 4.3
- p7055(v3): 0 0 0.89 -0.89 0 -2.8 -3.1 -3.1 4.3
- p272(v2): -0.89 0.89 0 0 0 -2.8 -3.1 -3.1 4.3
- p0(v1): -0.89 -0.89 0 0 0 -2.8 -3.1 -3.1 4.3
- p9503(v0): 0.89 -0.89 0 0 0 -2.8 -3.1 -3.1 4.3
The center point is coplanar with a facet, or a vertex is coplanar
with a neighboring facet. The maximum round off error for
computing distances is 3.5e-14. The center point, facets and distances
to the center point are as follows:
center point -0.4444 -0.4444 -0.08889 -0.08889 0 -2.025 -3.142 -3.142 3.806
facet p2 p1 p16 p2720 p2448 p7055 p272 p0 p9503 distance= 0
facet p3 p1 p16 p2720 p2448 p7055 p272 p0 p9503 distance= 0
facet p3 p2 p16 p2720 p2448 p7055 p272 p0 p9503 distance= 0
facet p3 p2 p1 p2720 p2448 p7055 p272 p0 p9503 distance= 0
facet p3 p2 p1 p16 p2448 p7055 p272 p0 p9503 distance= 0
facet p3 p2 p1 p16 p2720 p7055 p272 p0 p9503 distance= -0.13
facet p3 p2 p1 p16 p2720 p2448 p272 p0 p9503 distance= 0
facet p3 p2 p1 p16 p2720 p2448 p7055 p0 p9503 distance= 0
facet p3 p2 p1 p16 p2720 p2448 p7055 p272 p9503 distance= 0
facet p3 p2 p1 p16 p2720 p2448 p7055 p272 p0 distance= 0
These points either have a maximum or minimum x-coordinate, or
they maximize the determinant for k coordinates. Trial points
are first selected from points that maximize a coordinate.
Because of the high dimension, the min x-coordinate and max-coordinate
points are used if the determinant is non-zero. Option 'Qs' will
do a better, though much slower, job. Instead of 'Qs', you can change
the points by randomly rotating the input with 'QR0'.
The min and max coordinates for each dimension are:
0: -0.8889 0.8889 difference= 1.778
1: -0.8889 0.8889 difference= 1.778
2: -0.8889 0.8889 difference= 1.778
3: -0.8889 0.8889 difference= 1.778
4: 0 0 difference= 0
5: -2.793 2.793 difference= 5.585
6: -3.142 -2.225e-308 difference= 3.142
7: -3.142 -2.225e-308 difference= 3.142
8: 1.776e-15 5.585 difference= 5.585
If the input should be full dimensional, you have several options that
may determine an initial simplex:
- use 'QJ' to joggle the input and make it full dimensional
- use 'QbB' to scale the points to the unit cube
- use 'QR0' to randomly rotate the input for different maximum points
- use 'Qs' to search all points for the initial simplex
- use 'En' to specify a maximum roundoff error less than 3.5e-14.
- trace execution with 'T3' to see the determinant for each point.
If the input is lower dimensional:
- use 'QJ' to joggle the input and make it full dimensional
- use 'Qbk:0Bk:0' to delete coordinate k from the input. You should
pick the coordinate with the least range. The hull will have the
correct topology.
- determine the flat containing the points, rotate the points
into a coordinate plane, and delete the other coordinates.
- add one or more points to make the input full dimensional.