#include <bits/stdc++.h>
using namespace std;
#define MAXSIZE 100
int main(){
double x[MAXSIZE], y[MAXSIZE], a[MAXSIZE];
int n;
double m;
cout << "请输入插值节点个数:";
cin >> n;
for (int i = 0; i < n; i++) {
printf("请输入插值节点x[%d], y[%d]:", i, i);
cin >> x[i] >> y[i];
}
for (int j = 0; j < n; j++) {
a[j] = 0;
int k = j;
for (int i = 0; i <= k; i++) {
double temp = 1;
for (int l = 0; l <= k; l++) {
if (l != i)
temp *= x[i] - x[l];
}
a[j] += y[i]/temp;
}
}
cout << "请输入插值点:";
cin >> m;
double result = 0.0;
for (int i = 0; i < n; i++) {
if (i == 0)
result += y[0];
else{
double temp = 1;
for (int j = 0; j < i; j++) {
temp *= m-x[j];
}
result += a[i]*temp;
}
}
printf("插值点(x, y)=(%.5lf, %.5lf)\n",m, result);
}
c/c++|牛顿插值方法
最新推荐文章于 2022-12-25 21:36:09 发布