• 締切済み

javaの課題。。

Java課題です。お願いします。 複素数クラスを作り、二次方程式の虚数解を求めるプログラムを書け。 以下、本プログラムの仕様。 メソッドとして以下の四則演算を定義すること。 Complex plus(Complex c) Complex minus(Complex c) Complex mul(Complex c) Complex div(Complex c) また、複素数の平方根を計算するメソッド Complex sqrt() も定義すること。虚数部が 0 の場合(実数の場合)のみに対応すればよい。 実数の平方根はMath.sqrtを使ってよい。 二次方程式の解を求めるプログラムでは 3 つの係数(実数)を入力 させ、その数値から複素数オブジェクトを作って計算を行うこと。

みんなの回答

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

やっつけでコンパイルもしていないのですが、Complexクラスを作成してみました。あとはこれを使って二次方程式の解の公式を書けばいいと思います。 class Complex { private double r; private double arg; public Complex(double x, double y) { r = Math.sqrt(x * x + y * y); if ((x == 0.0) && (y == 0.0)){ arg = 0.0; } else { arg = Math.atan2(x, y); } } public Complex(double x) { r = x; arg = 0.0; } private Complex(double r, double arg, bool foo) { this.r = r; this.arg = arg; while (arg < - Math.PI) arg += Math.PI; while (- Math.PI < arg) arg -= Math.PI; } public double getX() { return r * Math.sin(arg); } public double getY() { return r * Math.cos(arg); } public double getR() { return r; } public double getArg() { return arg; } Complex plus(Complex c) { return new Complex(getX() + c.getX(), getY() + c.getY()); } Complex minus(Complex c) { return new Complex(getX() - c.getX(), getY() - c.getY()); } Complex mul(Complex c) { return new Complex(r * c.getR(), arg + c.getArg(), false); } Complex div(Complex c) { return new Complex(r / c.getR(), arg - c.getArg(), false); } Complex sqrt() { return new Complex(Math.sqrt(r), arg / 2.0, false); } } ……極形式を使っちゃいけないって言われてないよね?