拉格朗日插值.cpp

来自「计算拉格朗日插值。控制台输入用于插值的数据x」· C++ 代码 · 共 63 行

CPP
63
字号
/*拉格朗日插值*/

#include <iostream>
#include <iomanip>
using namespace std; 

int main()
{
	int i, j, k, n; 
	char c; 
	cout<<"选项: x坐标(x) or y坐标(y)\noption="; 
	cin>>c; 
	cout<<"次数:n="; 
	cin>>n; 
	n++; 
	double *x = new double[n+1]; 
	double *y = new double[n+1]; 
	x[0] = 0; 
	y[0] = 0;
	double tmp;  
	cout<<"请输入插值节点的坐标(x, y):"<<'\n';  
	for(i = 1; i <= n; i++)
	{
		cout<<"x"<<i<<"="; 
		cin>>x[i]; 
		cout<<"y"<<i<<"="; 
		cin>>y[i]; 
	}
	if(c == 'y')
	{
		cout<<"请输入插值点的坐标:y="; 
		cin>>y[0];
		for(i = 0; i <= n; i++)
		{
			tmp = x[i]; 
			x[i] = y[i]; 
			y[i] = tmp; 
		}
	}
	else
	{
		cout<<"请输入插值点的坐标:x="; 
		cin>>x[0];
	}
	double l; 
	for(j = 1; j <= n; j++)
	{
		l = 1; 
		for(k = 1; k <= n; k++)
		{
			if(k != j)
				l *= (x[0] - x[k]) / (x[j] - x[k]); 
		}
		l *= y[j]; 
		y[0] += l; 
	}
	cout<<"L("<<x[0]<<") = "<<setiosflags(ios::scientific)<<y[0]<<'\n'; 
	return 0; 
}



⌨️ 快捷键说明

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