fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static void main (String[] args) throws java.lang.Exception
  11. {
  12. // your code goes here
  13. }
  14. }
Success #stdin #stdout 0.07s 54708KB
stdin
import matplotlib.pyplot as plt
import numpy as np

# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei', 'Arial Unicode MS', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False

# 创建图形
fig, ax = plt.subplots(figsize=(12, 8))

# 生成数据 - 模拟典型成本曲线
Q = np.linspace(0.1, 12, 100)  # 产量

# 成本函数:TC = Q^3 - 6Q^2 + 15Q + 10
# 边际成本 MC = dTC/dQ = 3Q^2 - 12Q + 15
MC = 3 * Q**2 - 12 * Q + 15

# 平均成本 AC = TC/Q = Q^2 - 6Q + 15 + 10/Q
AC = Q**2 - 6 * Q + 15 + 10 / Q

# 边际收益 MR(假设完全竞争市场,价格为常数)
P = 12  # 给定市场价格
MR = np.full_like(Q, P)  # MR = AR = P

# 找到AC最低点
AC_min_idx = np.argmin(AC)
AC_min_Q = Q[AC_min_idx]
AC_min_cost = AC[AC_min_idx]

# 找到MR=MC的最优产量点
optimal_idx = np.argmin(np.abs(MC - MR))
optimal_Q = Q[optimal_idx]
optimal_cost = MC[optimal_idx]

# 绘制曲线
ax.plot(Q, MC, 'r-', linewidth=2.5, label='边际成本 (MC)', alpha=0.8)
ax.plot(Q, AC, 'b-', linewidth=2.5, label='平均成本 (AC)', alpha=0.8)
ax.plot(Q, MR, 'g-', linewidth=2.5, label='边际收益 (MR)', alpha=0.8)

# 标注AC最低点
ax.plot(AC_min_Q, AC_min_cost, 'bo', markersize=10, label='AC最低点')
ax.annotate(f'AC最低点\nMC = AC\nQ={AC_min_Q:.1f}, AC={AC_min_cost:.1f}', 
            xy=(AC_min_Q, AC_min_cost), xytext=(AC_min_Q-2.5, AC_min_cost+5),
            arrowprops=dict(arrowstyle='->', color='blue', lw=1.5),
            fontsize=10, color='blue', fontweight='bold',
            bbox=dict(boxstyle="round,pad=0.5", facecolor="#E6F3FF", alpha=0.8))

# 标注最优产量点 (MR = MC)
ax.plot(optimal_Q, optimal_cost, 'ro', markersize=10, label='最优产量点')
ax.annotate(f'最优产量\nMR = MC\nQ={optimal_Q:.1f}, P={P:.1f}', 
            xy=(optimal_Q, optimal_cost), xytext=(optimal_Q+1.5, optimal_cost+8),
            arrowprops=dict(arrowstyle='->', color='red', lw=1.5),
            fontsize=10, color='red', fontweight='bold',
            bbox=dict(boxstyle="round,pad=0.5", facecolor="#FFE6E6", alpha=0.8))

# 添加垂直线连接两个关键点
ax.axvline(x=AC_min_Q, ymin=0, ymax=(AC_min_cost+5)/30, color='b', linestyle='--', alpha=0.5)
ax.axvline(x=optimal_Q, ymin=0, ymax=(optimal_cost+8)/30, color='r', linestyle='--', alpha=0.5)

# 标注成本最小化区域
ax.fill_between(Q, AC, alpha=0.1, color='blue', label='平均成本区域')
ax.fill_between(Q, MC, alpha=0.1, color='red', label='边际成本区域')

# 设置坐标轴标签和标题
ax.set_xlabel('产量 (Q)', fontsize=13, fontweight='bold')
ax.set_ylabel('成本/收益', fontsize=13, fontweight='bold')
ax.set_title('成本曲线特征与最优产量决定\n(MC与AC在AC最低点相交,最优产量在MR=MC处)', 
             fontsize=16, fontweight='bold', pad=20)

# 添加图例
ax.legend(loc='upper right', fontsize=11, frameon=True, shadow=True)

# 添加网格
ax.grid(True, alpha=0.3, linestyle='--')

# 设置坐标轴范围
ax.set_xlim(0, 12)
ax.set_ylim(0, 35)

# 添加数学公式框
fig.text(0.5, 0.02, 
         '核心公式与关系:\n'
         r'• 边际成本 MC = $\frac{dTC}{dQ}$ = 产量增加一单位导致的成本增加' '\n'
         r'• 平均成本 AC = $\frac{TC}{Q}$ = 总成本与总产量之比' '\n'
         r'• 关键关系:MC与AC在AC最低点相交(MC曲线必然穿过AC曲线最低点)' '\n'
         r'• 最优产量条件:MR = MC(边际收益等于边际成本)',
         ha='center', fontsize=11, color='black',
         bbox=dict(boxstyle="round,pad=0.8", facecolor="#F9F9F9", alpha=0.9, 
                   edgecolor="gray", linewidth=1.5))

# 在图中添加关键关系的说明
ax.text(1, 30, r'$MC < AC \Rightarrow AC\downarrow$', fontsize=11, 
        bbox=dict(boxstyle="round", facecolor="#FFE6E6", alpha=0.8))
ax.text(1, 27, r'$MC > AC \Rightarrow AC\uparrow$', fontsize=11,
        bbox=dict(boxstyle="round", facecolor="#FFE6E6", alpha=0.8))
ax.text(9, 15, r'$MR = P$ (完全竞争)', fontsize=11, style='italic',
        bbox=dict(boxstyle="round", facecolor="#E6F3E6", alpha=0.8))

plt.tight_layout(rect=[0, 0.15, 1, 1])
plt.show()
stdout
Standard output is empty