?? equation.cs
字號(hào):
?using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// equation 的摘要說(shuō)明
/// </summary>
public class equation
{
public equation()
{
//
// TODO: 在此處添加構(gòu)造函數(shù)邏輯
//
}
public void get_data(DataSet ds, DataSet dt, string blm, float start_rate, float over_rate)
{
switch (blm)
{
case "C_GDP":
get_GDITOGDP(ds, dt, blm, start_rate, over_rate); break;
case "C_CONS":
get_GDITOCONS(ds, dt, blm, start_rate,over_rate); break;
case "C_GFCF":
get_GDITOGFCF(ds, dt, blm, start_rate,over_rate); break;
case "C_GDP2I":
get_GDITOGDP2I(ds, dt, blm, start_rate,over_rate); break;
case "C_GDP2C":
get_GDITOGDP2C(ds, dt, blm, start_rate,over_rate); break;
case "C_GDP3":
get_GDITOGDP3(ds, dt, blm, start_rate,over_rate); break;
case "C_PCDI":
get_GDITOPCDI(ds, dt, blm, start_rate,over_rate); break;
case "C_TLM":
get_GDITOTLM(ds, dt, blm, start_rate,over_rate); break;
default:
get_GDITOGDP(ds, dt, blm, start_rate,over_rate); break;
}
}//固定資產(chǎn)的選擇函數(shù)
public void get_GDITOGDP(DataSet ds, DataSet dt, string blm, float start_rate, float over_rate)
{
int Count_R = ds.Tables[0].Rows.Count;//ds的行數(shù)
int Count_C = ds.Tables[0].Columns.Count;//ds的列數(shù)
int dt_Count_C = dt.Tables[0].Columns.Count;//讀取dt的列數(shù)
//定義變量
int i, j;
int Rate_num = 1;
float rate_data = start_rate;
//定義數(shù)組
float[,] values = new float[Count_R + 3, Count_C];//這里加3是因?yàn)椋枰A(yù)測(cè)未來(lái)三年的數(shù)據(jù)
float[] rate = new float[11];
//計(jì)算變化率的個(gè)數(shù)
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數(shù)據(jù)集里的數(shù)據(jù)到values數(shù)組中
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());
//用移動(dòng)平均法計(jì)算未來(lái)三年的數(shù)據(jù)
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;
}
}
//開(kāi)始計(jì)算數(shù)據(jù)
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.04623 * values[j - 1, Count_C - 12] + 0.118098 * values[j - 1, Count_C - 11] + 0.095575 * values[j - 1, Count_C - 10] + 0.068656 * values[j - 1, Count_C - 9] + 0.143922 * values[j - 1, Count_C - 8] + 0.108141 * values[j - 1, Count_C - 7] + 0.138517 * values[j - 1, Count_C - 6] + 0.108204 * values[j - 1, Count_C - 5] + 0.270564 * values[j - 1, Count_C - 4] + 0.063256 * values[j - 1, Count_C - 3] + 0.04791 * values[j - 1, Count_C - 2] + 0.084313 * values[j - 1, Count_C - 1] - 29.3978);
}
}
//把數(shù)據(jù)存儲(chǔ)到dt數(shù)據(jù)集里面
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"] = 1;
dt.Tables[dt.Tables[0].ToString()].Rows.Add(newRow);
}
}//固定資產(chǎn)對(duì)全市生產(chǎn)總值的影響
public void get_GDITOCONS(DataSet ds, DataSet dt, string blm, float start_rate, float over_rate)
{
int Count_R = ds.Tables[0].Rows.Count;//ds的行數(shù)
int Count_C = ds.Tables[0].Columns.Count;//ds的列數(shù)
int dt_Count_C = dt.Tables[0].Columns.Count;//讀取dt的列數(shù)
//定義變量
int i, j;
int Rate_num = 1;
float rate_data = start_rate;
//定義數(shù)組
float[,] values = new float[Count_R + 3, Count_C];//這里加3是因?yàn)椋枰A(yù)測(cè)未來(lái)三年的數(shù)據(jù)
float[] rate = new float[11];
//計(jì)算變化率的個(gè)數(shù)
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數(shù)據(jù)集里的數(shù)據(jù)到values數(shù)組中
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());
//用移動(dòng)平均法計(jì)算未來(lái)三年的數(shù)據(jù)
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;
}
}
//開(kāi)始計(jì)算數(shù)據(jù)
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.02802 * values[j - 1, Count_C - 10] + 0.408724 * values[j - 1, Count_C - 9] - 0.10582 * values[j - 1, Count_C - 8] + 0.164543 * values[j - 1, Count_C - 7] + 0.250406 * values[j - 1, Count_C - 6] + 0.164543 * values[j - 1, Count_C - 5] - 0.13524 * values[j - 1, Count_C - 4] + 0.206824 * values[j - 1, Count_C - 3] + 0.076581 * values[j - 1, Count_C - 2] + 0.036754 * values[j - 1, Count_C - 1] - 4.44492);
}
}
//把數(shù)據(jù)存儲(chǔ)到dt數(shù)據(jù)集里面
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"] = 1;
dt.Tables[dt.Tables[0].ToString()].Rows.Add(newRow);
}
}
public void get_GDITOGFCF(DataSet ds, DataSet dt, string blm, float start_rate, float over_rate)
{
int Count_R = ds.Tables[0].Rows.Count;//ds的行數(shù)
int Count_C = ds.Tables[0].Columns.Count;//ds的列數(shù)
int dt_Count_C = dt.Tables[0].Columns.Count;//讀取dt的列數(shù)
//定義變量
int i, j;
int Rate_num = 1;
float rate_data = start_rate;
//定義數(shù)組
float[,] values = new float[Count_R + 3, Count_C];//這里加3是因?yàn)椋枰A(yù)測(cè)未來(lái)三年的數(shù)據(jù)
float[] rate = new float[11];
//計(jì)算變化率的個(gè)數(shù)
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數(shù)據(jù)集里的數(shù)據(jù)到values數(shù)組中
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());
//用移動(dòng)平均法計(jì)算未來(lái)三年的數(shù)據(jù)
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;
}
}
//開(kāi)始計(jì)算數(shù)據(jù)
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.162577 * values[j - 1, Count_C - 6] + 0.003684 * values[j - 1, Count_C - 5] + 0.14316 * values[j - 1, Count_C - 4] + 0.313774 * values[j - 1, Count_C - 3] + 0.226303 * values[j - 1, Count_C - 2] + 0.235526 * values[j - 1, Count_C - 1] - 7.95947);
}
}
//把數(shù)據(jù)存儲(chǔ)到dt數(shù)據(jù)集里面
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"] = 1;
dt.Tables[dt.Tables[0].ToString()].Rows.Add(newRow);
}
}
public void get_GDITOGDP2I(DataSet ds, DataSet dt, string blm, float start_rate, float over_rate)
{
int Count_R = ds.Tables[0].Rows.Count;//ds的行數(shù)
int Count_C = ds.Tables[0].Columns.Count;//ds的列數(shù)
int dt_Count_C = dt.Tables[0].Columns.Count;//讀取dt的列數(shù)
//定義變量
int i, j;
int Rate_num = 1;
float rate_data = start_rate;
//定義數(shù)組
float[,] values = new float[Count_R + 3, Count_C];//這里加3是因?yàn)椋枰A(yù)測(cè)未來(lái)三年的數(shù)據(jù)
float[] rate = new float[11];
//計(jì)算變化率的個(gè)數(shù)
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數(shù)據(jù)集里的數(shù)據(jù)到values數(shù)組中
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());
//用移動(dòng)平均法計(jì)算未來(lái)三年的數(shù)據(jù)
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;
}
}
//開(kāi)始計(jì)算數(shù)據(jù)
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.367295 * values[j - 1, Count_C - 4] + 0.941441 * values[j - 1, Count_C - 3] - 0.15105 * values[j - 1, Count_C - 2] - 0.29734 * values[j - 1, Count_C - 1] + 14.27036);
}
}
//把數(shù)據(jù)存儲(chǔ)到dt數(shù)據(jù)集里面
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];
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -