X

Y

0.40

0.41075

0.55

0.57815

0.65

0.69675

0.80

0.88811

0.90

1.02652

1.05

1.25382

#include

using namespace
std;

double
average_deviation(double* function_value,double*
independent_variable,int
end);     
//声明均差函数

int main()

{

double
x[5]={0.40,0.55,0.65,0.80,0.90};     
//用来存储已知x的值

double
y[5]={0.41075,0.57815,0.69675,0.88811,1.02652};     
//用来存储已知y的值

double
result=0;     
//用来保存最后的插值结果

double
input_x;     
//插值的x值

double
polynomial;     
//保存多项式的值

cout<<"通过插值得到的函数为:"<<endl;

for (int i=0;i<5;i++)

{

cout<<average_deviation(y,x,i);

for (int j=0;j

cout<<"*"<<"("<<"x-"<<x[j]<<")";

if (i<4)

cout<<"+";

}

cout<<endl;

cout<<"请输入插值的x值:";

cin>>input_x;

for (int i=0;i<5;i++)

{

polynomial=1;

for (int j=0;j

{

polynomial*=(input_x-x[j]);

}

result+=(average_deviation(y,x,i)*polynomial);

}

cout<<"插值得到的函数值为:"<<result<</span><</span>endl;

return 0;

}

double
average_deviation(double* function_value,double*
independent_variable,int end)

{

double*
function_value_f;     
//function_value_f用来保存0到k-1的k阶均差

double*
function_value_b;     
//function_value_f用来保存1到k的k阶均差

double*
independent_variable_f;     
//用来保存前k-1个值

double*
independent_variable_b;     
//用来保存后k-1个值

double value_f;

double value_b;

if (0==end)

{

return function_value[end];

}

else

{

function_value_f=new double[end];

independent_variable_f=new double[end];

function_value_b=new double[end];

independent_variable_b=new double[end];

for (int i=1;i<=end;i++)

{

function_value_f[i-1]=function_value[i];

independent_variable_f[i-1]=independent_variable[i];

}

for (int i=0;i<=end-1;i++)

{

function_value_b[i]=function_value[i];

independent_variable_b[i]=independent_variable[i];

}

value_f = average_deviation(function_value_f,
independent_variable_f, end - 1);

value_b = average_deviation(function_value_b,
independent_variable_b, end - 1);

delete[] function_value_f;

delete[] function_value_b;

delete[] independent_variable_b;

delete[] independent_variable_f;

return
(value_f-value_b)/(independent_variable[end]-independent_variable[0]);

}

}

牛顿插值法(c++)-LMLPHP

05-21 19:53