Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 導関数をPythonに実装する | 数理解析
Pythonによるデータサイエンスのための数学

book導関数をPythonに実装する

メニューを表示するにはスワイプしてください

Pythonでは、sympyを使用して導関数を記号的に計算し、matplotlibで可視化することができます。

1. 導関数の記号的計算

# Define symbolic variable x
x = sp.symbols('x')
# Define the functions
f1 = sp.exp(x)  
f2 = 1 / (1 + sp.exp(-x))  
# Compute derivatives symbolically
df1 = sp.diff(f1, x)  
df2 = sp.diff(f2, x)

解説:

  • xsp.symbols('x')で記号変数として定義;
  • sp.diff(f, x)関数はfxに関する導関数を計算;
  • これにより、Pythonで代数的に導関数を操作することが可能。

2. 関数およびその導関数の評価とプロット

# Convert symbolic functions to numerical functions for plotting
f1_lambda = sp.lambdify(x, f1, 'numpy')
df1_lambda = sp.lambdify(x, df1, 'numpy')
f2_lambda = sp.lambdify(x, f2, 'numpy')
df2_lambda = sp.lambdify(x, df2, 'numpy')

解説:

  • sp.lambdify(x, f, 'numpy') は記号関数を 数値関数 に変換し、numpy で評価可能にする;
  • これは matplotlib および numpy が記号式ではなく数値配列を扱うために必要。

3. 主要点での導関数評価の出力

計算を検証するため、x = [-5, 0, 5] における導関数の値を出力。

# Evaluate derivatives at key points
test_points = [-5, 0, 5]
for x_val in test_points:
    print(f"x = {x_val}: e^x = {f2_lambda(x_val):.4f}, e^x' = {df2_lambda(x_val):.4f}")
    print(f"x = {x_val}: sigmoid(x) = {f4_lambda(x_val):.4f}, sigmoid'(x) = {df4_lambda(x_val):.4f}")
    print("-" * 50)

1. 導関数をプロットする際に sp.lambdify(x, f, 'numpy') を使用する理由は何ですか?

2. f(x)=exf(x) = e^x とその導関数のグラフを比較したとき、次のうちどれが正しいですか?

question mark

導関数をプロットする際に sp.lambdify(x, f, 'numpy') を使用する理由は何ですか?

正しい答えを選んでください

question mark

f(x)=exf(x) = e^x とその導関数のグラフを比較したとき、次のうちどれが正しいですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  4

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  4
some-alt