已知函数表如下: x 0.4 0.55 0.8 0.9 1 y 0.41075 0.57515 0.88811 1.02652 1.17520 请写出用拉格朗日插值多项式函数值的c语言和c++代码
时间: 2024-02-14 14:08:51 浏览: 129
以下是使用C语言和C++实现的拉格朗日插值多项式函数值的代码:
C语言代码:
```c
#include<stdio.h>
double lagrange(double x[], double y[], int n, double xi)
{
double result = 0.0; // 初始化函数值为0
for(int i = 0; i < n; i++)
{
double temp = 1.0;
for(int j = 0; j < n; j++)
{
if(i != j)
{
temp *= (xi - x[j]) / (x[i] - x[j]); // 求每个基函数的值
}
}
result += temp * y[i]; // 累加每个基函数的值与对应的函数值的乘积
}
return result;
}
int main()
{
double x[] = {0.4, 0.55, 0.8, 0.9, 1};
double y[] = {0.41075, 0.57515, 0.88811, 1.02652, 1.17520};
int n = sizeof(x) / sizeof(double); // 获取数据点个数
double xi = 0.7; // 指定插值点
double result = lagrange(x, y, n, xi); // 计算插值函数值
printf("在x=%.2f处的插值函数值为:%.5f\n", xi, result);
return 0;
}
```
C++代码:
```c++
#include<iostream>
using namespace std;
double lagrange(double x[], double y[], int n, double xi)
{
double result = 0.0; // 初始化函数值为0
for(int i = 0; i < n; i++)
{
double temp = 1.0;
for(int j = 0; j < n; j++)
{
if(i != j)
{
temp *= (xi - x[j]) / (x[i] - x[j]); // 求每个基函数的值
}
}
result += temp * y[i]; // 累加每个基函数的值与对应的函数值的乘积
}
return result;
}
int main()
{
double x[] = {0.4, 0.55, 0.8, 0.9, 1};
double y[] = {0.41075, 0.57515, 0.88811, 1.02652, 1.17520};
int n = sizeof(x) / sizeof(double); // 获取数据点个数
double xi = 0.7; // 指定插值点
double result = lagrange(x, y, n, xi); // 计算插值函数值
cout << "在x=" << xi << "处的插值函数值为:" << result << endl;
return 0;
}
```
阅读全文