Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  lagranzh
Language: C/C++
Code:
#include <iostream>
#include <vector>
using namespace std;
 
double LP(double x, vector<double> xv, vector<double> yv) { //Lagrange polynomial
     int size = xv.size(); //Количество точек (для удобства)
     double sum = 0; //Значение функции
     for(int i = 0; i < size; i++){
          double mul = 1; //Произведение
          for(int j = 0; j < size; j++){
               if(i!=j) mul *= (x - xv[j])/(xv[i]-xv[j]);
          }
          sum += yv[i]*mul;
     }
     return sum;
}
 
int main() {
     int counter = 0;
     double a = 0.3; //Левая грань
     double b = 2.5; //Правая грань
     int fragments = 29; //Разбиение
     vector<double> xv {};
     vector<double> yv {};
     double inp;
     while(cin >> inp) counter++%2 ? yv.push_back(inp) : xv.push_back(inp); //Заполнение
     for(int i = 0; i < fragments; i++){
          double x = a + (b-a)/(fragments-1)*i;
          printf("%6.3lft%6.3lfn", x, LP(x, xv, yv));
     }
     return 0;
}
          
          
Comments: