基于python中sympy库的符号模型求解方法 v20190930

注:本文Anaconda的安装请参考安装教程,sympy库的基本使用可以参看这里这里

在学习python后发现可以用sympy库进行符号计算,在毕业论文的撰写过程中也一直使用这个库进行符号模型的求解,但在网上很少见类似的教程,所以本文结合一个实际例子进行sympy库符号计算的介绍。

栗子

作为Stackelber博弈模型的领导者,制造商首先制定批发价格   w ~w  w,随后零售商根据批发价格 ,制定自己的零售价格   p ~p  p,参与新产品的研发程度   θ ~\theta  θ a   a~ a 为市场的总需求, c   c~ c 为价格系数。

制造商和零售商的决策分别如下:

max ⁡ R m ( ω ) = ( ω − c ) ( a − b p + θ ) max ⁡ R r ( p , θ ) = ( p − ω ) ( a − b p + θ ) − 1 2 θ 2 \begin{array}{l} \max {R_m}(\omega ) = (\omega - c)(a - bp + \theta )\\ \max {R_r}(p,\theta ) = (p - \omega )(a - bp + \theta ) - \frac{1}{2}{\theta ^2} \end{array} maxRm(ω)=(ωc)(abp+θ)maxRr(p,θ)=(pω)(abp+θ)21θ2

利用sympy求解的步骤如下:

  1. 将sympy引入工作环境,定义模型中用到的未知量 w w w p p p θ \theta θ(用 o o o代替)、 a a a c c c,并定义我们的Stackelber模型。
from sympy import *                                 #将sympy的所有函数引入工作环境
from fractions import Fraction                      #利用fractions中Fraction美化分数输出                 
p, w, o, c, a, b = symbols('p, w, o, c, a, b')      #定义所有使用的符号,等号左边的Rm和Rr不需要定义

Rm = (w - c)*(a - b*p + o)
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值