JAVA プログラミング 入門

JAVAのプログラミングについて初歩から解説します。まずは、mainメソッド、変数、演算、if文、for文、while文、メソッド、配列など。続いて、メソッドを複数構成して、プログラムを作成(非オブジェクト指向プログラミング)、しばらく後になると思いますが、オブジェクト指向プログラミングを解説します。 クラスの構成、コンストラクター、継承、・・・、など、本格的OOP(Object Oriented Programming)を解説します。

数値積分による円の面積の計算

台形の面積の計算法を使って円の面積を近似する

Prog10_1_sekibunは半径1の単位円である。

f:id:Kurokawa_Tomio:20190622151803p:plain

図Prog10_1_sekibun

X軸上の二つの点A(Xi,0)B(Xi+1,0)からX軸に垂線を引き,円と交わったところをD(Xi,f(Xi)), C(Xi+1,f(Xi+1))としている。ADBCは平行であるから、四角形ABCDは台形を構成している。この台形の高さはa=Xi+1-Xiである。aを一定にしたこのような台形をn個描くとすると幅(台形の高さ)1/nとなる。ただし、最初の台形のA点は原点(0,0),二つ目の台形のA点は(1/n, 0),三つ目の台形のA点は(2/n, 0),…,最後の台形のA点は((n-1)/n, 0),B点は(n/n, 0)これらnの台形の面積の合計はnが十分に大きければ、円の面積のほぼ1/4となると考えることができる。従って、以下の ような手順での面積の近似計算をすることができる。全ての台形の面積の合計Totalは以下の式で表すことができる

f:id:Kurokawa_Tomio:20190622151928p:plain

図Prog10_1_shiki

式1はn個の台形の合計面積、式2は一つ一つの台形の面積、式3は点Aにの台形の下底の長さ、式4は台形の上底の長さ、式5は(x,0)における円上の+y座標。

Prog10_1_srcは単位円の面積を数値積分により計算するプログラムである。プログラムの末尾に実行結果が表示されています。

f:id:Kurokawa_Tomio:20190622152340p:plain

図Prog10_1_src

式1の計算手順をプログラム化したものが、図Prog10_1_srcのメソッドen_area()である。

 

Prog10_1_srcについて:

3,4行 x1,x2doubleで、nintで宣言しています。

5行 メソッドf(x)Math.sqrt(1.0-x*x)としています。これは単位円のグラフにおけるy座標に相当します。上の式5です。MathJavaが用意しているライブラリーの標準パッケージのMathクラスです。sqrtはそこにあるメソッドです。

6行 メソッドdaikei()は台形の面積の計算式に相当します。

7から16行 全ての台形(0からn-1)の合計の4倍です。

27から29行 実行結果です。

27行 n=1のとき、面積は四つの三角形の合計で2.0になります。

n=10 のとき、面積は3.10...

n=100000のとき 面積は3.141592… かなり精度が上がっています。単位円の面積はπであるから、ほぼ正しいと結果と言えるでしょう。

JAVA PROGRAMMING 入門 TOP へ