?? correlation(多項式相關系數的計算方法(多項式形式2)).c
字號:
//=======================================================================
//函數說明
//函數名稱:Correlation
//函數功能:計算最小二乘法擬合的多項式的相關系數
//使用方法:int M------擬合多項式的項數(已知條件)
// double *b---擬合曲線的系數,按升次排列(已知條件)
// double *x---結點x軸數據(已知條件)
// double *y---結點y軸數據(已知條件)
// double *Yg--結點估計值,與*y相對應,個數為m(過程變量)
// int m------結點個數(已知條件)
//注意事項:多項式階數最高為10,多項式的形式為 y = b0 + b1*(x-Xavr)...
//=======================================================================
#include <math.h>
double Correlation(int M, double *b, double *x, double *y, double *Yg, int m)
{
int i,j;
double power[10],temp,Xavr,Xdif,Yavr,Qr,Qt,R; //最大10階
Xavr = 0.0;
Yavr = 0.0; //求y的平均值和x的平均值
for(j=0;j<m;j++)
{
Xavr += x[j];
Yavr += y[j];
Yg[j] = 0.0; //初始化Yg
}
Xavr = Xavr/m;
Yavr = Yavr/m;
Qr = 0.0;
Qt = 0.0;
for(j=0;j<m;j++)
{
temp = 1.0;
Xdif = x[j]-Xavr;
for(i=0;i<M-1;i++)
{
temp *= Xdif;
power[i] = temp;
Yg[j]= Yg[j] + b[i+1]*power[i];
}
Yg[j] = Yg[j] + b[0];
Qr = Qr + (Yg[j] -Yavr)*(Yg[j] -Yavr); //求Qr
Qt = Qt + (y[j] - Yavr)*(y[j] - Yavr); //求Qt
}
R = (double)sqrt(Qr/Qt);
return(R);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -