拉格朗日插值法

来源:互联网 发布:淘宝hd打开怎么变横屏 编辑:程序博客网 时间:2024/05/18 10:22
#include "stdafx.h"
#include <iostream>
using namespace std;


double Lagrange(double x[], double y[], double unknown) 

{

double result = 0;
double t = 1; //暂存累乘结果
for (int i = 0; y[i]; i++)
{
for (int j = 0; x[j]; j++)
{
if (j == i)
{
continue;
}
t *= (unknown - x[j]) / (x[i] - x[j]);
}
result += t * y[i];
t = 1;
}
return result;
}
int main(int argc, const char * argv[])
{
int n;
double x[100] = { 0 }, y[100] = { 0 };
double unknown = 0;
double result = 0;
cout << "请输入组数n:" << endl;
cin >> n;
cout << "请输入未知数x:" << endl;
cin >> unknown;
cout << "请输入(xi,yi):" << endl;
for (int i = 0; i < n; i++)
{
cout << "x" << i << "=";
cin >> x[i];
cout << "y" << i << "=";
cin >> y[i];
}
result = Lagrange(x, y, unknown);
cout << "结果为" << result << endl;
getchar();
getchar();
return 0;
}
0 0
原创粉丝点击