解答例

演習1:

Numpyを利用して、以下の関数のグラフを描いてください。 $$ f(x)=sin(x^3)cos(x)+1, \quad x \in [1,2] $$

In [11]:
#演習1の解答

import numpy as np

x1 = np.linspace(1,2,21)
y1 = np.sin(x1**3)*np.cos(x1)+1

import matplotlib.pyplot as plt
plt.plot(x1,y1,"g-+")
plt.grid()
plt.show()

演習2(option)

$[0,1]$の100分割に利用して、以下の関数の積分の近似値を求めてください。ただし、forループを使用しなく、Numpyの関数sin,sumなどを使用してください。

$$ \int_{0}^1 \sin(x^3) dx $$

In [6]:
#演習2の解答

import numpy as np

n=101
h=1/(n-1)

x = np.linspace(0,1,n)
y = np.sin(x**3)

print(x)
print("積分の近似値=", np.sum(y)*h)
[ 0.    0.01  0.02  0.03  0.04  0.05  0.06  0.07  0.08  0.09  0.1   0.11
  0.12  0.13  0.14  0.15  0.16  0.17  0.18  0.19  0.2   0.21  0.22  0.23
  0.24  0.25  0.26  0.27  0.28  0.29  0.3   0.31  0.32  0.33  0.34  0.35
  0.36  0.37  0.38  0.39  0.4   0.41  0.42  0.43  0.44  0.45  0.46  0.47
  0.48  0.49  0.5   0.51  0.52  0.53  0.54  0.55  0.56  0.57  0.58  0.59
  0.6   0.61  0.62  0.63  0.64  0.65  0.66  0.67  0.68  0.69  0.7   0.71
  0.72  0.73  0.74  0.75  0.76  0.77  0.78  0.79  0.8   0.81  0.82  0.83
  0.84  0.85  0.86  0.87  0.88  0.89  0.9   0.91  0.92  0.93  0.94  0.95
  0.96  0.97  0.98  0.99  1.  ]
積分の近似値= 0.238066108948

演習3(option)

以下の行列Aに関わる連立一次方程式$Ax=b$の解を計算しなさい。

ヒント:

  • numpy.linalg.inv()を利用して行列の逆行列を計算できれば、連立一次方程式の解を算出できます。
  • numpy.linalg.solve()を調べて、

$$ Ax=b, \quad A = \left( \begin{array}{ccc} 2 & 1 & 0 \\ 1 & 2 & 1 \\ 0 & 1 & 2 \\ \end{array} \right) ,\quad b = \left( \begin{array}{c} 1\\ 2\\ 3\\ \end{array} \right) $$

In [8]:
#演習3の解答

import numpy as np

A = [[2,1,0],[1,2,1],[0,1,2]]
b = [1,2,3]
x = np.linalg.inv(A)@b

#np.set_printoptions(suppress=True)  #小数表示

print("x =",x)
print("x =",np.linalg.solve(A,b))
x = [  5.00000000e-01   4.44089210e-16   1.50000000e+00]
x = [  5.00000000e-01   1.48029737e-16   1.50000000e+00]