数值分析(二):牛顿插值法代码

牛顿插值法

牛顿插值法和拉格朗日插值法相差不大,实例和拉格朗日插值法实例一样在这里插入图片描述
我们采取一样的结构体来存放插值节点,
牛顿插值法最核心的部分就是差商,如何合理的求差商和存放差商是最关键的问题,这部分让我们直接来看代码:

for (int i = 0; i <= n; i++) {
		form[i] = point[i].y;
	}
for (int i = 0; i <= n; i++) {
	for (int j = n; j > i; j--) {
		//差商
		form[j] = (form[j] - form[j - 1]) / (point[j].x - point[j - i - 1].x);
	}
}

这里我使用一个数组form,form用插值节点的y坐标来初始化,在求差商的时候用到。
下面是一个for循环的嵌套,最外层for表示所求差商,i=0表示求的是一阶差商,以此类推。内层for用来计算差商,由差商表可知,差商表为下三角形,我们用j来表示要求差商的具体位置
值得注意的是公式里面(point[j].x - point[j - i-1].x);这里之所以使用j-i-1,是考虑到求高阶差商时分母并不是相邻插值节点横坐标之差,不懂的可以在草稿纸上面推算一下就明白了

运行结果如下,和拉格朗日结果一致,表示该算法可用。
在这里插入图片描述

发布了3 篇原创文章 · 获赞 1 · 访问量 104

猜你喜欢

转载自blog.csdn.net/q1575825411/article/details/104883088