gm1<-function(x0,t) #gm(xO,t),其中xO是向量,为原始数据,t为表示预测到第几个数据
{
xl<-cumsum(x0) #读原始数列xO,并用cumsum(xO)累加生成数列文1;步骤1完成
b<-numeric(length (x0)-1)
#lengthO计算xO的长度,numericO生成指定长度的0向量,这里生成比xO长度少1的0向量,记作b,实质是向量b的初始化
n<-length(x0)-1 #向量xO的长度减1,记作n
for(i in 1:n){ #循环语句i从1到n循环,步进为1
b[i]<--(xl[i] + xl[i+1])/2
}#b[i]:向量b的第i个元素
d<-numeric(length(b)) # 向量 d 初始化
d[]<-1#向量d的元素全部赋值1,即单位向量
B<-cbind(b,d) #cbind(,)以列方式将向量b和d合并成矩阵B;步骤2中矩阵B生成
BT<-t(B) #t(),将矩阵B的转置,记作BT
M<-solve(BT%*%B)
#solve(A,b),解方程Ax=b,返回x的值,如果b缺失,则返回A的逆矩阵,这里M是BT * B的逆矩阵* %是乘法运箅符记作BT
yn<-numeric(length(x0)-1) # 向量 yn 初始化
yn<-x0[2:length(x0)] #将原始向量xO除第一个外的其余元素赋与yn步骤2的yn生成
alpha<-M%*%BT%*%yn #最小二乘法计算微分方程参数,a和u赋予向量alpha
alpha2<-matrix(alpha, ncol =1)
a<-alpha2[1] #提取参数a似乎直接从alpha提也行
u<-alpha2[2] #提
灰色预测GM11,R语言源程序---(包含绘图程序,结果导出csv程序)
最新推荐文章于 2022-07-09 20:28:02 发布