関数のグラフを描く

本日の授業では、以下の内容を解説します。

(2つの「関数」の意味は異なることに注意してください。)

Pythonの教科書の使用

1. Python言語の関数

1.1 Python言語の関数とは

関数は「データを受け取って、処理を行い、結果を返す」という機能を持つ仕組みです。

例えば、pow(x,n)関数は与えられる変数$x$と$n$に対して、$x^n$の値を計算してくれます。この例における$x$と$n$のことを「引数」、関数の返す値$x^n$のことを「返り値」(または「戻り値」)と呼びます。

関数を使えば、プログラミング言語に予め用意されている計算法を容易に利用できます。また、関数を使うと、OSの機能も利用できます。例えば、print()関数を使って、与えられる変数の値を画面に出力できます。

1.2 関数の定義方法

Pythonの関数定義には、以下の構文を使います(defはdefineを意味します)。

def 関数名(引数1,引数2,…):
  関数の中の処理
  return 返り値

構文に関する説明

1.3 関数定義の例

与えられる変数$x$の3乗を返す関数を作ってみます。

演習1

1.1 与えられる引数$x$,$y$に対して、10*$x$+$y$を返す関数を作りなさい。関数名を「my_add」とします。また、定義された関数をmy_add(5,3)、my_add(9,1)で呼び出してみてください。

1.2 与えられる引数$n$に対して、$1$から$n$までの整数の和を計算して、その値を出力する関数 my_sum(n) を作成してください。この場合、返り値は不要です。

2. 関数のグラフを描く

関数$f(x)$のグラフは、曲線$y=f(x)$上の点列を使って表現できます。以下の例では、区間$[0,1]$における指数関数$\exp(x)$のグラフの描き方を説明します。

まず、区間$[0,1]$における等分割の点列x_listを作ります。等分割の間隔をh=0.01とします。

次に、曲線$y=\exp(x)$上の点のリストを作成するために、x_listに対するy_listを作成します。

最後に、x_listとy_listによって折れ線を描きます。

上記のコードをまとめて、$\exp(x)$のグラフを描画する関数を定義します。

演習2 (レポート課題)

関数$f(x)=\sqrt{x}+1$のグラフの描画を考えます。

演習2.1

与えられる引数$x$に対して、$\sqrt{x}+1$の値を返すPythonの関数my_f(x)を定義します。

演習2.2

関数my_f(x)を利用して、区間$[0,1]$における$f(x)$のグラフを描画するPythonの関数draw_f()を作成してください。

演習2.3 (オプション)

余裕のある方は、任意に指定された区間$[a,b]$における$f(x)$のグラフを描画するPythonの関数draw_f(a,b)を作成してください。

3. 複数のグラフを描く

複数の関数のグラフを同じ座標系に表示することが可能です。関数のグラフを区別するために、ラベル(label)と凡例(legend)を使用します。

以下では、$y=\sin(x)$と$y=\cos(x)$のグラフを描いています。ラベル(label)と凡例(legend)の使用方法を確認してください。

 演習3 (レポート課題)

この演習では、関数$y=\exp(x)$のテイラー展開多項式のグラフを描いて、テイラー展開多項式の性質を確認します。

以下の要求に従って、上記の関数のグラフを同じ図に描き、検討してください。

参考:テイラーの定理(Wikipediaのページ)

(ここに演習3のグラフに関する考察と結論を書いてください。)

4. Python関数の中の変数(オプション)

関数の中で使用する変数が関数の中で定義されていない場合、関数の外で定義されている変数が参照されます。 この時、関数の中でaの値を修正してはいけません。

関数の中で定義する変数の名前が既に関数の外で定義されている変数の名前と一致する場合、関数の中の変数と関数の外の変数とは「独立」に扱われます。

関数の中で関数の外の変数の値を修正したい場合には、[global]という宣言の使用が必要です。以下の例を参考にしてください。