课上完成

This commit is contained in:
Cat Tom committed 2025-10-28 09:49:28 +08:00
1 parent 88fb325118
commit 67ba9bf901
2 files changed
+386

No files matched your search

+59
View File
@@ -0,0 +1,59 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"id": "233e20b4-44be-4d76-8e74-26c7ff6039a2",
"metadata": {},
"outputs": [
{
"name": "stdin",
"output_type": "stream",
"text": [
"What: A\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"A\n"
]
}
],
"source": [
"A = input(\"What:\")\n",
"print(A)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "56a1c191-2f0b-464a-ae1f-d118782a6503",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
+327
View File
@@ -0,0 +1,327 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "7479751d-b04c-4e6a-8985-8406bf4462f8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"==================================================\n",
"a. B国的产出可能性边界图\n",
"==================================================\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAtdZJREFUeJzs3Qd0FNUXBvAvhRCadAi99yKIIDYERBCkCBbECspfFFAUBKWIonQpgiIWEBRRFCygiChFsYDSey8CUqW3JJDkf+6Mk90sWVLIZt/d/X7n5IS8JJuZfNmQO++9OyEJCQkJICIiIiIiIqIMF5rxD0lEREREREREgkU3ERERERERkY+w6CYiIiIiIiLyERbdRERERERERD7CopuIiIiIiIjIR1h0ExEREREREfkIi24iIiIiIiIiH2HRTUREREREROQjLLqJiMgox48fx8cff4x///032fePHTsW//zzT7of/9ixY/j000+xbNkyZIT3338fs2fPhr/FxcVh+/btyb5v69atWL9+faof6+DBg14fK602b97s9X0//vgj7rzzTnz55Zepeqz4+HhER0en+SUhIQEmk+yC+esTEQU6Ft1ERJQun3zyCUJCQtL98s033yT7uKtXr8Zjjz2Gzz777LL3SSHYs2dPPPfcc+k+7n379uGhhx7C22+/jYwwYsQIfP7556kubs6cOYOLFy+mqxCMiYnB6dOnreLT00cffYQqVapg2LBhl72vX79+6NKly2XfS2/H8NJLL6FevXpXPJbw8HB07979ih/z4osvolq1ali7dm2y74+NjcX8+fOtCy2p8eeffyJbtmxpflmzZs1lj1W+fPl0/+wWL14cGUXyvOGGG/D777/DHy5dumR9/YULF/rl6xMRBQMW3URElC5Zs2a1Xv/8889WIZval7lz51qfFxkZmezjbtiwwSroHnzwwcve98MPP1iv+/fvn+LxSWG7fPly6/G2bNmS+CJft0CBAli8eHGScXmR2WD5nKNHj172eI8++ij69Olz2bg8XkRExGXjXbt2xahRoy67oHDNNddYHx8aGprmYk++Vu7cubFr164kjyurAgYMGIBatWqhR48e1uzugQMHEt+fI0eOxGOUAtcphgcNGpTs904+1snX8ccff1if56xAkGPx/BhPTz75pHWer776arLvl5yF5JEa2bNnt17LBRm5YOC8zJw50xrfvXt3kvEpU6YkHqsnOfYWLVpYM/HuL/J9lJ9Rz3Hn5e677/b6s5tWchHm3nvvRa5cuXD99dfDHySD//3vf7jnnnuwceNGvxwDEVGgs/+3IyIiArBnzx6UKVMmyZgUeQ0aNLAKyIoVKyaOZ8mSxXpduHBhREVF4fz5814LUCmApRCUWcdDhw4l+XxP8of/rbfeivz581/2Pll2XrJkSezfv996cde0adMkX1uWkd90003W15SvJUWr56zxLbfcctms34ULF6wl4zLb7k6Kd5mV9OT5uA4p6mVW21316tWxc+dO65jCwsKsgjQlI0eOxBtvvIElS5agbNmy1vdRvgcOmfXu2LGj9VpWD0hhKku25fsjS+hz5sxpfR0plp9++mnre1isWDHrMR9//PFUF90yEypL+wcOHGi9LVl7y9BRrlw5tG/f3iqSZYl7pUqVrJ8T+Tw5f3kRcoyp4Xy8ZHf27NnEcfmeCHls93H5OG8ZyTFIsVu5cuXEsZUrV2LIkCG4//77MWPGjGSPQZ4PKZ13aslqC/l5kIsxzve7YcOG+OWXXxI/RsZlBUPv3r2TXIjyPCf5Ht54443W8detW9camzp1Kjp16uT16/fq1ct6XssqCFn5IB8rPzOp+bkkIqLUY9FNRESXkRnADh06WP+W2ek333wTt99+OzZt2mQVKsL9D/MVK1ZYf/Cn5Ndff02cJfT8w7506dL4+++/ky0qZEZQil75OlKwPvDAA0kKZSmupMjOly9f4rhcCJBiX0jxK8uuH3nkEauAcSePLeMyk92sWTOvRbQUos7MbGq4F5UOOXcpnNPCmd3NmzevVSx7HrvMqMtqAynUnGXPY8aMsZYMy/fJ2W8us+P169e3lnN7XmxwbNu2zSoqnZl1mfUtVaqUNRO6bt06VKhQwdrvLaTIP3nyJHbs2GHNKstScbkA4zlrLcdXpEgRa4Zf1KxZ0yo0PS+YJDdL/t577yV7nHKRQV48yex9ann+/MnP0BNPPGGdi2wXcN8yIBnIMcvPVHKfmx6HDx+2LmDILL3zvXE3bdo061iOHDliHYtsiTh37pyVhUMuGMiqD3kOyAWzSZMm4bbbbrMKZ/k+uxfXsgrCU9WqVRP//frrr1sXhSZPnpzkaxAR0dVj0U1ERJeRwvThhx9OfPu6666zZk9l5uyZZ565rPCQP+il+HKWHMvsrMwUrlq1ynq/FGQyGynFl7OE1bO4lc+Vpbvue5JlJvCDDz6wvtY777xjFdVSmLvPjE6fPt061istdZZZVpnZlcZdf/31V5JjlxlkmYmVwlzOMbPs3bvXmplNjlzY8CywkyMzszIrnydPHqvAllleeZHHlYsTskzaWRIve7SlKHPIzLdcSBk/frxVqImnnnoKhQoVSiycJTPZs965c2drP7VcgJHC2yFFsXthPHHiROsx3N18883Wi0P2gcvPgxSaspT/ww8/tI6hYMGC1vvlQolcAElu37QUl0Lycr/wMmvWLNx3333W8nK5eONwZnqT2wPvWTjLccvec9nP7qxykH3Wcu5SkDoFt/B2YSYt5Oe2du3ayV5wEO7PP+lhUKdOHbzyyivW8ThfXy5yuH+cFMtyUUeeQ+49EWT2vGXLllc8Hvl5kYssb731FotuIqIMxqKbiIhSJMWBkH3PyZGCWZYSu88MSlGT2r26Qj5eZlndl/vK58vssnxdmYGTosBzKbIzm32lolv2y8pe59GjR1uFp8yiOuRt+dwJEyZc8fjS0/jsSp8jhZ3MUCenXbt2qeroLYW0FIlSaMmMtBSGUojJxQlZAi17sGWmefDgwdZMqCztlwLdaYQns9fOEmzn4oQU4M6edjlG+Z5JMS0Ft3yvpFB3LsTI0nH5GlLUyuM4hfOVuDfBkyJZCkgp8pwVEM7XTq7odi5SyCoMZyWGO8+tEZ7Lz5Mjx96tWzdrZlmWb8sqAblIIDPFsudd9jo///zzyGgyw53cbH1yZMWEfN/l2CQH9+0F7uRCjcxWywWS9JCfO9mCIEvN3S+uEBHR1WHRTUREKZJZbCGzoN7IfmcpXj2LXyk8peiRWUpnaXpyvC3ZlaJMOnPLHm9ZJivFnfvXkKJbihLPpd8ym+reFVsKHCk6pVh09pXLbK8UP7J0V5aPy7gcryzb9iz65BykEE5ullNm7+UYPUkB5I0UmVLgehbe8nVl1jG1ZCZblio7Tpw4Yb0I+X5JZm3btrWKbFlp4E5m9u+44w7r3/K9kuZrcsyyH13UqFHDmkmXY5SZaSl0neXuzkUS95llh2QkWxKcnwf5nknDMM+LMPJ9k0LZvTGZs28+uT39smTec5+8M+Mvt5Fr1apVsvk4x5wcOQ8pMGUlhVyMka/bpk0b61hlBYfMSGfEzLYnueDhvgIgJc4xyM91Sh+X0sd4I3lK/jLjz6KbiCjjsOgmIqLLSDMxp0u1zHrJbKkUzFeamZPZVtlX7c69WJEmWt5mylMiy2VlNlQKW5l5lS7STuHtWYQ7ZLZPGsB5kiLKkyxDlhf3vcGyh9zd119/nWwx07p1a+vjk7tV15UuMnju93aXlr3jcs9xb7fukhlamR2VPfpSVMv+YGf2XWbC3ZewS3dyZ1WDU3QLWeottxyT11cqXj1/fmSvsZOLzFDLBQb3oltyk68p++jdOUW3MyPv+T3zXOkgfQJkNlp+9mQrgiy/Tiu5DZ1TvMuyfyHfL3nML774wmqsllKn9rQ4deqU9T1JzRYChxTCcjGmRIkSXj9GHlMukMlSdM/vqed9772tQilatGiSzvdERHT1WHQTEdFlZNZPXhzyx/53331nLWH2RvbnSiEns5bue7qleJFi9UoFqEOKas8ZY7ndlVPUy6yqLEmWpeZyIUDIYydXEDkdpl977TWrG3pqyXJjz+7UUqzKTHhyTdBk3HNZvPM4UgTJDH9aiui0cmaJPZeyy/fK+b7IBQSZqb/SbalkH7/se/c8R3kMabAmM8zyvU6uE7zT9V2KcimMpWB29l/LknT35eMO6bQuM/Ke++ilIPVWdLuTYxk+fLi1dF6+9zLLLUujZYn8yy+/nGxzsuRIgzS5tdhPP/1k7feXJnMysy9L9fv27WtdbJDl57KU3+lncLWc5e5XWtHgFMnysycXVhYsWIBnn332slUe8nGyMkN6HQwdOtT6/nlehJGVHJ4kr+RufSbHJO8jIqKMw6KbiIguI02pZKmt/DEvM93jxo2zlihLodSoUaNkP8d9P62zp1uW6jZv3tzaY+zcn/tKkmuk5j4Dfdddd1nFocx2S+Mr+RpSwCRXdDv7f2UJrzSSuhpSbEnndM+u21ciS6dlX7BcRJDCzVecGXPPVQRSkDnfF2nAJXuBpagUkqsUmrLk2yluZU/+Cy+8kOzXkM7psuddill30mRNXhxy66vkumQLz0JdHk9mreXnKrUz3U6xLfuv5evKrLTcSku6gMu5SmEss9bSnE0yk1theS6p9yQ/o3IbNbm9nFygkYtD0txMGpTJ+UoTNfleffXVV7j22mutFQ9XS/a+S24yo+ytm737/nj53skqE/fvtZCVAu4fJxeoZGWD5/dULkzI0nx3yd3aT8gxyfOMiIgyDotuIiK6jDRqatKkifVvWf4rf8TLslaZQXO6j6eGFAsySygFsnSCdrpke5NcIzVPUkhJMy6ZeZel3VJcJ3efZ5khFO63EUsvmRFMblYwpc8RV1qSLbf5yqj9wp63QnMnxyAvsupA9nZLt3DZvy57wWUZeGrIygK5eODMdMuSemkLine truncated
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"B国最大橙子产量: 150\n",
"B国最大葡萄产量: 450\n",
"B国PPF斜率: -3.00\n",
"斜率的绝对值表示B国的机会成本: 生产1单位橙子需放弃3.00单位葡萄\n",
"\n",
"==================================================\n",
"b. 全球橙子与葡萄的相对供给曲线\n",
"==================================================\n",
"各国机会成本分析:\n",
"A国生产橙子的机会成本: 1.333 (葡萄/橙子)\n",
"B国生产橙子的机会成本: 3.000 (葡萄/橙子)\n",
"A国生产葡萄的机会成本: 0.750 (橙子/葡萄)\n",
"B国生产葡萄的机会成本: 0.333 (橙子/葡萄)\n",
"\n",
"比较优势分析:\n",
"A国在生产橙子上具有比较优势 (机会成本更低)\n",
"B国在生产葡萄上具有比较优势 (机会成本更低)\n",
"\n",
"各国最大产量:\n",
"A国最大橙子产量: 375\n",
"A国最大葡萄产量: 500\n",
"B国最大橙子产量: 150\n",
"B国最大葡萄产量: 450\n",
"全球最大橙子产量: 525\n",
"全球最大葡萄产量: 950\n",
"\n"
]
},
{
"data": {
"image/png": "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rvr16+fInTu3+Szh81OlShVHw4YNHVevXnWsXr3avN/welj+/PNP87y43d69e90ea926deY58Jj4DOE0ePBgs239+vXObficFC9e3HkZpzx58rjt28SJE83nZ9q0aebzNmvWLPM4Y8eOdUyYMMExYMAAR+vWrZ3HVahQIUfLli0d/fv3N7dZtGiR40bheLJmzer4999/3bY/9thj5jnx+XeF48J2/O6ALl26mNfP9fcU3me4zYgRI9zui9e7dOnSjp9++umG95uIiMgXLEoRERH56MyZM47333/fkS9fPvOFDoUpzy+KrubNm2e+4OG2+MLduXNnx4oVK65ZlLKKFK5fPj2LDyhcedq6dat5rDfffNO5bffu3ea5UaAoXLiwW2EAxSico4CVXNHMm169epkvuam5j1VIwPPNnDnTcaPw2uKx5s+f79xmFXzi4+MdCQkJpoCDYoslNjbWXI/7ehaSMmfO7Fi4cKHjxRdfdHzzzTduRaXkTijKIVNXKA56FoOQLZ532bJljvLly5uigSfrfeBa9LFgG66rW7eu23YUpVIq/Hjux86dOx3Dhw9321a2bFnHa6+95jhw4IB5/6AwYxU/cWrQoIEpiOL9iOLP+fPnzf0uX77sqF69ultR6uTJk45NmzaZ1waFORTGrNeqbdu2zmLdli1bHDt27HDuA94PeBwUiHBMN998s7mMPPbt22cKu3gPu34m4McffzQFSVyHQqf1fty4cWOSz8GoUaOSFHBatWqV5DXCZ9v1s/bQQw8leV3btGljrkMx74477nAMGjTIHBt+H3iD1+pGoNiM/fCUXFFq6NChZvuqVavM5VtuucW8Rij2uX4W8F7/4Ycfkjwufh88/PDDN7TPREREvuL0PSIiIh/gH3LQywZTg2666SbTcwUNznG6FvSYwVQ/9PixVm7D9CVMY7KmX6HPEfr9YHoUpgWhSTUaSFtL1mPqlAV9oDD1D32AXFf48uyBhGlE2GdMt8K0IvScwXNa8uTJYx4D/XKw+hamEKLnFKbMAabveFt1z3UlP084DtwfU4Sw+p0r9GkCTD/DVEFfYYqd60pr+/btM1MO8RqhxxSe03M/MaUM09Wwj3hdXaciuU4HxHQ49JBCPzA0fMc5+upg+pPrNDVvU87w2J5TnFJapRDT97Bi3tSpU529sFwf33PfLK49o/C6ujayr1+/vpkO6AlTzjwbbWNq14ABA8zPmOKFaWV4LW+77TYpVaqUeZ2slQhdjxGvQ7Fixdwe6+WXXzZ9itCfDH2KAK+31V8L98M0x8qVK5vLmCKGbdZlV5hahimZmJqG6ZN4H998881mShqm4aFnFa7zNg0TPc+QH6aD3nvvvabfErL3F/QPa9OmjfnLine truncated
"text/plain": [
"<Figure size 1200x800 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"全球相对供给曲线关键点分析:\n",
"当相对价格 P_O/P_G < 0.33 时,两国都只生产葡萄,橙子相对供给为0\n",
"当相对价格 P_O/P_G = 0.33 时,B国开始有生产橙子的动力\n",
"当相对价格 0.33 < P_O/P_G < 1.33 时,B国生产葡萄,A国生产橙子,相对供给约为 375 单位橙子\n",
"当相对价格 P_O/P_G = 1.33 时,A国也开始只生产橙子,相对供给跃升至 525 单位橙子\n",
"当相对价格 P_O/P_G > 1.33 时,A国只生产橙子,B国也开始生产橙子,相对供给量达到全球最大值 525 并保持不变\n"
]
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# 设置中文字体\n",
"plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans']\n",
"plt.rcParams['axes.unicode_minus'] = False\n",
"\n",
"def plot_ppf():\n",
" \"\"\"绘制B国的产出可能性边界图\"\"\"\n",
" # B国参数\n",
" L_B = 900 # B国劳动单位总数\n",
" a_L_O_B = 6 # B国生产橙子的单位劳动量\n",
" a_L_G_B = 2 # B国生产葡萄的单位劳动量\n",
" \n",
" # 计算B国最大产量\n",
" max_oranges_B = L_B / a_L_O_B # 只生产橙子时的最大产量\n",
" max_grapes_B = L_B / a_L_G_B # 只生产葡萄时的最大产量\n",
" \n",
" # 创建图形\n",
" fig, ax = plt.subplots(1, 1, figsize=(10, 6))\n",
" \n",
" # 绘制B国PPF线\n",
" x_oranges = [0, max_oranges_B] # 橙子产量从0到最大值\n",
" y_grapes = [max_grapes_B, 0] # 葡萄产量对应从最大值到0\n",
" ax.plot(x_oranges, y_grapes, 'b-', linewidth=2, label='B国PPF')\n",
" \n",
" # 标记轴点\n",
" ax.plot(0, max_grapes_B, 'bo', markersize=8)\n",
" ax.text(0, max_grapes_B, f'({0}, {int(max_grapes_B)})', fontsize=10, ha='left', va='bottom')\n",
" ax.plot(max_oranges_B, 0, 'bo', markersize=8)\n",
" ax.text(max_oranges_B, 0, f'({int(max_oranges_B)}, {0})', fontsize=10, ha='right', va='top')\n",
" \n",
" # 添加斜率标注\n",
" slope = -max_grapes_B / max_oranges_B\n",
" ax.text(max_oranges_B/2, max_grapes_B/2, f'斜率 = {slope:.2f}', \n",
" fontsize=10, ha='center', va='center', bbox=dict(boxstyle='round', facecolor='wheat', alpha=0.8))\n",
" \n",
" # 设置图形属性\n",
" ax.set_xlabel('橙子产量', fontsize=12)\n",
" ax.set_ylabel('葡萄产量', fontsize=12)\n",
" ax.set_title('B国的产出可能性边界图 (PPF)', fontsize=14, fontweight='bold')\n",
" ax.grid(True, linestyle='--', alpha=0.6)\n",
" ax.legend()\n",
" \n",
" # 设置坐标轴范围\n",
" ax.set_xlim(-5, max_oranges_B * 1.1)\n",
" ax.set_ylim(-5, max_grapes_B * 1.1)\n",
" \n",
" plt.tight_layout()\n",
" plt.show()\n",
" \n",
" print(f\"B国最大橙子产量: {int(max_oranges_B)}\")\n",
" print(f\"B国最大葡萄产量: {int(max_grapes_B)}\")\n",
" print(f\"B国PPF斜率: {slope:.2f}\")\n",
" print(f\"斜率的绝对值表示B国的机会成本: 生产1单位橙子需放弃{-slope:.2f}单位葡萄\")\n",
" print()\n",
"\n",
"def plot_world_rs():\n",
" \"\"\"构建全球橙子与葡萄的相对供给曲线\"\"\"\n",
" # A国参数\n",
" L_A = 1500\n",
" a_L_O_A = 4\n",
" a_L_G_A = 3\n",
" \n",
" # B国参数\n",
" L_B = 900\n",
" a_L_O_B = 6\n",
" a_L_G_B = 2\n",
" \n",
" # 计算各国的单位劳动生产率\n",
" P_O_A = 1 / a_L_O_A # A国生产橙子的单位劳动生产率\n",
" P_G_A = 1 / a_L_G_A # A国生产葡萄的单位劳动生产率\n",
" P_O_B = 1 / a_L_O_B # B国生产橙子的单位劳动生产率\n",
" P_G_B = 1 / a_L_G_B # B国生产葡萄的单位劳动生产率\n",
" \n",
" # 计算各国的机会成本\n",
" OC_O_A = P_G_A / P_O_A # A国生产橙子的机会成本 (葡萄/橙子)\n",
" OC_O_B = P_G_B / P_O_B # B国生产橙子的机会成本 (葡萄/橙子)\n",
" OC_G_A = P_O_A / P_G_A # A国生产葡萄的机会成本 (橙子/葡萄)\n",
" OC_G_B = P_O_B / P_G_B # B国生产葡萄的机会成本 (橙子/葡萄)\n",
" \n",
" print(\"各国机会成本分析:\")\n",
" print(f\"A国生产橙子的机会成本: {OC_O_A:.3f} (葡萄/橙子)\")\n",
" print(f\"B国生产橙子的机会成本: {OC_O_B:.3f} (葡萄/橙子)\")\n",
" print(f\"A国生产葡萄的机会成本: {OC_G_A:.3f} (橙子/葡萄)\")\n",
" print(f\"B国生产葡萄的机会成本: {OC_G_B:.3f} (橙子/葡萄)\")\n",
" print()\n",
" \n",
" # 比较优势分析\n",
" if OC_O_A < OC_O_B:\n",
" print(\"比较优势分析:\")\n",
" print(\"A国在生产橙子上具有比较优势 (机会成本更低)\")\n",
" print(\"B国在生产葡萄上具有比较优势 (机会成本更低)\")\n",
" elif OC_O_B < OC_O_A:\n",
" print(\"比较优势分析:\")\n",
" print(\"B国在生产橙子上具有比较优势 (机会成本更低)\")\n",
" print(\"A国在生产葡萄上具有比较优势 (机会成本更低)\")\n",
" else:\n",
" print(\"两国在生产橙子上的机会成本相同,没有比较优势。\")\n",
" print()\n",
" \n",
" # 计算各国最大产量\n",
" max_oranges_A = L_A / a_L_O_A\n",
" max_grapes_A = L_A / a_L_G_A\n",
" max_oranges_B = L_B / a_L_O_B\n",
" max_grapes_B = L_B / a_L_G_B\n",
" \n",
" # 全球最大产量\n",
" world_max_oranges = max_oranges_A + max_oranges_B\n",
" world_max_grapes = max_grapes_A + max_grapes_B\n",
" \n",
" print(\"各国最大产量:\")\n",
" print(f\"A国最大橙子产量: {int(max_oranges_A)}\")\n",
" print(f\"A国最大葡萄产量: {int(max_grapes_A)}\")\n",
" print(f\"B国最大橙子产量: {int(max_oranges_B)}\")\n",
" print(f\"B国最大葡萄产量: {int(max_grapes_B)}\")\n",
" print(f\"全球最大橙子产量: {int(world_max_oranges)}\")\n",
" print(f\"全球最大葡萄产量: {int(world_max_grapes)}\")\n",
" print()\n",
" \n",
" # 构建相对价格轴 (P_Orange / P_Grape)\n",
" # 相对价格范围从B国葡萄的机会成本到A国葡萄的机会成本 (因为A国在橙子上具有比较优势,B国在葡萄上具有比较优势)\n",
" p_o_per_p_g_min = OC_G_B # B国生产葡萄的机会成本 (最低相对价格)\n",
" p_o_per_p_g_max = OC_G_A # A国生产葡萄的机会成本 (最高相对价格)\n",
" \n",
" # 定义相对价格点\n",
" p1 = p_o_per_p_g_min # B国葡萄机会成本\n",
" p2 = OC_O_A # A国橙子机会成本 (也是B国葡萄机会成本时的临界点)\n",
" p3 = p_o_per_p_g_max # A国葡萄机会成本\n",
" \n",
" # 相对供给量计算\n",
" # 在 p < p1 时,两国都只生产葡萄,Q_orange = 0\n",
" # 在 p1 <= p <= p2 时,B国只生产葡萄,A国生产橙子和葡萄,Q_orange = max_oranges_A * (p - p1) / (p2 - p1) (简化线性,实际为阶梯)\n",
" # 在 p2 < p <= p3 时,A国只生产橙子,B国只生产葡萄,Q_orange = max_oranges_A\n",
" # 在 p > p3 时,A国只生产橙子,B国生产橙子和葡萄,Q_orange = max_oranges_A + max_oranges_B * (p - p3) / (p3 * 1.5 - p3) (简化,实际为阶梯到最大)\n",
" \n",
" # 为了绘制阶梯状RS曲线,我们定义关键点\n",
" # p < p1: RS = 0 (橙子/葡萄)\n",
" # p = p1: RS从0跳跃到A国单独生产时的量 (A国生产部分橙子)\n",
" # p1 < p < p2: B国只生产葡萄,A国生产橙子,RS = max_oranges_A / max_grapes_B (A国生产所有橙子时)\n",
" # p = p2: RS从A国单独生产跳跃到A+B两国生产所有橙子\n",
" # p > p2: RS = (max_oranges_A + max_oranges_B) / 0 = 无穷大 (实际为B国也开始生产橙子后,量迅速增加)\n",
" \n",
" # 简化模型:绘制一个代表性的阶梯状RS曲线\n",
" # 1. p < p1: RS = 0\n",
" # 2. p = p1: B国开始生产橙子,RS开始增加\n",
" # 3. p1 < p < p2: A国生产橙子,B国生产葡萄,RS = max_oranges_A / max_grapes_B\n",
" # 4. p = p2: A国也只生产橙子,RS = max_oranges_A / (A国生产葡萄的量) -> 无穷 (在图中表现为垂直线)\n",
" # 5. p > p2: A国只生产橙子,B国生产橙子,RS非常大 (水平线在最高点)\n",
" \n",
" rel_price = [0, p1, p1, p2, p2, p2*1.5] # 相对价格 (P_Orange/P_Grape)\n",
" rel_supply = [0, 0, max_oranges_A, max_oranges_A, world_max_oranges, world_max_oranges] # 相对供给量 (橙子/葡萄)\n",
" \n",
" # 创建图形\n",
" fig, ax = plt.subplots(1, 1, figsize=(12, 8))\n",
" \n",
" # 绘制相对供给曲线 (阶梯状)\n",
" ax.plot(rel_price, rel_supply, 'r-', linewidth=2, label='世界相对供给曲线 (RS)', drawstyle='steps-post')\n",
" \n",
" # 标记关键点\n",
" ax.plot([p1, p1], [0, max_oranges_A], 'r--', linewidth=1)\n",
" ax.plot([p2, p2], [0, world_max_oranges], 'r--', linewidth=1)\n",
" ax.plot([0, p1], [max_oranges_A, max_oranges_A], 'r--', linewidth=1)\n",
" ax.plot([p1, p2], [max_oranges_A, max_oranges_A], 'r--', linewidth=1)\n",
" \n",
" ax.plot(p1, max_oranges_A, 'ro', markersize=8, label=f'关键点1: (p={p1:.2f}, Q={int(max_oranges_A)})')\n",
" ax.plot(p2, world_max_oranges, 'ro', markersize=8, label=f'关键点2: (p={p2:.2f}, Q={int(world_max_oranges)})')\n",
" \n",
" # 添加文字标注\n",
" ax.annotate(f'B国开始生产\\n橙子 (p={p1:.2f})', xy=(p1, 0), xytext=(p1*0.7, max_oranges_A*0.3),\n",
" arrowprops=dict(arrowstyle='->', color='blue', lw=1),\n",
" fontsize=10, ha='center', bbox=dict(boxstyle='round,pad=0.3', facecolor='lightblue', alpha=0.8))\n",
" \n",
" ax.annotate(f'A国开始只生产\\n橙子 (p={p2:.2f})', xy=(p2, max_oranges_A), xytext=(p2*1.2, world_max_oranges*0.7),\n",
" arrowprops=dict(arrowstyle='->', color='red', lw=1),\n",
" fontsize=10, ha='center', bbox=dict(boxstyle='round,pad=0.3', facecolor='mistyrose', alpha=0.8))\n",
" \n",
" # 设置图形属性\n",
" ax.set_xlabel('相对价格 (P_橙子 / P_葡萄)', fontsize=12)\n",
" ax.set_ylabel('相对供给量 (橙子 / 葡萄)', fontsize=12)\n",
" ax.set_title('全球橙子与葡萄的相对供给曲线 (RS)', fontsize=14, fontweight='bold')\n",
" ax.grid(True, linestyle='--', alpha=0.6)\n",
" ax.legend(loc='upper left')\n",
" \n",
" # 设置坐标轴比例,使图形更清晰\n",
" ax.set_xlim(0, max(rel_price)*1.1)\n",
" ax.set_ylim(0, max(rel_supply)*1.1)\n",
" \n",
" plt.tight_layout()\n",
" plt.show()\n",
" \n",
" print(\"全球相对供给曲线关键点分析:\")\n",
" print(f\"当相对价格 P_O/P_G < {p1:.2f} 时,两国都只生产葡萄,橙子相对供给为0\")\n",
" print(f\"当相对价格 P_O/P_G = {p1:.2f} 时,B国开始有生产橙子的动力\")\n",
" print(f\"当相对价格 {p1:.2f} < P_O/P_G < {p2:.2f} 时,B国生产葡萄,A国生产橙子,相对供给约为 {int(max_oranges_A)} 单位橙子\")\n",
" print(f\"当相对价格 P_O/P_G = {p2:.2f} 时,A国也开始只生产橙子,相对供给跃升至 {int(world_max_oranges)} 单位橙子\")\n",
" print(f\"当相对价格 P_O/P_G > {p2:.2f} 时,A国只生产橙子,B国也开始生产橙子,相对供给量达到全球最大值 {int(world_max_oranges)} 并保持不变\")\n",
"\n",
"if __name__ == \"__main__\":\n",
" print(\"=\"*50)\n",
" print(\"a. B国的产出可能性边界图\")\n",
" print(\"=\"*50)\n",
" plot_ppf()\n",
" \n",
" print(\"=\"*50)\n",
" print(\"b. 全球橙子与葡萄的相对供给曲线\")\n",
" print(\"=\"*50)\n",
" plot_world_rs()\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c77dc5b9-5d23-4252-94e3-b2ac5fa421b1",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}