1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ポケモンと微積とPython

Posted at

はじめに

本記事では、ポケモンの「色違い確率」の例を通して、
微分や指数関数の概念を直感的に理解できるような Python コードを紹介します。

確率関数の傾き(微分)を求め、**「色違いが出る確率がどのように変化するか」**を
コードで示します。

参考リンクまとめ

Pythonコード


import numpy as np
import matplotlib.pyplot as plt
from sympy import symbols, diff, simplify, lambdify

# -------------------------------
# Symbolic calculation with calculus / 微積分を使って記号計算
# -------------------------------

# 定義 / Define symbolic variable
N = symbols('N', real=True, positive=True)

# P(N) = 1 - (1 - 1/N)^N
P = 1 - (1 - 1/N)**N

# 微分 / Derivative dP/dN
dP_dN = diff(P, N)
dP_dN_simplified = simplify(dP_dN)

# 数値関数に変換 / Convert to numerical functions
P_func = lambdify(N, P, 'numpy')
dP_func = lambdify(N, dP_dN_simplified, 'numpy')

# -------------------------------
# Evaluate and plot / 数値評価とプロット
# -------------------------------

# Nの範囲 / Range of N
N_vals = np.linspace(1, 1000, 500)
P_vals = P_func(N_vals)
dP_vals = dP_func(N_vals)

# プロット: 確率 / Plot probability
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.plot(N_vals, P_vals, label='P(N)')
plt.xlabel('N')
plt.ylabel('Probability')
plt.title('Shiny Probability vs N')
plt.grid(True)
plt.legend()

# プロット: 微分値 / Plot derivative
plt.subplot(1, 2, 2)
plt.plot(N_vals, dP_vals, color='orange', label="dP/dN")
plt.xlabel('N')
plt.ylabel('dP/dN')
plt.title('Rate of Change of Shiny Probability')
plt.grid(True)
plt.legend()

plt.tight_layout()
plt.show()

# 結果の表示 / Show simplified derivative
dP_dN_simplified


final_N, final_P

結果
image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?