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