📄 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 + -