📄 equation.cs
字号:
for (i = Count_R; i < (Count_R + 3); i++)
{
values[i, 0] = values[i - 1, 0] + 1;
for (j = 1; j < Count_C; j++)
{
values[i, j] = (values[i - 3, j] + values[i - 2, j] + values[i - 1, j]) / 3;
}
}
//开始计算数据
float[,] data = new float[Rate_num, dt_Count_C];
for (i = 0; i < Rate_num; i++)
{
data[i, 0] = rate[i];
for (j = 1; j < dt_Count_C - 2; j++)
{
values[j - 1, 1] = Convert.ToSingle(values[j - 1, 1] * (1 - rate[i]));
data[i, j] = Convert.ToSingle(0.095575 * values[j - 1, Count_C - 12] + 0.118098 * values[j - 1, Count_C - 11] + 0.068656 * values[j - 1, Count_C - 10] + 0.143922 * values[j - 1, Count_C - 9] + 0.108141 * values[j - 1, Count_C - 8] + 0.138517 * values[j - 1, Count_C - 7] + 0.108204 * values[j - 1, Count_C - 6] + 0.270564 * values[j - 1, Count_C - 5] + 0.063256 * values[j - 1, Count_C - 4] + 0.04791 * values[j - 1, Count_C - 3] + 0.04623 * values[j - 1, Count_C - 2] + 0.084313 * values[j - 1, Count_C - 1] - 29.3978);
}
}
//把数据存储到dt数据集里面
for (i = 0; i < Rate_num; i++)
{
DataRow newRow = dt.Tables[dt.Tables[0].ToString()].NewRow();
newRow["rate"] = Math.Round(rate[i], 2);
for (j = 1; j < dt_Count_C - 2; j++)
newRow["year" + j] = data[i, j];
newRow["blm"] = blm;
newRow["code"] = 3;
dt.Tables[dt.Tables[0].ToString()].Rows.Add(newRow);
}
}
public void get_DITOCPU(DataSet ds, DataSet dt, string blm, float start_rate, float over_rate)
{
int Count_R = ds.Tables[0].Rows.Count;//ds的行数
int Count_C = ds.Tables[0].Columns.Count;//ds的列数
int dt_Count_C = dt.Tables[0].Columns.Count;//读取dt的列数
//定义变量
int i, j;
int Rate_num = 1;
float rate_data = start_rate;
//定义数组
float[,] values = new float[Count_R + 3, Count_C];//这里加3是因为,需要预测未来三年的数据
float[] rate = new float[11];
//计算变化率的个数
rate[0] = 0;
for (i = 1; i < Convert.ToInt16(2 * (over_rate * 100 - start_rate * 100 + 1) + 1); i++)
{
Rate_num = Rate_num + 1;
if (i % 2 == 1)
rate[i] = -1 * rate_data;
if (i % 2 == 0)
{
rate[i] = rate_data;
rate_data = Convert.ToSingle(rate_data + 0.01);
}
}
//读取ds数据集里的数据到values数组中
for (i = 0; i < Count_R; i++)
for (j = 0; j < Count_C; j++)
values[i, j] = Convert.ToSingle(ds.Tables[0].Rows[i][j].ToString());
//用移动平均法计算未来三年的数据
for (i = Count_R; i < (Count_R + 3); i++)
{
values[i, 0] = values[i - 1, 0] + 1;
for (j = 1; j < Count_C; j++)
{
values[i, j] = (values[i - 3, j] + values[i - 2, j] + values[i - 1, j]) / 3;
}
}
//开始计算数据
float[,] data = new float[Rate_num, dt_Count_C];
for (i = 0; i < Rate_num; i++)
{
data[i, 0] = rate[i];
for (j = 1; j < dt_Count_C - 2; j++)
{
values[j - 1, 1] = Convert.ToSingle(values[j - 1, 1] * (1 - rate[i]));
data[i, j] = Convert.ToSingle(-0.31265 * values[j - 1, Count_C - 10] + 0.06284 * values[j - 1, Count_C - 9] - 0.06849 * values[j - 1, Count_C - 8] + 0.168833 * values[j - 1, Count_C - 7] + 0.320559 * values[j - 1, Count_C - 6] + 0.613397 * values[j - 1, Count_C - 5] - 0.35763 * values[j - 1, Count_C - 4] + 0.588066 * values[j - 1, Count_C - 3] + 0.314992 * values[j - 1, Count_C - 2] - 1.17716 * values[j - 1, Count_C - 1] + 84.81946);
}
}
//把数据存储到dt数据集里面
for (i = 0; i < Rate_num; i++)
{
DataRow newRow = dt.Tables[dt.Tables[0].ToString()].NewRow();
newRow["rate"] = Math.Round(rate[i], 2);
for (j = 1; j < dt_Count_C - 2; j++)
newRow["year" + j] = data[i, j];
newRow["blm"] = blm;
newRow["code"] = 3;
dt.Tables[dt.Tables[0].ToString()].Rows.Add(newRow);
}
}
public void get_DITOCPR(DataSet ds, DataSet dt, string blm, float start_rate, float over_rate)
{
int Count_R = ds.Tables[0].Rows.Count;//ds的行数
int Count_C = ds.Tables[0].Columns.Count;//ds的列数
int dt_Count_C = dt.Tables[0].Columns.Count;//读取dt的列数
//定义变量
int i, j;
int Rate_num = 1;
float rate_data = start_rate;
//定义数组
float[,] values = new float[Count_R + 3, Count_C];//这里加3是因为,需要预测未来三年的数据
float[] rate = new float[11];
//计算变化率的个数
rate[0] = 0;
for (i = 1; i < Convert.ToInt16(2 * (over_rate * 100 - start_rate * 100 + 1) + 1); i++)
{
Rate_num = Rate_num + 1;
if (i % 2 == 1)
rate[i] = -1 * rate_data;
if (i % 2 == 0)
{
rate[i] = rate_data;
rate_data = Convert.ToSingle(rate_data + 0.01);
}
}
//读取ds数据集里的数据到values数组中
for (i = 0; i < Count_R; i++)
for (j = 0; j < Count_C; j++)
values[i, j] = Convert.ToSingle(ds.Tables[0].Rows[i][j].ToString());
//用移动平均法计算未来三年的数据
for (i = Count_R; i < (Count_R + 3); i++)
{
values[i, 0] = values[i - 1, 0] + 1;
for (j = 1; j < Count_C; j++)
{
values[i, j] = (values[i - 3, j] + values[i - 2, j] + values[i - 1, j]) / 3;
}
}
//开始计算数据
float[,] data = new float[Rate_num, dt_Count_C];
for (i = 0; i < Rate_num; i++)
{
data[i, 0] = rate[i];
for (j = 1; j < dt_Count_C - 2; j++)
{
values[j - 1, 1] = Convert.ToSingle(values[j - 1, 1] * (1 - rate[i]));
data[i, j] = Convert.ToSingle(-0.26963 * values[j - 1, Count_C - 4] + 1.252666 * values[j - 1, Count_C - 3] - 1.6058 * values[j - 1, Count_C - 2] + 1.509477 * values[j - 1, Count_C - 1] + 10.73887);
}
}
//把数据存储到dt数据集里面
for (i = 0; i < Rate_num; i++)
{
DataRow newRow = dt.Tables[dt.Tables[0].ToString()].NewRow();
newRow["rate"] = Math.Round(rate[i], 2);
for (j = 1; j < dt_Count_C - 2; j++)
newRow["year" + j] = data[i, j];
newRow["blm"] = blm;
newRow["code"] = 3;
dt.Tables[dt.Tables[0].ToString()].Rows.Add(newRow);
}
}
public void get_DITOGDP2(DataSet ds, DataSet dt, string blm, float start_rate, float over_rate)
{
int Count_R = ds.Tables[0].Rows.Count;//ds的行数
int Count_C = ds.Tables[0].Columns.Count;//ds的列数
int dt_Count_C = dt.Tables[0].Columns.Count;//读取dt的列数
//定义变量
int i, j;
int Rate_num = 1;
float rate_data = start_rate;
//定义数组
float[,] values = new float[Count_R + 3, Count_C];//这里加3是因为,需要预测未来三年的数据
float[] rate = new float[11];
//计算变化率的个数
rate[0] = 0;
for (i = 1; i < Convert.ToInt16(2 * (over_rate * 100 - start_rate * 100 + 1) + 1); i++)
{
Rate_num = Rate_num + 1;
if (i % 2 == 1)
rate[i] = -1 * rate_data;
if (i % 2 == 0)
{
rate[i] = rate_data;
rate_data = Convert.ToSingle(rate_data + 0.01);
}
}
//读取ds数据集里的数据到values数组中
for (i = 0; i < Count_R; i++)
for (j = 0; j < Count_C; j++)
values[i, j] = Convert.ToSingle(ds.Tables[0].Rows[i][j].ToString());
//用移动平均法计算未来三年的数据
for (i = Count_R; i < (Count_R + 3); i++)
{
values[i, 0] = values[i - 1, 0] + 1;
for (j = 1; j < Count_C; j++)
{
values[i, j] = (values[i - 3, j] + values[i - 2, j] + values[i - 1, j]) / 3;
}
}
//开始计算数据
float[,] data = new float[Rate_num, dt_Count_C];
for (i = 0; i < Rate_num; i++)
{
data[i, 0] = rate[i];
for (j = 1; j < dt_Count_C - 2; j++)
{
values[j - 1, 1] = Convert.ToSingle(values[j - 1, 1] * (1 - rate[i]));
data[i, j] = Convert.ToSingle(0.066707 * values[j - 1, Count_C - 6] + 0.492419 * values[j - 1, Count_C - 5] + 0.005746 * values[j - 1, Count_C - 4] + 0.608634 * values[j - 1, Count_C - 3] - 0.04428 * values[j - 1, Count_C - 2] + 0.037216 * values[j - 1, Count_C - 1] - 17.2023);
}
}
//把数据存储到dt数据集里面
for (i = 0; i < Rate_num; i++)
{
DataRow newRow = dt.Tables[dt.Tables[0].ToString()].NewRow();
newRow["rate"] = Math.Round(rate[i], 2);
for (j = 1; j < dt_Count_C - 2; j++)
newRow["year" + j] = data[i, j];
newRow["blm"] = blm;
newRow["code"] = 3;
dt.Tables[dt.Tables[0].ToString()].Rows.Add(newRow);
}
}
public void get_DITOGDP3(DataSet ds, DataSet dt, string blm, float start_rate, float over_rate)
{
int Count_R = ds.Tables[0].Rows.Count;//ds的行数
int Count_C = ds.Tables[0].Columns.Count;//ds的列数
int dt_Count_C = dt.Tables[0].Columns.Count;//读取dt的列数
//定义变量
int i, j;
int Rate_num = 1;
float rate_data = start_rate;
//定义数组
float[,] values = new float[Count_R + 3, Count_C];//这里加3是因为,需要预测未来三年的数据
float[] rate = new float[11];
//计算变化率的个数
rate[0] = 0;
for (i = 1; i < Convert.ToInt16(2 * (over_rate * 100 - start_rate * 100 + 1) + 1); i++)
{
Rate_num = Rate_num + 1;
if (i % 2 == 1)
rate[i] = -1 * rate_data;
if (i % 2 == 0)
{
rate[i] = rate_data;
rate_data = Convert.ToSingle(rate_data + 0.01);
}
}
//读取ds数据集里的数据到values数组中
for (i = 0; i < Count_R; i++)
for (j = 0; j < Count_C; j++)
values[i, j] = Convert.ToSingle(ds.Tables[0].Rows[i][j].ToString());
//用移动平均法计算未来三年的数据
for (i = Count_R; i < (Count_R + 3); i++)
{
values[i, 0] = values[i - 1, 0] + 1;
for (j = 1; j < Count_C; j++)
{
values[i, j] = (values[i - 3, j] + values[i - 2, j] + values[i - 1, j]) / 3;
}
}
//开始计算数据
float[,] data = new float[Rate_num, dt_Count_C];
for (i = 0; i < Rate_num; i++)
{
data[i, 0] = rate[i];
for (j = 1; j < dt_Count_C - 2; j++)
{
values[j - 1, 1] = Convert.ToSingle(values[j - 1, 1] * (1 - rate[i]));
data[i, j] = Convert.ToSingle(0.010543 * values[j - 1, Count_C - 8] + 0.259172 * values[j - 1, Count_C - 7] + 0.154584 * values[j - 1, Count_C - 6] - 0.0028 * values[j - 1, Count_C - 5] + 0.182909 * values[j - 1, Count_C - 4] + 0.09659 * values[j - 1, Count_C - 3] + 0.135994 * values[j - 1, Count_C - 2] + 0.015852 * values[j - 1, Count_C - 1] + 16.63879);
}
}
//把数据存储到dt数据集里面
for (i = 0; i < Rate_num; i++)
{
DataRow newRow = dt.Tables[dt.Tables[0].ToString()].NewRow();
newRow["rate"] = Math.Round(rate[i], 2);
for (j = 1; j < dt_Count_C - 2; j++)
newRow["year" + j] = data[i, j];
newRow["blm"] = blm;
newRow["code"] = 3;
dt.Tables[dt.Tables[0].ToString()].Rows.Add(newRow);
}
}
public void get_DITOGDI(DataSet ds, DataSet dt, string blm, float start_rate, float over_rate)
{
int Count_R = ds.Tables[0].Rows.Count;//ds的行数
int Count_C = ds.Tables[0].Columns.Count;//ds的列数
int dt_Count_C = dt.Tables[0].Columns.Count;//读取dt的列数
//定义变量
int i, j;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -