newtonchazhi.cpp

来自「关于数值分析中的重要算法」· C++ 代码 · 共 46 行

CPP
46
字号
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
#define pointnum 5

double Newton(double NodeX[],double NodeY[],double x)
{
	double result;
	int i,j,k;
	for(i=1;i<pointnum;i++)
		for(j=pointnum-1;j>=i;j--)
			NodeY[j]=(NodeY[j]-NodeY[j-1])/(NodeX[j]-NodeX[j-i]);
		result=NodeY[pointnum-1];
		for(k=pointnum-2;k>=0;k--)
			result=result*(x-NodeX[k])+NodeY[k];
		return result;
}
 void main()
{
	int i;double result;
	double x[2]={0.596,0.895};
	double NodeX1[pointnum]={0.4,0.55,0.65,0.8,0.9};
	double NodeX2[pointnum]={0.4,0.55,0.65,0.8,0.9};
	double NodeY1[pointnum]={0.41075,0.57815,0.69675,0.88811,1.02652};
    double NodeY2[pointnum]={0.41075,0.57815,0.69675,0.88811,1.02652};
	cout<<"插值节点数值为:"<<endl;
	cout<<"x[i]  ";
    for(i=0;i<pointnum;i++)
       cout<<setw(10)<<NodeX1[i];
	   cout<<endl;
	   cout<<"y[i]  ";
    for(i=0;i<pointnum;i++)
       cout<<setw(10)<<NodeY1[i];
	   cout<<endl;
       cout<<"需计算的值为:"<<endl;
    for(i=0;i<=1;i++)
       cout<<"x["<<i<<"]="<<x[i]<<"    ";
       cout<<endl;
       result=Newton(NodeX1,NodeY1,x[0]);
       cout<<"点x[0]="<<x[0]<<"处的函数值为:y[0]="<<result<<endl;
       result=Newton(NodeX2,NodeY2,x[1]);
       cout<<"点x[1]="<<x[1]<<"处的函数值为:y[1]="<<result<<endl;
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?