用python语言写一个gm(2,1)的灰色预测模型
时间: 2024-03-23 09:37:08 浏览: 106
灰色预测,灰色预测模型,Python源码.zip
5星 · 资源好评率100%
以下是使用Python语言编写的GM(2,1)灰色预测模型代码示例:
```python
import numpy as np
def GM21(x):
n = len(x)
x1 = np.cumsum(x) # 一次累加
z1 = (x1[:n-1] + x1[1:])/2.0 # 紧邻均值
z1 = z1.reshape((n-1,1))
B = np.append(-z1, np.ones_like(z1), axis=1)
Y = x[1:].reshape((n-1,1))
[[a],[b]] = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Y) # 计算参数
result = np.zeros(n)
result[0] = x[0]
for i in range(1,n):
result[i] = (x[0]-b/a)*np.exp(-a*(i))*np.sin(b*(i)) # 模型公式
return result
# 测试
x = np.array([3035, 3264, 3779, 4111, 4618, 4729, 5353, 5822, 6018, 6233, 6915, 7431])
print(GM21(x))
```
解释一下代码:
首先,导入必要的库:`numpy`用于处理数组、矩阵,`np.cumsum()`计算数组的累加和。
接着,定义一个名为`GM21`的函数,该函数输入为一个数组`x`,输出为一个数组`result`,表示灰色预测模型预测的结果。
在函数内部,首先获取数组`x`的长度`n`。然后,对数组`x`进行一次累加,得到数组`x1`。接着,计算紧邻均值,得到数组`z1`。通过数组`z1`和一个全1的数组构造矩阵`B`,以及通过数组`x`构造矩阵`Y`。使用矩阵运算计算出参数`a`和`b`。最后,使用GM(2,1)灰色预测模型的公式计算出预测结果`result`。
最后,调用`GM21`函数,输入一个数组`x`,并打印输出预测结果。
注:该代码仅供参考,实际使用时需要根据具体情况修改。
阅读全文