【スマホでPython数学】 第7章 関数f(x)を定義してみる:def(デフ)命令
ここは数学的に気楽に流してもらっても結構です。
ただし、Pythonプラグラム的には基礎的な内容になります。
これまで、Sympyモジュールからいろいろな命令を取り出して使ってきました。このような命令をdef(デフ)命令を使う事で、自分で定義できます。
この章では、xの関数「$${f(x)}$$」を定義することにdef(デフもしくはデファイン)命令を使います。高校生になると、$${y=f(x)}$$というような書き方をします。「$${f(x)}$$」というのは変数$${x}$$によって変化する関数という意味です。
1.def(デフ)命令の型
Pythonの命令はインデント(右に行をずらす)することで、最初の命令の続きであることを示します。そのため、def命令では「def ○○:」で始まり、
次の行からはインデントして書きます。
from sympy import *
var('x')
def f(x):
return x**2 -3*x +2
returnは入力された値に従って、右の数字(数式)を返すだけです。
ごめんなさい、話を端折りました(笑)。
def命令の後の関数名は自分で好きなように付けて良いです。
カッコの中に変数を入れると、def命令以下の内容に影響します。
変数ということは、どんな数字でも入れられると言うことです(本当は文字でも大丈夫だけど)。ここで定義した$${f(x)}$$関数ではretun命令の右に記載した関数に$${x=3}$$を代入して、$${f(3)}$$の値を求めることができます。
f(3)
$${f(0)}$$や$${f(1)}$$, $${f(-3)}$$も求められます。
print(f(0),f(1),f(-3))
グラフを書いてみて$${f(0)}$$や$${f(1)}$$, $${f(-3)}$$の値が正しいか、確認してみましょう。
plot(f(x),(x,-4,1))

2.def命令で定義した関数に数字を入れてみる
あくまでも紹介なのですが、PythonでSympyモジュールよりもよく使われているモジュールにNumpy(ナンンパイ)とMatplotlib(マットプロットリブ・マットプロットライブラリ)というものがあります。ここでは$${f(x)}$$の値に適当な値を入れて、関数を点で表してみます。
from sympy import *
var('x')
def f(x):
return x**2 -3*x +2
こちらは先ほどのプログラムを流用しています。
import numpy as np
import matplotlib.pyplot as plt
numpyをnp、matplotlibの中のpyplotという命令をpltと省略して読み込んでいます。慣例的にこのような省略形を使うことが多いです。
x = np.linspace(-5,5,10)
これはnumpyの命令で、-5〜5までの数を10分割した数字をxに代入するというプログラムです。
それではこれでmatplotlibを使ってグラフを描いてみましょう。
plt.scatter(x,f(x))

今度は50分割してみます。
x = np.linspace(-5,5,50)

実はSympyはmatplotlibの美味しいところだけ使わせてもらっています。
数学をする人が簡単にグラフが描けるように調整したSympyのplot命令はPython(matplotlib)に詳しくない人にも優しく作られています。
まとめ
def命令はPythonの基本操作になります。まとめて命令を定義できるので簡単です。Pythonには複数のdef命令をまとめられるclass命令や○○.pyというPythonプログラムを書いておけば、いつものimport命令でモジュールとして取り込むこともできます。いつか、Pythonを使うようになったら勉強してみてください。