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

Chương trình C tính hồi quy đa thức (Polynomial Regression)

Hồi quy (Regression) là kỹ thuật mô hình dự đoán mối quan hệ giữa biến phụ thuộc và biến độc lập.

Hồi quy đa thức: Mối quan hệ giữa biến độc lập x và biến phụ thuộc y được mô hình hóa bằng đa thức bậc n của x.

Chương trình C

#include <math.h>
#include <stdio.h>
#include <conio.h>

main() {
    int i, j, k, m, n;
    float x[20], y[20], u, a[10], c[20][20], power, r;

    printf("Nhập m, n: ");
    scanf("%d%d", &m, &n);

    for (i = 1; i <= n; i++) {
        printf("Nhập giá trị x và y: ");
        scanf("%f%f", &x[i], &y[i]);
    }

    // Xây dựng ma trận hệ phương trình chuẩn
    for (j = 1; j <= m + 1; j++)
        for (k = 1; k <= m + 1; k++) {
            c[j][k] = 0;
            for (i = 1; i <= n; i++) {
                power = pow(x[i], j + k - 2);
                c[j][k] += power;
            }
        }

    // Vế phải
    for (j = 1; j <= m + 1; j++) {
        c[j][m + 2] = 0;
        for (i = 1; i <= n; i++) {
            r = pow(x[i], j - 1);
            c[j][m + 2] += y[i] * r;
        }
    }

    // In ma trận mở rộng
    for (i = 1; i <= m + 1; i++) {
        for (j = 1; j <= m + 2; j++)
            printf("%.2f\t", c[i][j]);
        printf("\n");
    }

    // Khử Gauss-Jordan
    for (k = 1; k <= m + 1; k++)
        for (i = 1; i <= m + 1; i++) {
            if (i != k) {
                u = c[i][k] / c[k][k];
                for (j = k; j <= m + 2; j++)
                    c[i][j] -= u * c[k][j];
            }
        }

    // Kết quả hệ số
    for (i = 1; i <= m + 1; i++) {
        a[i] = c[i][m + 2] / c[i][i];
        printf("a[%d]=%f\n", i, a[i]);
    }
    getch();
}

Kết quả mẫu

enter m,n: 4 5
... (ma trận trung gian) ...
a[1]=1.750000
a[2]=-2.375000
a[3]=2.000000
a[4]=0.500000
a[5]=-0.375000