如果要求 Prism 计算给定 X 的 Y 值,它就会通过求解定义曲线的方程来实现。这非常简单。
如果要求 Prism 针对给定的 Y 计算 X,情况就比较复杂了。Prism 不会尝试用代数方法求解方程,而是用数值方法进行插入值计算。计算结果至少精确到小数点后 6-7 位。
Prism 决定要考虑的 X 值范围。为了使外推法稍稍超出数据范围,Prism 创建了一个插值/外推法范围,其中包括数据范围,并向每个方向延伸了一段距离,该距离等于 Xmax 和 Xmin 之间差值的一半。有两种特殊情况。当所有数据都是正数(或零)时,会对该范围进行裁剪,以排除负数。同样,当所有数据都是负数(或零)时,插值/外推法的范围也会被削去,以排除正数。
然后,Prism 将插值/外推法范围划分为 1000 个线段。
对于要进行插值或外推法的每个值,Prism 首先会尝试在数据的 X 值范围内进行插值。
1.它从最低的 X 值开始(在图形上从左往右扫描)。如果有多条线段包含 Y 值,Prism 只查找第一条线段(最低 X 值)。
2.然后,Prism 在该线段内插入插值,以尽可能准确地确定 X 值。在大多数情况下,它是通过二进制二分法来实现的。它将线段一分为二,找出包含 Y 的线段。如此反复。如此反复,直到根据计算机的数字精度尽可能准确地确定 X。在极少数情况下,Y 在步骤 1 确定的范围内可能不是单调的。在这种情况下,Prism 会使用线性插值而不是二进制二分法。
如果 Prism 无法在数据的 X 范围内插入与输入的 X 值相对应的 Y 值,它将尝试向上述扩展范围外推一个值。它首先查看数据中最小 X 值以下的 X 值,然后查看数据中最大 X 值以上的 X 值。
当 Prism 插入一个值(X 值在数据范围内)时,如果您要求它计算置信区间,它也会这样做。计算方法是确定两个置信带与您输入的 Y 值的交点。当 Prism 从曲线中外推一个值时,它不会为该外推值计算置信区间。