---
source_url: https://docs.dolphindb.cn/zh/funcs/k/kroghinterpolate.html
fetched_at: 2026-05-19T09:29:18Z
category: funcs
title: kroghInterpolate
sha1: c1a1465023483e23652f2ba0f3a76f5bda19d1c7
---

# kroghInterpolate

## 语法

`kroghInterpolate(X, Y, newX, [der=0])`

## 详情

对一组点集进行多项式插值，该多项式通过点集中所有的数据点对 (x, y)。返回在 X 点处指定导数阶数的多项式估值。

可以额外指定在每个点 x 处的多个导数值：用户通过重复 xi 值并将导数值指定为连续的 yi 值来实现。

- 当 x 是唯一值时，y 为多项式 f(x) 的值。
- 当 x 出现相同值时，则第一个 y 是 f(x) 的值，第二个为对应的 x 的一阶导数值，第三个为对应的 x 的二阶导数值，依此类推。比如对于输入X =
  [0,0,1,1]，Yi= [1,0,2,3]，有 Y[0]=f(0)，Y[1]=f'(0)，Y[2]=f(1)，Y[3]=f'(1)。

## 参数

**X** 数值向量，表示用于插值的点的 x 坐标。必须是递增序列，不能包含 NULL 值。

**Y** 数值向量，与 *Xi* 等长，表示用于插值的点的 y 坐标。不能包含 NULL 值。

**newX** 数值向量，表示需要求值的点的 x 坐标。不能包含 NULL 值。

**der** 可选参数，非负整数，表示返回值的导数阶数。默认值为 0，表示计算多项式函数本身的值。

## 返回值

DOUBLE 类型向量。

## 例子

以正弦函数为例进行多项式插值，分别计算 xx 点处的多项式估值和其一阶导数值。

```dolphindb
def linspace(start, end, num, endpoint=true){
	if(endpoint) return end$DOUBLE\(num-1), start + end$DOUBLE\(num-1)*0..(num-1)
	else return start + end$DOUBLE\(num-1)*0..(num-1)	
}

x = 0 1 2 3 4 5
y = sin(x)
xx = linspace(0.0, 5.0, 10)[1]
yy=kroghInterpolate(x,y,xx)
yy;

yy1=kroghInterpolate(x,y,xx,1)
yy1;
```

yy 返回值：

[0,0.515119011157387,0.898231239576709,0.998548648650381,0.793484053410063,0.354287125066207,-0.188319604452395,-0.678504737959061,-0.969692008469677,-0.958924274663139]

yy1 返回值：

[0.885486080979582,0.875967413938641,0.459031117252456,-0.103633680213926,-0.612193041424271,-0.92866822117116,-0.976935666075988,-0.742727014588963,-0.273629096989106,0.320916064615744]
