应用于当给出n+1个点,且这n+1个点在一个n次(或者小于n次)的多项式时,求给出在这个多项式上的一个点的x坐标,求出其对应的y坐标。
用法1: 当给出n+1个点后,直接将需要求的点的x坐标带入到这个拉格朗日法公式中,f(X)=y1*(X-x2)(X-x3)…(X-xn)/((x1-x2)(x1-x3)…(x1-xn))+y2*(X-x1)(X-x3)…(X-xn)/((x2-x1)(x2-x3)…(x2-xn))+…
时间复杂度为n^2。
用法2: 当给出连续的n+1个点时,比如(1,y1)(2,y2)…(n,yn)(n+1,y n+1),这时候看累乘部分,比如i的累乘的分子部分则为(X-1)(X-2)…(X-(i-1))(X-(i+1))…(X-n),而分母部分则为(i-1)(i-2)…1*(-1)…(i-n)。维护三个数组,pre[i]代表j为从1到i的(k-j)的前缀乘,suf[i]代表j为从i到n的(k-j)的后缀乘,然后f[i]代表i的阶乘,可以发现这时候拉格朗日求值法的公式为yi*pre[i-1]*suf[i+1]/(f[i-1] * (-1)^(n-i) *f[n-i].--------(i属于[0,n])的累加
用法3: 当需要计算多个在这个多项式上的点时。
提前用o(n)的复杂度算出g,用o(n^2)的复杂度算出每个ti,然后对于给的每一个所求点,o(n)的复杂度进行累加即可,总的复杂度为o(n ^ 2+n*m),m为所求点数量。