Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình C++ nội suy ngược bằng công thức Lagrange

Nội suy ngược (Inverse Interpolation): tìm x ứng với y cho trước từ bảng giá trị (xᵢ, yᵢ) của hàm chưa biết. Sử dụng công thức Lagrange hoán đổi vai trò x và y.

Công thức: x = Σ [xᵢ × Π (y - yⱼ)/(yᵢ - yⱼ)] (j≠i).

Ví dụ

#include <bits/stdc++.h>
using namespace std;

struct Data {
    double x, y;
};

double calc_invinter(Data d[], int n, double y) {
    double x = 0;
    for (int i = 0; i < n; i++) {
        double xi = d[i].x;
        for (int j = 0; j < n; j++) {
            if (j != i)
                xi = xi * (y - d[j].y) / (d[i].y - d[j].y);
        }
        x += xi;
    }
    return x;
}

int main() {
    Data d[] = {{1.27, 2.3}, {2.25, 2.95}, {2.5, 3.5}, {3.6, 5.1}};
    int n = 4;
    double y = 4.5;
    cout << "Value of x (y = 4.5) : " << calc_invinter(d, n, y) << endl;
    return 0;
}

Kết quả

Value of x (y = 4.5) : 2.51602