Java:
複素数の扱い方
方法:
Javaには複素数をサポートする組み込みの機能はありませんが、自分自身のクラスを作成するか、ライブラリを使用することができます。ここでは、シンプルなComplexNumber
クラスを作成して使用するための簡単な例を示します:
public class ComplexNumber {
private double real;
private double imaginary;
public ComplexNumber(double real, double imaginary) {
this.real = real;
this.imaginary = imaginary;
}
public ComplexNumber add(ComplexNumber other) {
return new ComplexNumber(this.real + other.real, this.imaginary + other.imaginary);
}
// ToString to display complex numbers in a + bi form
@Override
public String toString() {
return String.format("%.1f + %.1fi", real, imaginary);
}
// Quick test
public static void main(String[] args) {
ComplexNumber c1 = new ComplexNumber(2, 3);
ComplexNumber c2 = new ComplexNumber(1, 4);
System.out.println("Sum: " + c1.add(c2));
}
}
メインメソッドのサンプル出力は以下の通りです:
Sum: 3.0 + 7.0i
深掘り
Javaのような高水準言語が登場する前、プログラマーはFortranやCのような言語で数学ライブラリを直接使用して複雑な操作を管理していました。この概念は16世紀に遡り、Gerolamo CardanoやRafael Bombelliのような数学者によって功績があるとされています。
Javaでは、java.lang.Math
が基本的なニーズに対するゴールドスタンダードですが、複素数はスキップしています。おそらく、すべてのプログラマーがそれらを使用するわけではないからでしょう。代替手段?ライブラリを使用します。Apache Commons Mathは、操作のための多くのメソッドを備えたComplex
クラスを提供します。ただし、独自に作成することの利点は次のとおりです:軽量で、正確なニーズに合わせて調整可能、ライブラリのオーバーヘッドがありません。
重要な詳細の1つ:浮動小数点の精度に注意してください。コンピューターはいくつかの数値を正確に表現することができず、丸め誤差を引き起こします。繰り返し複合操作を実行するとき、これらの誤差が蓄積する可能性があります!
参照
より深い潜入とより複雑な操作については、以下をチェックしてください:
- Apache Commons Math
- JScienceのComplexクラス
- Oracleのチュートリアル 浮動小数点算術