数值分析:Newtown插值多项式推导以及C++代码实现

数值分析:Newtown插值多项式推导+代码实现

一、差商的推导及其性质

1

2

二、构造n次Newtown插值多项式以及n次Newtown插值余项

3

三、列差商表和例题

4

四、C++代码实现以及验证例题

#include<stdio.h>
#include<iostream>
using namespace std;

class Newtown {
public:
	void addX(double n) {
		X = n;
	}
	//构造差商前先构造W_n(x):
	//x数组,X为想要预测的数字,n为W_(x)的次数
	double W_n(double x[], double X, int n) {
		double Z = 1;
		for (int i = 0; i < n; i++) {
			
			Z = Z * (X - x[i]);
		}
		return Z;
	}

	//构造k阶差商:
	double f_k(double x[], double y[], int k) {

		if (k == 1) {
			return (y[k] - y[0]) / (x[k] - x[0]);
		}
		double* z= new double[k];
		double* zy= new double[k];
		for (int i = 1; i <= k; i++) {
			z[i - 1] = x[i];
			zy[i - 1] = y[i];
		}
		return (f_k(x, y, k - 1) - f_k(z, zy, k - 1)) / (x[0] - x[k]);
	}

	//n次Newtown插值多项式
	double formula(double x[], double y[], int n) {
		if (n == 0) {
			return y[0];
		}
		return formula(x, y, n - 1) + f_k(x, y, n) * W_n(x, X, n);
	}
	double X;
};

int main() {
	double x[] = { -2,0,1,2 };
	double y[] = { 17,1,2,17 };
	int n = 3 ;

	Newtown N1;
	N1.addX(0.5);
	cout << "预测值为:" << N1.formula(x,y,n) << endl;
	return 0;
}

image-20221116105213957

,y,n) << endl;
return 0;
}


[外链图片转存中...(img-ke1MtUeJ-1668567158451)]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值