求解线性方程组的一个简单界面
pysolve3的Python项目详细描述
解线性方程组
此代码的目的是帮助表达和解决 使用python的方程组。
此工具将对方程式进行文本描述 然后迭代运行解算器,直到它收敛到一个解。
解算器提供以下解算选项: -高斯赛德尔 -牛顿·拉斐逊 -布罗登
它还使用部分sympy来帮助解析方程式。
这个工具的最初动机是解决经济问题 基于股票流一致性(sfc)模型的模型。
安装
- ::
- pip3安装pysolve
用法
from pysolve3.model import Model from pysolve3.utils import round_solution,is_close model = Model() model.set_var_default(0) model.var('Cd', desc='Consumption goods demand by households') model.var('Cs', desc='Consumption goods supply') model.var('Gs', desc='Government goods, supply') model.var('Hh', desc='Cash money held by households') model.var('Hs', desc='Cash money supplied by the government') model.var('Nd', desc='Demand for labor') model.var('Ns', desc='Supply of labor') model.var('Td', desc='Taxes, demand') model.var('Ts', desc='Taxes, supply') model.var('Y', desc='Income = GDP') model.var('YD', desc='Disposable income of households') # This is a shorter way to declare multiple variables # model.vars('Y', 'YD', 'Ts', 'Td', 'Hs', 'Hh', 'Gs', 'Cs', # 'Cd', 'Ns', 'Nd') model.param('Gd', desc='Government goods, demand', initial=20) model.param('W', desc='Wage rate', initial=1) model.param('alpha1', desc='Propensity to consume out of income', initial=0.6) model.param('alpha2', desc='Propensity to consume o of wealth', initial=0.4) model.param('theta', desc='Tax rate', initial=0.2) model.add('Cs = Cd') model.add('Gs = Gd') model.add('Ts = Td') model.add('Ns = Nd') model.add('YD = (W*Ns) - Ts') model.add('Td = theta * W * Ns') model.add('Cd = alpha1*YD + alpha2*Hh(-1)') model.add('Hs - Hs(-1) = Gd - Td') model.add('Hh - Hh(-1) = YD - Cd') model.add('Y = Cs + Gs') model.add('Nd = Y/W') # solve until convergence for _ in xrange(100): model.solve(iterations=100, threshold=1e-3) prev_soln = model.solutions[-2] soln = model.solutions[-1] if is_close(prev_soln, soln, rtol=1e-3): break print round_solution(model.solutions[-1], decimals=1)
- 有关其他示例,请查看ipython笔记本
- http://nbviewer.ipython.org/github/kennt/monetary-economics/tree/master/