大约 7 分钟
第3节 最优化问题
3.1 最小成本计算
前言
定义
理论概念
最优化:找函数的最高点(最大利润)或最低点(最小成本)。
- 通俗例子:汽车油离配合,找到最省油的速度
- 工作例子:生产多少件产品,平均成本最低
一、案例背景
已知企业总成本函数(x 为产量):
cost = x²/3 + 5x + 100
求:平均成本最低时的产量与最低平均成本。
二、核心原理
平均成本 = 总成本 ÷ 产量
当平均成本的导数 = 0 时,平均成本达到最小。
三、Python 代码
from sympy import *
# 定义符号变量 x 表示产量,x>0
x = symbols('x', positive=True)
# 总成本函数
cost = x**2 / 3 + 5 * x + 100
# 平均成本 = 总成本 / 产量
cost_avg = cost / x
# 对平均成本求导
cost_avg_d = diff(cost_avg, x)
# 解方程:导数=0,得到最优产量
best_x = solve(cost_avg_d, x)[0]
# 计算最低平均成本
min_avg_cost = cost_avg.subs(x, best_x)
# 输出结果
print("最优产量:", best_x.evalf())
print("最低平均成本:", min_avg_cost.evalf())四、核心API说明
symbols:定义符号变量 x,代表产量diff:对函数求导,找到斜率为0的极值点solve:解方程,求出导数为0时的最优产量subs:将最优产量代入,计算最低平均成本
五、运行结果
最优产量: 17.3205080756888
最低平均成本: 16.5470053837925
六、结果解说
- 当产量为 17 件时,产品的平均成本最低。
- 此时每件产品的平均成本为 16。
- 工作应用:工厂按产量 17 件组织生产,单位成本最低。
- 斜率等于0的时候,边际成本等于边际收入,此时为最优产量。
3.2 最大利润计算
前言
定义
案例背景
已知企业成本函数与价格函数(x 为产量):
成本 cost = 500 + 2x²
价格 price = 100 − x/5
求:总利润最大时的产量与最大利润。
核心原理
总利润 = 收入 − 成本
对利润求导=0,即可找到利润最大的产量;
二阶导数<0,说明该点为极大值点。
Python 代码
from sympy import *
# 定义符号变量 x(产量,正数)
x = symbols('x', positive=True)
# 成本函数
cost = 500 + 2 * x ** 2
# 价格函数
price = 100 - x / 5
# 总利润 = 产量 × 价格 − 总成本
profit = x * price - cost
# 对利润函数求一阶导数
profit_d = diff(profit, x)
# 解方程:导数=0,求最优产量
best_x = solve(profit_d, x)[0]
# 代入最优产量,计算最大利润
max_profit = profit.subs(x, best_x)
# 输出结果
print("最优产量:", best_x.evalf())
print("最大利润:", max_profit.evalf())核心 API 说明
symbols:定义符号变量 x,表示产量diff:对利润函数求导,找到极值点solve:解方程,求导数为 0 时的最优产量subs:将最优产量代入,计算最大利润
运行结果
最优产量: 22.7272727272727
最大利润: 636.363636363636结果解说
- 模型求解成功,得到精确符号解。
- 最优产量为:22
- 对应的最大利润为:636
- 经济含义:当产量为 22 时,企业总利润达到最大,为最优生产产量。

