こんばんは!お久しぶりですSAYUにこ
 
今日は最小二乗法のプログラムをご紹介しようと思います。
 
最小二乗法というのは複数のデータが与えられた場合に適切な近似式を求める方法です。詳しい説明は省いて、プログラムだけをお見せします目。
 
___________________________________________________________________________________________________________________________
 
#include<stdio.h>
#define M 7      /*データの個数をマクロ定数定義*/
double a[2];     /*切片と傾きを入れる変数をグローバル変数定義*/
void least_square(double x[M],double y[M]);

int main(void){
    double x[M] = {2.0,3.0,4.0,5.0,6.0,7.0,8.0};
    double y[M] = {2.1,2.5,3.2,4.0,4.9,5.9,6.7};
    
    least_square(x,y);   /*最小二乗法を行う関数*/
    printf("%lf+%lfx\n",a[0],a[1]); /*近似曲線を表示*/
    return 0;
}

void least_square(double x[M],double y[M]){
    double sum_x2 = 0;
    double sum_xy = 0;
    double sum_x = 0;
    double sum_y = 0;
    int i;
    
    for(i=0;i<M;i++){
        sum_x2 += x[i] * x[i];
        sum_xy += x[i] * y[i];
        sum_x += x[i];
        sum_y += y[i];
    }
    
    a[0] = (sum_x2 * sum_y - sum_x * sum_xy)/(M * sum_x2 - sum_x * sum_x);
    a[1] = (M * sum_xy - sum_x * sum_y)/(M * sum_x2 - sum_x * sum_x);
}
 
__________________________________________________________________________________________________________________
 
ぜひ、データの整理に役立ててくださいアーメン 本日はこの辺で失礼します。
 
またねっきらハート