如果您要求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基于曲线外推一个值时,不会计算该外推值的置信区间。