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 tuyến tính (Linear Regression)

Đề bài

Viết chương trình triển khai thuật toán hồi quy tuyến tính. Người dùng nhập số lượng giá trị.

Giải pháp

Hồi quy tuyến tính tìm mối quan hệ giữa hai biến bằng phương trình tuyến tính: y = mx + c.

Công thức tính m (hệ số góc) và c (điểm cắt):

d = n*sumxsq - sumx*sumx;
m = (n*sumxy - sumx*sumy) / d;
c = (sumy*sumxsq - sumx*sumxy) / d;

Chương trình C

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

main() {
    int n, i;
    float x, y, m, c, d;
    float sumx = 0, sumxsq = 0, sumy = 0, sumxy = 0;

    printf("Nhập số lượng giá trị n: ");
    scanf("%d", &n);

    for (i = 0; i < n; i++) {
        printf("Nhập x và y: ");
        scanf("%f%f", &x, &y);
        sumx += x;
        sumxsq += x * x;
        sumy += y;
        sumxy += x * y;
    }

    d = n * sumxsq - sumx * sumx;
    m = (n * sumxy - sumx * sumy) / d;
    c = (sumy * sumxsq - sumx * sumxy) / d;

    printf("M=%f\tC=%f\n", m, c);
}

Kết quả

Nhập số lượng giá trị n: 5
Nhập x và y: 1 5
Nhập x và y: 2 6
Nhập x và y: 2 4
Nhập x và y: 3 7
Nhập x và y: 1 1
M=2.000000  C=1.000000