4用投入产出模型规划小流域——动态投入产出模型 paper51.com 4.1模型的求解 paper51.com 为了得到投入产出模型的解,为了该结果有意义、贴近实际经济生活,许多经济学家和数学家都做了大量的工作和尝试,采用多种数学手段,包括比较简单的数值逼近、模糊数学、神经网络等手段。张金水教授在提出非线性动态投入产出模型的同时也给出了简便易懂的计划方法,,利用大道定理,给出有意义的经济解,这样扩大了投入产出技术的应用。 copyright paper51.com 为了获得小流域土地资源的最佳配置,根据当地的自然经济条件、农业产业结构、人口状况等为条件。在保护生态环境的前提下,以谋求经济最大化为发展目标,建立数学模型。教学模型结构如下: 内容来自论文无忧网 www.paper51.com B Xt = ( I – C + B )X - Y paper51.com 其中:I为已知单位矩阵; C为已知消耗系数矩阵; B为已知投资系数矩阵; X为已知最终产品向量; Y为已知净产品向量。 内容来自www.paper51.com 决策变量与约束条件 内容来自www.paper51.com 小流域的土地利用类型以农耕地,林地,牧草地,水域,居民住房用地,道路为主,土地利用结构调整主要涉及到农耕地,林地,牧草地,因此在选取决策变量时,重点考虑这些用地类型,它们对应的主要经济活动有种植各种作物,森林管理,牧草地管理等,不同的土地利用类型对环境造成的影响不同,如水土流失,因此,在选取决策变量时要充分反映小流域内土地利用类型及土地利用方式,各种农业经济活动对环境造成的影响,小流域土地规划的约束条件一般由土地利用方式约束,经济约束,水资源约束,劳动力约束和水土流失约束等,根据小流域的自然,经济状况对小流域内的耕地,林地,牧草地等作原则性的安排,经济约束包括粮食约束,经济林约束,肥料约束等,在收集已有资料和重点调查的基础上建立各自的约束方程。根据当地水资源的状况,不同土地利用方式对水资源的利用差异,建立水资源约束方程,根据流域内人口状况,不同土地利用方式的投入劳力数量,建立劳动力约束方程,根据小流域的土壤侵蚀标准,不同土地利用方式的侵蚀模数建立水土流失方程。 copyright paper51.com 例子: 内容来自论文无忧网 www.paper51.com
BXt = ( I – C +B )X - Y 内容来自www.paper51.com 其中:I为已知单位矩阵; C为已知消耗系数矩阵; B为已知投资系数矩阵; copyright paper51.com X为已知最终产品向量; Y为已知净产品向量。 内容来自论文无忧网 www.paper51.com 已知: 内容来自www.paper51.com
I= 1 0 0 C= 0.01 0 0 B=0.1 0.2 0.1 copyright paper51.com 0 1 0 0 0.04 0 0.3 0.5 0.7 http://www.paper51.com 0 0 1 0 0 0.02 1.4 1.5 0.1 paper51.com X = 1020.5 Y = 1021.63 求:Xt= ? 内容来自论文无忧网 www.paper51.com
568.63 544.23 paper51.com 563.96 583.23 http://www.paper51.com 其中: 内容来自www.paper51.com C表示农耕地,林地,牧草地三种地的 经济,水资源,劳动力三种资源消耗系数 内容来自论文无忧网 www.paper51.com B表示农耕地,林地,牧草地三种地的 经济,水资源,劳动力三种资源投资系数 http://www.paper51.com X表示经济,水资源,劳动力三种资源的最初的利用情况 内容来自www.paper51.com Y表示经济,水资源,劳动力三种资源三年中某一年的利用情况 http://www.paper51.com Xt表示Y中某一年的下一年经济,水资源,劳动力三种资源规划利用情况 内容来自www.paper51.com
解:由矩阵的加、减法可得N: 由矩阵的求逆可得B-1: 内容来自www.paper51.com
N = I – C + B = 1.090 0.2 0.1 B-1 = 0.1 0 0.1 paper51.com
0.3 1.46 0.7 1.4 1 0.1 http://www.paper51.com
1.4 1.5 1.08 0.3 0 0.7 内容来自论文无忧网 www.paper51.com 由矩阵的乘法可得P: 由矩阵的加、减法可得Q: http://www.paper51.com P= N * X =1282.467 Q = P – Y = 260.837 paper51.com 1531.122 986.892 内容来自www.paper51.com 2890.722 2307.492 http://www.paper51.com 计算结果: 内容来自论文无忧网 www.paper51.com Xt = 256.833 内容来自www.paper51.com 1582.813 内容来自www.paper51.com 1693.492 内容来自论文无忧网 www.paper51.com 4.2用C++程序语言实现 copyright paper51.com #include <math.h> paper51.com
#include<stdio.h> 内容来自论文无忧网 www.paper51.com #include<stdlib.h> copyright paper51.com #define nearzero 1.0E-20 内容来自www.paper51.com voidMatPrint(float * m1, int m, int n, char * matname) paper51.com { copyright paper51.com int i; int j; paper51.com printf("%s\n",matname); 内容来自www.paper51.com printf("\n"); paper51.com for(i=0; i<=m-1; ++i){ copyright paper51.com for(j=0;j<=n-1; ++j){ paper51.com printf("%10.3f", m1[i*n + j]); copyright paper51.com
} http://www.paper51.com printf("\n"); copyright paper51.com } 内容来自www.paper51.com printf("\n"); 内容来自www.paper51.com
} paper51.com voidMatProd(float * m1,float * m2,int l,int m, int n,float * m3) 内容来自www.paper51.com { 内容来自论文无忧网 www.paper51.com
int i,j,k; http://www.paper51.com
for(i=0; i<=l-1; ++i){ 内容来自www.paper51.com for(j=0;j<=n-1; ++j){ paper51.com m3[i * n + j] = 0; paper51.com for(k=0; k <= m-1; ++k){ 内容来自论文无忧网 www.paper51.com
m3[i * n+j] = m3[i * n + j] +m1[i * m + k] * m2[k * n + j] ; 内容来自www.paper51.com } paper51.com } http://www.paper51.com
} copyright paper51.com } 内容来自www.paper51.com voidMatAdd(float * m1,float * m2,int numrow,int numcol, float * m3) http://www.paper51.com
{ copyright paper51.com int i,j; 内容来自论文无忧网 www.paper51.com for(i=0; i<=numrow-1;++i){ copyright paper51.com
for(j=0;j<=numcol-1; ++j){ copyright paper51.com m3[i * numcol+j] = m1[i * numcol+j] +m2[i * numcol+j]; 内容来自论文无忧网 www.paper51.com } copyright paper51.com } copyright paper51.com } 内容来自论文无忧网 www.paper51.com voidmatswap(float * s1,float * s2) paper51.com
{ 内容来自www.paper51.com float temp; 内容来自www.paper51.com
temp=(*s1); paper51.com (*s1)=(*s2); copyright paper51.com
(*s2)=temp; copyright paper51.com } copyright paper51.com voidMatInvert(float * matdate,int numcol, float * det,float * invary) copyright paper51.com
{ 内容来自论文无忧网 www.paper51.com int * pivlst; 内容来自论文无忧网 www.paper51.com char * pivchk; 内容来自www.paper51.com inti,j,k,l,lecol,ll,piv,t,leval,lerow; paper51.com pivlst = (int * ) calloc(50 *2,2); http://www.paper51.com pivchk = (char * ) calloc(50,1); 内容来自www.paper51.com (* det)=1; 内容来自www.paper51.com for(i=0; i<=numcol-1;++i){ paper51.com pivchk[i]=0; paper51.com for(j=0;j<=numcol-1; ++j){ 内容来自论文无忧网 www.paper51.com invary[i*numcol+j]=matdate[i*numcol+j]; 内容来自论文无忧网 www.paper51.com } copyright paper51.com } http://www.paper51.com for(i=0; i<=numcol-1;++i){ 内容来自www.paper51.com leval=0; copyright paper51.com
for(j=0;j<=numcol-1; ++j){ 内容来自论文无忧网 www.paper51.com if(!(pivchk[j])){ 内容来自www.paper51.com for(k=0; k<=numcol-1; ++k){ copyright paper51.com if(!(pivchk[k])){ http://www.paper51.com if(fabs(invary[j*numcol+k])>leval){ http://www.paper51.com lerow = j; copyright paper51.com lecol=k; 内容来自www.paper51.com leval=fabs(invary[j*numcol+k]); http://www.paper51.com
} 内容来自www.paper51.com } http://www.paper51.com } copyright paper51.com } 内容来自www.paper51.com } http://www.paper51.com
} 内容来自论文无忧网 www.paper51.com pivchk[lecol]=1; paper51.com pivlst[i*2]=lerow; paper51.com pivlst[i*2+1]=lecol; http://www.paper51.com if (lerow!=lecol){ 内容来自www.paper51.com (*det)=-(*det); copyright paper51.com for(l=0; l<=numcol-1; ++l){ paper51.com matswap(&invary[lerow*numcol+l],&invary[lecol*numcol+l]); paper51.com } http://www.paper51.com } copyright paper51.com piv =invary[lecol*numcol+lecol]; paper51.com (*det)=(*det)*piv; 内容来自论文无忧网 www.paper51.com
if ((*det)>1.0e+30){ paper51.com
(*det)=1; 内容来自www.paper51.com
} 内容来自www.paper51.com invary[lecol*numcol+lecol]=1.0; 内容来自www.paper51.com for(l=0; l<=numcol-1;++l){ copyright paper51.com invary[lecol*numcol+l]=invary[lecol*numcol+l]/piv; copyright paper51.com } 内容来自www.paper51.com for(ll=0; ll<=numcol-1;++ll){ http://www.paper51.com if(ll!=lecol){ http://www.paper51.com t=invary[ll*numcol+lecol]; http://www.paper51.com
invary[ll*numcol+lecol]=0; http://www.paper51.com for(l=0; l<=numcol-1; ++l){ http://www.paper51.com invary[ll*numcol+l]=invary[ll*numcol+l]-invary[lecol*numcol+l]*t; 内容来自www.paper51.com } paper51.com } paper51.com } http://www.paper51.com for(i=0; i<=numcol-1;++i){ paper51.com
l=numcol-i-1; paper51.com if(pivlst[l*2]!=pivlst[l*2+1]){ 内容来自www.paper51.com
lerow=pivlst[l*2]; copyright paper51.com
lecol=pivlst[l*2+1]; http://www.paper51.com for(k=0; k<=numcol-1; ++k){ 内容来自论文无忧网 www.paper51.com matswap(&invary[k*numcol+lerow],&invary[k*numcol+lecol]); paper51.com } 内容来自www.paper51.com } paper51.com } paper51.com free(pivlst); free(pivchk); 内容来自论文无忧网 www.paper51.com } copyright paper51.com
voidNormalizeEigenVectors(float *a,int n) 内容来自www.paper51.com { paper51.com
int i,j; paper51.com float max; copyright paper51.com
for(j=0;j<=n-1;++j){ http://www.paper51.com
max=a[j]; paper51.com for(i=1;i<=n-1;++i){ 内容来自www.paper51.com if(fabs(a[i*n+j])>fabs(max)){ http://www.paper51.com max=a[i*n+j]; copyright paper51.com } copyright paper51.com
} 内容来自www.paper51.com for(i=1;i<=n-1;++i){ 内容来自论文无忧网 www.paper51.com
a[i*n+j]=a[i*n+j]/max; copyright paper51.com
} http://www.paper51.com
} 内容来自www.paper51.com
} copyright paper51.com |