lagrange.cpp

来自「Lagrange插值」· C++ 代码 · 共 77 行

CPP
77
字号
//Lagrange插值法
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>


double Lagrange (double *p, double x, int n)
{
	int i, j;
	double temp1, temp2 = 0;

	for (i = 0; i < n; i++)
	{
		temp1 = 1;
		for(j = 0; j < n; j++)
		{
			if(j != i)
			{
				temp1 *= (x-p[2*j]) / (p[2*i]-p[2*j]);
			}
		}

		temp2 += temp1 * p[2*i+1]; 
	}

	return temp2;
}


void main()
{
	int n;
	double x;
	double *p;
	char c;

	cout<<"请输入插值结点数:\n";
	cin>>n;

	p = new double[2*n];

	cout<<"请输入数据:\n";

	for(int i = 0; i<2*n; i++)
	{
		cin>>p[i];
	}

state1:
	cout<<"请输入插值点x0:\n";
	cin>>x;
    cout<<"结果为:\n"<<Lagrange(p,x,n)<<endl;

state2:
	cout<<"是否退出:y/n:";
	cin>>c;
	if(c=='n')
	{
		goto state1;
	}
	else if(c=='y')
	{
		delete p;
	}
	else
	{
		cout<<"请选折:y/n:"<<endl;
		goto state2;
	}

}
	



⌨️ 快捷键说明

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