前回に引き続き、今回も Complex クラスを見ていきます。 今回扱うのは、Complex クラスに定義されている一価の複素関数。
複素関数のメソッド
今回見ていく関数:public class Complex{ ... // 指数関数 Complex exp() // 三角関数 Complex sin() Complex cos() Complex tan() // 双曲線関数 Complex sinh() Complex cosh() Complex tanh() }
これらはすべて一価関数です。 つまり、1つの引数に対して返り値が一意に定まります。 次回にみる多価関数は、数学上は1つの引数に対していくつかの返り値の候補がありますが、commons-math では(通常そうするように)主値をとって返す値を1つに定めています。
サンプル
いくつかメソッドを見繕ってサンプルを書いてみました:import static java.lang.Math.* // 指数関数 assert new Complex(0d, PI/2d).exp() == Complex.I // exp(iπ/2) = i // 三角関数 assert new Complex(2d, 0d).sin() == new Complex(sin(2d), 0d) // 実数値の三角関数と等しい assert new Complex(0d, 2d).sin() == new Complex(0d, sinh(2d)) // sin(2i) = i sinh(2) // 双曲線関数 assert new Complex(2d, 0d).sinh() == new Complex(sinh(2d), 0d) // 実数値の双曲線関数と等しい assert new Complex(0d, 2d).sinh() == new Complex(0d, sin(2d)) // sinh(2i) = i sin(2)
ちょっと込み入ってる部分もありますが、コンストラクタで Complex オブジェクトを生成しようとすると仕方がないですぅ。 各関数について以下で少し数学をしてます。
指数関数 Exponential Function
上記の複素関数を1つずつ見ていきましょう。 まず指数関数。 これは以下で出てくる三角関数や双曲線関数の基本となる関数です。 複素変数の指数関数はもともと冪級数によって定義がなされてますが、他の関数への応用を考える場合はオイラーの公式を基本にすると分かりやすいでしょう(複素変数の指数関数を定義する冪級数からこのオイラーの公式が導けるのでやってることは同じですが)。
実部・虚部での表現
引数の複素数を ( は実数)として、 の値を と実数関数(引数に実数をとり、実数を返す関数とします)によって表すと
となります。
三角関数 Trigonometric Functions
次は三角関数。 オイラーの公式を使えば、三角関数と指数関数とは密接に関係していることが分かります。指数関数との関係
実部・虚部での表現
の表式は、導くのに三角関数、双曲線関数の倍角の公式が必要です。
双曲線関数 Hyperbolic Functions
最後は双曲線関数。 三角関数よりはなじみがないかも知れませんが、指数関数との関係を見ると兄弟みたいなモノです。 むしろ三角関数よりも簡単かも。 要は慣れですね。指数関数との関係
三角関数との関係
実部・虚部での表現
まぁ、三角関数の所で見た関係式と同じようなのばっかりですね。
- 作者: 奥村晴彦,杉浦方紀,津留和生,首藤一幸,土村展之
- 出版社/メーカー: 技術評論社
- 発売日: 2003/05
- メディア: 単行本
- 購入: 2人 クリック: 61回
- この商品を含むブログ (61件) を見る
- 作者: 杉浦光夫
- 出版社/メーカー: 東京大学出版会
- 発売日: 1980/03/31
- メディア: 単行本
- 購入: 3人 クリック: 64回
- この商品を含むブログ (47件) を見る