matlab灰色预测mgm,自适应多变量灰色MGM(1,m)预测模型代码问题

编写的一个多变量灰色MGM(1,m)模型代码如下,求教如何改为自适应MGM(1,m)模型。自适应 M GM ( 1, n) 模型的建模过程可描述为: 在原始时间序列X(0)=( x(0)(1) , x(0)(2) ,…, x(0)( n))中,将最老的信息去掉,置入最新的信息x(0)( n+ 1) ,从而得到新的时间序列X(0)=( x(0)(2) , x(0)(3) ,…, x(0)( n+ 1))。以此类推,逐步建立灰色自适应M GM ( 1, n)模型。

92824391edb57869aba47e60bc745d72.png

QQ截图20141126185534.jpg (98.44 KB, 下载次数: 3)

2017-11-26 18:55 上传

>> clear

>> clc

k=3;   %输入待预测的时刻

X0=[32.43 36.97 54.98; 32.26 36.77 54.80; 32.18 36.71 54.70; 32.06 36.57 54.59; 32.06 36.52 54.51; 31.99 36.43 54.44; 31.93 36.35 54.37; 31.82 36.24 54.28; 31.86 36.28 54.28; 31.89 36.27 54.25];     %初始数据序列

[n,m]=size(X0);

for j=1:m c=0;

for  i=1:n

c=X0(i,j)+c;

X1(i,j)=c;

end

end

for j=1:m

for i=1:n-1

L(i,j)=(X1(i,j)+X1(i+1,j))/2;

end

end

L=[L,ones(n-1,1)];

for j=1:m

Y(1:n-1,j)=X0(2:n,j);

a(:,j)=inv(L'*L)*L'*Y(1:n-1,j);

end

a=a';

A=a(1:end,1:end-1);

B=a(1:end,end);

S=X1(1,1:end)

if k==1;

Z=S'

elseif k>1

% 计算预测值

Z=(expm(A*(k-1))-expm(A*(k-2)))*(S'+A\B)

else disp('输入错误!')

end

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Python实现多变量灰色预测模型的代码示例: ```python import numpy as np # 定义多变量灰色预测模型 def MGM(x, y): # 计算数据长度和变量个数 n, m = x.shape # 灰色预测模型的建立 x1 = np.zeros((n, m)) y1 = np.zeros((n, 1)) for i in range(m): x1[:, i] = x[:, i] / x[0, i] y1[:, 0] = y[:, 0] / x[0, 0] # 计算紧急度因子 delta = 0.5 for i in range(m): for j in range(n): if j == 0: continue x1[j, i] = delta * x1[j - 1, i] + (1 - delta) * x1[j, i] # 计算GM(1,1)模型参数 u = np.zeros((n - 1, m)) for i in range(m): for j in range(n - 1): u[j, i] = 0.5 * (x1[j, i] + x1[j + 1, i]) b = np.ones((n - 1, 2)) for i in range(n - 1): b[i, 0] = -u[i, 0] Yn = np.zeros((n - 1, 1)) for i in range(n - 1): Yn[i, 0] = y1[i + 1, 0] a = np.dot(np.linalg.inv(np.dot(b.T, b)), np.dot(b.T, Yn)) # 预测结果 y_predict = np.zeros((n, 1)) y_predict[0, 0] = y[0, 0] for i in range(1, n): y_predict[i, 0] = (y[0, 0] - a[0, 0] / a[1, 0]) * np.exp(-a[1, 0] * i) + a[0, 0] / a[1, 0] # 返回预测结果 return y_predict # 测试代码 x = np.array([[100, 200], [120, 220], [130, 240], [150, 260], [170, 280], [190, 300], [200, 320], [210, 340], [220, 360]]) y = np.array([[250], [300], [350], [400], [450], [500], [550], [600], [650]]) y_predict = MGM(x, y) print(y_predict) ``` 在上面的代码中,我们首先定义了一个多变量灰色预测模型的函数`MGM`,它的输入是一个包含多个因素的矩阵`x`和一个输出因素的矩阵`y`。在函数中,我们首先对输入数据进行灰色处理,然后计算紧急度因子,并建立GM(1,1)模型。最后,我们根据GM(1,1)模型预测输出结果。在测试代码中,我们使用了一个简单的数据集进行测试。 需要注意的是,上面的代码示例仅供参考,实际应用中需要根据具体情况进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值