灰色预测GM11,R语言源程序---(包含绘图程序,结果导出csv程序)

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]	#提
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值