经济学中若干模型的数值计算方法
2018-12-08杨柳
杨 柳
(陕西国际商贸学院 基础课部,西安 712046)
一、Matlab及功能介绍
Matlab是由美国mathworks公司发布的主要面对科学计算、可视化以及数值计算的高级技术计算语言,为数值计算提供了解决方案。它有高效的数值计算,又有图形处理功能为用户的提供了便利。Matlab中包含大量的算法,直接调用,可以快速得到近似解或者图解。现代化计算必须与科学计算机相结合,否则对学科的研究就只停留在大型的计算上。
经济学中,数学模型和计算机的应用是对某些经济问题分析的基础[1],只有得到模型的解或模型的图像,才能更好地分析经济活动体现的问题。模型求解的过程中,数值解往往比准确解更容易得到,也能更好地反馈经济活动的变化过程,利用计算机求解模型是数值计算的有效方法。
二、经济学中的数学问题
在宏观经济运行过程中,运输问题、配料问题、合理下料问题等线性规划问题比较常见,线性规划问题是运筹学的重要分支,广泛应用于军事作战、经济分析、经营管理和工程技术等方面,为合理地利用有限的人力、物力、财力等资源做出最优的决策,提供科学的依据。运筹学中,对线性规划问题的求解方式有三种,包括图解法、单纯形法、计算机求解。其中,图解法是变量只有两个的情况下,在直角坐标系中画出可行域,找目标函数的最优解;单纯形法适用于任意变量,但需要把线性规划问题转化为标准的形式;计算机求解课采用Matlab软件、lingo软件或者Excel表格。利用图表法求解过程烦琐,且只能有两个变量,多个变量则不能使用,单纯形法的求解速度较慢,需要对单纯形法的步骤很清晰,计算能力要求较高。而宏观经济学中,模型越趋向于非线性,计算方法与非线性模型的数值计算紧密相连,随着计算机技术的成熟,非线性模型的求解已经不受限制,并且大规模的运算也能够实现。Matlab工具箱提供了非线性模型的求解方法,无论是提高求解速度的方法,或者是提高数值解精度的方法,在软件中都有涉及。
三、计算机求解
(一)线性规划问题求解
宏观经济的最优化问题是指在决策管理中,通过协调有限的资源,达到最佳的经济效果,最大限度地满足人们的需求。最优化问题最基本的是线性规划问题,线性规划是经济计划最优化的基本方法之一,是进行科学管理的一种数学方法,在经济管理、交通运输、工农业生产等经济活动中,提高经济效果是人们的要求。而提高经济效果一般通过两种途径:一是技术方面的改进,例如改善生产工艺,使用新设备和新型原材料;二是生产组织与计划的改进,即合理安排人力物力资源。线性规划所研究的是:在一定条件下,合理安排资源,使经济效果达到最好。规划问题,即求线性目标函数在线性约束条件下的最大值或最小值的问题[2]。
Matlab为规划问题(线性规划和非线性规划)提供了求解的工具箱。求线性规划问题的最优解有两种方法,一种方法是使用linprog命令,另一种是使用optimtool工具箱。一般情况下,linprog 命令的调用格式为[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub,x0)。其中,f表示目标函数中各个变量前面的系数向量,如果是求最小值问题,那么f就是各个变量的系数,如果是求最大值问题,那么f就是各个变量的系数的相反数;A和b分别表示不等式约束A*x<=b中的矩阵A和向量b;Aeq和beq表示等式约束Aeq*x=beq中的矩阵Aeq和向量beq。
例如,某工厂要用三种原料1、2、3混合调配出三种不同规格的产品甲、乙、丙,已知产品的规格要求及单价为:甲产品需要原材料1不少于50%,原材料2不超过25%,每千克售价50元;乙产品需要原材料1不少于25%,原材料2不超过50%,每千克售价35元;丙产品对原材料没有限制,每千克售价25元。每天能供应的原料数量及原料单价为:原材料1每天最多供应100千克,每千克65元;原材料2每天最多供应100千克,每千克25元;原材料3每天最多供应100千克,每千克35元。问:该厂应如何安排生产,使利润收入为最大?
解:设xi,j表示第i(i=1,2,3,1=甲,2=乙,3=丙)种产品中原料j(j=1,2,3)的含量。如,x1,2就表示甲产品中第2种原材料的含量。
max z=-15x11+25x12+15x13-30x21+10x22-40x31-10x33
S.t.
0.5x11-0.5x12-0.5x13≥0
-0.25x11+0.75x12-0.25x13≤0
0.75x21-0.25x22-0.25x23≥0
-0.5x21+0.5x22-0.5x23≤0
x11+x21+x31≤100
x12+x22+x32≤100
x13+x23+x33≤60
xij≥0,i=1,2,3;j=1,2,3
Matlab求解程序为:
>>f=[15,-25,-15,30,-10,0,40,0,10];
>>A=[-0.5,0.5,0.5,0,0,0,0,0,0;-0.25,0.75,-0.25,0,0,0,0,0,0;0,0,0,-0.75,0.25,0.25,0,0,0;0,0,0,-0.5,0.5,-0.5,0,0,0;1,0,0,1,0,0,1,0,0;0,1,0,0,1,0,0,1,0;0,0,1,0,0,1,0,0,1];
>>B=[0,0,0,0,100,100,60];
>>lb=zeros(9,1);
>>[x,fval]=linprog(f,A,B,[],[],lb)
Optimization terminated.
x=
100.0000
50.0000
50.0000
0.0000
0.0000
0.0000
0.0000
25.00000.0000
fval=
-500.0000
结果分析:由于求的是最大值,在MATLAB的标准形式中,需要把最大值的目标函数两边取负号,转变为求最小值的形式,因此结果中的-500是添加负号之后的最小值。因此,本题收入的最大值为500元,安排的生产方案是:甲产品中第一种原材料的含量为100千克,甲产品中的第二种原材料的含量为50千克,甲产品中的第三种原材料含量为50千克,丙产品中的第二中原材料含量为25千克。
(二)投入产出模型的求解
美国经济学家列昂惕夫提出的投入产出模型是对经济学系统中产品的投入及产出之间关系的考察,也是对经济预测和制定经济政策及措施的依据的数学模型。由于社会分工的不同,可以分为若干个经济部门,每个经济部门的活动可以分为投入和产出两方面,通过投入产出模型可以描述短期的投入产出的经济联系,是一个相对静态的模型[3]。
假设 n 个能够生产产品的部门,令 x=(x1,x2,…,xn)T为产出向量,y=(y1,y2,…,yn)T是最终需求向量,A 为消耗系数矩阵,则列昂惕夫投入产出模型为x=Ax+y,整理得x=(I-A)-1y,大部分实际问题中I-A是可逆矩阵,产出量转化为矩阵的乘法,若A与y已知,则可求出对应的产量x。Matlab实现:在命令窗口中输入投入产出表,求出消耗系数矩阵A,输入最终需求向量y,根据x=(I-A)-1y求出相应的产出向量x。
投入产出模型可以分析各部门在生产实际中所占的比例,调整产业结构,也能研究各部门运转的内在联系及之间的影响。并且在某一产品价格变动的过程中,可以了解对整个生产活动的影响,从而为最终的生产提供科学的规划[4]。
四、结语
宏观经济发展的趋势是越来越多地使用数学和统计工具,利用数学模型来表述经济理论,好的模型要能够正确证明自已的想法、数学符号与语言解释能够紧密联系、经济变量要有意义且与实际数据能够较为紧密地对应。将Matlab运用于经济模型的求解过程,一方面可以提高计算的速度,另一方面可以把抽象的模型转化为数值解与图形,从图形观察和理解经济活动,化复杂为简单,化抽象为具体,有利于提高感性的认知,加强对经济模型的直观认识,对抽象的定理及经济活动的理解。