दिए गए डेटा बिंदु के असतत सेट की एक सीमा के भीतर नए डेटा बिंदुओं के निर्माण के लिए, इंटरपोलेशन तकनीक का उपयोग किया जाता है। लैग्रेंज इंटरपोलेशन तकनीक उनमें से एक है। जब दिए गए डेटा बिंदु समान रूप से वितरित नहीं होते हैं, तो हम समाधान खोजने के लिए इस इंटरपोलेशन विधि का उपयोग कर सकते हैं। लैग्रेंज प्रक्षेप के लिए, हमें इस समीकरण का पालन करना होगा।
इनपुट और आउटपुट
Input: List of x and f(x) values. find f(3.25) x: {0,1,2,3,4,5,6} f(x): {0,1,8,27,64,125,216} Output: Result after Lagrange interpolation f(3.25) = 34.3281
एल्गोरिदम
largrangeInterpolation(x: array, fx: array, x1)
इनपुट - पहले से ज्ञात डेटा प्राप्त करने के लिए x सरणी और fx सरणी, और बिंदु x1।
आउटपुट: f(x1) का मान।
Begin res := 0 and tempSum := 0 for i := 1 to n, do tempProd := 1 for j := 1 to n, do if i ≠ j, then tempProf := tempProd * (x1 – x[j])/(x[i] – x[j]) done tempPord := tempProd * fx[i] res := res + tempProd done return res End
उदाहरण
#include<iostream> #define N 6 using namespace std; double lagrange(double x[], double fx[], double x1) { double res = 0, tempSum = 0; for(int i = 1; i<=N; i++) { double tempProd = 1; //for each iteration initialize temp product for(int j = 1; j<=N; j++) { if(i != j) { //if i = j, then denominator will be 0 tempProd *= (x1 - x[j])/(x[i] - x[j]); //multiply each term using formula } } tempProd *= fx[i]; //multiply f(xi) res += tempProd; } return res; } main() { double x[N+1] = {0,1,2,3,4,5,6}; double y[N+1] = {0,1,8,27,64,125,216}; double x1 = 3.25; cout << "Result after lagrange interpolation f("<<x1<<") = " << lagrange(x, y, x1); }
आउटपुट
Result after lagrange interpolation f(3.25) = 34.3281