第4节 改变量分析
4.1 平均变化率
前言
定义
一、概念
改变量:当产量从1000变到2000,成本、收入、利润各自变了多少。
- 通俗例子:体重从50kg到60kg,增加了10kg
- 工作例子:产量涨1000,利润涨多少
一、案例背景
银行利率随时间变化,利率函数为:
r(t) = 0.02 + 0.01t
需要计算第1年到第4年的平均利率。
二、理论说明
平均变化率 = 函数在区间上的积分 ÷ 区间长度
在经济金融中,常用于计算平均利率、平均收益率、平均增长率。
三、代码
from sympy import *
t = symbols('t')
r = 0.02 + 0.01 * t
t1 = 1
t2 = 4
print("平均利率:", integrate(r, (t, t1, t2)) / (t2 - t1))四、核心API说明
symbols:定义符号变量 t,表示时间integrate:对利率函数在时间区间内积分,计算总利息- 积分结果 ÷ 时间长度 → 得到平均利率
五、结果解说
- 第1年到第4年的平均利率 = 0.045 = 4.5%
- 工作例子:银行用于给客户计算区间平均收益率
- 直观理解:利率逐年上升,平均下来为 4.5%
- 直观例子:本金:10000 元平均利率:4.5%;存 3 年:每年利息 = 10000 × 4.5% = 450 元;3 年总利息 = 450 × 3 = 1350 元
4.2 经济函数改变量
前言
定义
一、案例背景
已知企业的边际成本、边际收入函数如下:
- 边际成本:C = 50
- 边际收入:R = 0.1x + 200
- 边际利润:P = R – C
现计算产量从 1000 增加到 2000 时,总成本、总收入、总利润的改变量。
二、理论说明
在经济分析中,边际函数的积分就是总函数的改变量:
- 总成本变化 = 边际成本在产量区间上的积分
- 总收入变化 = 边际收入在产量区间上的积分
- 总利润变化 = 边际利润在产量区间上的积分
三、代码
from sympy import*
x=symbols('x')
C=50
R=0.1*x+200
P=R-C
p1=1000
p2=2000
print("成本变化:", integrate(C,(x,p1,p2)))
print("收入变化:", integrate(R,(x,p1,p2)))
print("利润变化:", integrate(P,(x,p1,p2)))四、核心API说明
symbols:定义符号变量 x,表示产量integrate:对边际函数做定积分,计算总量变化- 积分区间 (p1, p2) 表示产量从 p1 到 p2
五、结果解说
- 产量从 1000 增加到 2000:
- 总成本增加:50000
- 总收入增加:350000
- 总利润增加:300000
- 工作例子:企业用于评估扩产收益,辅助制定生产与销售目标
上述例子还可以计算不同产量区间的总成本、总收入、总利润,从而分析企业的生产与销售策略。
比方说:
- 产量从 1000 增加到 2000,总成本 50000,总收入 350000,总利润 300000。
- 产量从 2000 增加到 3000,总成本 50000,总收入 450000,总利润 400000。
- 产量从 3000 增加到 4000,总成本 50000,总收入 550000,总利润 500000。
- 产量从 4000 增加到 5000,总成本 50000,总收入 650000,总利润 600000。
第5节 多值计算
5.1 三种商品利润率
前言
定义
一、案例背景
某企业有 3 种商品,连续 3 年的销售量与对应总利润如下:
- 第 1 年:销售商品 1、2、3 分别为 300、200、300 件,总利润 70 万元
- 第 2 年:销售商品 1、2、3 分别为 200、100、500 件,总利润 60 万元
- 第 3 年:销售商品 1、2、3 分别为 200、300、400 件,总利润 80 万元
通过矩阵求解线性方程组,计算每种商品的单位利润率。
二、理论说明
设三种商品的单位利润分别为 ,根据每年销量与总利润建立线性方程组:
写成矩阵形式 ,用 np.linalg.solve 直接求解,得到各商品利润率。
三、代码
import numpy as np
# 销量系数矩阵 M
m = np.array([
[300, 200, 300],
[200, 100, 500],
[200, 300, 400]
])
# 每年总利润矩阵 N
n = np.array([[70], [60], [80]])
# 求解线性方程组
profit_rate = np.linalg.solve(m, n)
# 输出结果
print("商品1单位利润:", profit_rate[0, 0])
print("商品2单位利润:", profit_rate[1, 0])
print("商品3单位利润:", profit_rate[2, 0])四、核心API说明
np.array:构造系数矩阵与利润常数矩阵np.linalg.solve:求解多元线性方程组,得到各商品单位利润
五、结果解说
商品1单位利润:0.0882
商品2单位利润:0.1294
商品3单位利润:0.0588- 商品 2 单位利润率最高,是核心利润来源
- 商品 1 利润率次之,商品 3 利润率最低
- 工作例子:企业可优先加大商品 2 的推广与生产,提升整体利润
使用矩阵计算,可以快速求解线性方程组,得到每种商品的利润率。
import numpy as np
m=np.array([[300,200,300],[200,100,500],[200,300,400]])
n=np.array([[70],[60],[80]])
print(np.linalg.solve(m,n))