取x_0=0.85,x_1=0.87,x_2=0.89,用函数值e^(x_0 ),e^(x_1 ),e^(x_2 )构造二次插值多项式;用该插值多项式求e^0.88的近似值,并给出误差。的C语言代码
时间: 2023-10-25 19:07:55 浏览: 133
这是一个求解二次插值多项式的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 3 //节点个数
double f(double x){
return exp(x);
}
double lagrange(double x, double *px, double *py, int n){
double L=0.0;
for(int i=0;i<n;i++){
double w=1.0;
for(int j=0;j<n;j++){
if(j!=i){
w*=(x-px[j])/(px[i]-px[j]);
}
}
L+=w*py[i];
}
return L;
}
int main(){
double x[N], y[N];
double a=0.85, b=0.87, c=0.89;
x[0]=a; x[1]=b; x[2]=c;
y[0]=f(a); y[1]=f(b); y[2]=f(c);
double p0=lagrange(a, x, y, N);
double p1=lagrange(b, x, y, N);
double p2=lagrange(c, x, y, N);
double x0=0.88;
double y0=lagrange(x0, x, y, N);
double e=fabs(f(x0)-y0);
printf("p(x)=%.6lf+(x-%.6lf)*%.6lf+(x-%.6lf)*(x-%.6lf)*%.6lf\n", p0, b, (y1-y0)/(b-a), a, c, (y2-2*y1+y0)/((a-b)*(a-c)));
printf("e^0.88=%.6lf, e=%.6lf\n", y0, e);
return 0;
}
```
这段代码使用拉格朗日插值法来求解二次插值多项式,并计算在x=0.88处的近似值及误差。您可以根据需要修改节点个数N、节点x和函数值y,以及目标插值点x0。
阅读全文