2変数の定積分
例題として、2変数の定積分を考えてみましょう。
以下の関数を考えます:
$$
f(x, y) = x^2 + y^2
$$
そして、この関数を$ [x \in [-2, 2], y \in [-2, 2]] $の範囲で積分してみます。
Pythonで積分を計算し、結果をグラフ化するためには、SciPyとmatplotlibを使用します。
以下がそのコード例です:
1 | import numpy as np |
このコードでは、dblquad
を使用して2変数の積分を計算しています。
そして、plot_surface
メソッドを使用して関数の3Dプロットを作成しています。
プログラムを実行すると、積分の結果が表示され、関数がどのように分布しているかがグラフで視覚化されます。
[実行結果]
ソースコード解説
このソースコードは、Pythonを使用して2変数の関数を定積分し、その結果を3Dグラフ化するサンプルコードです。
以下に、コードの各部分の説明を示します。
1 | import numpy as np |
まず、必要なライブラリをインポートしています。
numpy
は数値計算を効率的に行うためのライブラリ、scipy
は科学技術計算のためのライブラリ、matplotlib
はグラフの描画のためのライブラリ、Axes3D
は3Dグラフを描画するためのサブモジュールです。
1 | # 積分する関数 |
integrand
という関数を定義しています。
この関数は、2変数$ [x, y] $に対して$ [x^2 + y^2] $を返します。
これが積分対象の関数です。
1 | # 積分範囲 |
x_range
およびy_range
で積分の範囲を指定しています。
この例では、$ [x \in [-2, 2]] $および$ [y \in [-2, 2]] $の範囲で積分を行います。
1 | # 積分計算 |
integrate.dblquad
関数を使用して2重積分を計算しています。dblquad
は2変数関数の定積分を計算する関数で、第一引数に積分対象の関数integrand
、次に$ [x] $の範囲、そしてその後に$ [y] $の範囲を指定します。
積分結果はresult
に格納されます。
1 | print("積分の結果:", result) |
計算結果をコンソールに出力しています。
1 | # グラフ化 |
グラフを描画するために、$ [x] $と$ [y] $の値を生成しています。linspace
関数を使用して、指定された範囲内に等間隔の点を生成しています。meshgrid
関数を使用して、これらの点から座標行列$ [X, Y] $を作成し、それを用いて関数の値$ [Z] $を計算しています。
1 | fig = plt.figure() |
最後に、matplotlib
を使用して3Dグラフを描画しています。plot_surface
メソッドを使用して、$ [X, Y, Z] $の3次元座標で関数をプロットし、その他のオプションでグラフのスタイルを調整しています。
最終的にplt.show()
でグラフを表示します。
結果解説
[実行結果]
積分の結果が$ 42.666666666666664 $と表示されました。
これは、関数$ [ f(x, y) = x^2 + y^2 ] $を範囲$ [x \in [-2, 2], y \in [-2, 2]] $で積分した値です。
この積分は、与えられた領域で関数の値を足し合わせることに相当します。
この場合、積分結果が数値で表示されるため、具体的な意味が直感的には理解しにくいかもしれません。
しかし、この数値は範囲内で関数が取る面積や体積に相当します。
積分が正の値であることから、関数$ [ f(x, y) = x^2 + y^2 ] $が指定された範囲で正の値を取り、範囲内の領域の面積が正であることを示しています。
グラフは、積分対象の関数$ [ f(x, y) = x^2 + y^2 ] $の3Dプロットを示しています。
この関数は放物面であり、中心が原点で、$ [ x ] $と$ [ y ] $の値が大きくなるほど関数の値が増加します。
したがって、グラフは中心から外側に向かって放物線が立体的に広がる形状をしています。
この例での積分とグラフは、数学的な計算と視覚的な理解を結びつけるものであり、積分が関数の形状や領域に対する面積や体積の計算にどのように寄与するかを示しています。