関数のグラフを描く

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

  • Python言語の関数の作成方法
  • 与えられる数学関数のグラフの描画方法

Pythonの教科書の使用

  • 関数の作成:第3章の2節(62ページから65ページまで)を参考してください。当該章の他の節(section)について、読んでみてください。

1. Python言語の関数

1.1 Python言語の関数とは

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

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

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

In [1]:
#例:pow 関数
value = pow(8,3)
print(value)
512

1.2 Python関数の定義

Pythonの関数定義は以下の構文を使います。(def: define)

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

構文に関する説明

  • 関数の中身はインデント付きのコードブロックに書くべきです。
  • 引数の数は一つでも良いです。引数がなくても良い。
  • 関数の返り値がなくても良いです。

1.3 関数定義の例

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

In [3]:
#関数の例
def my_pow(x):
  value = x*x*x
  return value
In [26]:
#定義される関数を呼び出します。
my_pow(10)
Out[26]:
1000

演習1

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

In [12]:
#演習1.1 のコードをここに書いてください。

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

In [27]:
#演習1.2 のコードをここに書いてください。
#以下の雛コードに書かれている pass は「何もしない」を意味しています。演習するとき、passを消してください。
def my_sum(n):
    pass
In [28]:
my_sum(5000)

2. 関数のグラフを描く

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

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

In [15]:
h=0.01
x_list=[]
n_list = range(0,101)
for n in n_list:
    x = n*h
    x_list.append(x)
#print(x_list)

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

In [18]:
import math
y_list=[]
for x in x_list:
    y=math.exp(x)
    y_list.append(y)
#print(y_list)

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

In [21]:
import matplotlib.pyplot as plt

plt.plot(x_list, y_list,'b-')
plt.grid()
plt.show()

上記のコードをまとめて、グラフを作成する関数を定義します。

In [22]:
def draw_exp():
    #x_listを作成します。
    h=0.01
    x_list=[]
    n_list = range(0,101)
    for n in n_list:
        x_list.append(n*h)

    #y_listを作成します。
    import math
    y_list=[]
    for x in x_list:
        y=math.exp(x)
        y_list.append(y)


    #x_list,y_listのグラフを作成します。
    import matplotlib.pyplot as plt

    plt.plot(x_list, y_list,'b-')
    plt.grid()
    plt.show()
In [24]:
draw_exp()

演習2 (レポート課題)

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

演習2.1

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

  • $\sqrt{x}$の数学関数は math.sqrt(x)です。注意:パッケージの導入「import math」が必要です。
In [69]:
#Square root (sqrt)の使用方法
import math
print(math.sqrt(3))

def my_f(x):
    #ここに数学関数の計算法を書いて
    pass
1.7320508075688772

演習2.2

  • 関数 my_f(x) を利用して、$[0,1]$における$y=f(x)$のグラフを作成するPythonの関数draw_f()を作ってください。
In [25]:
#演習2.2 のコードをここに書いてください。
def draw_f():
    pass

演習2.3 (オプション)

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

In [29]:
#演習2.3 のコードをここに書いてください。
def draw_f(a,b):
    pass