Using Java ((Abstract Class and Interface)) 13.17 (Math: The complex class) A co
ID: 638820 • Letter: U
Question
Using Java ((Abstract Class and Interface))
13.17 (Math: The complex class)
A complaex number is a number in the from a + bi,
where a and b are real number i is square root of -1 . the number a and b are known
as the real part and imaginary oart of the comlex number, respectively, you can
perform addition, subtraction, multiplcation, and divison for complex number using the fllowing formulas:
a + bi + c + di = ( a + c) + (b + d )i
a - bi - c - di = ( a - c) - (b - d )i
(a + bi) * (c + di) = ( ac - bd ) + (bc + ad )i
(a + bi) / (c + di) = (ac + bd ) / (c^2 + d^2 ) + (bc - ad) i/ (c^2 + d^2)
you can also obtain the absolut value for a coplaex number using the fllowing formula:
|a + bi| = square root a^2 + b^2
(A complaex number can be interpreted as a point on plane by identifying the (a,b)
values as the coordinates of the point. The absolute of the number corresponds to the
distance of the point to the origin.) Desing a class named complex for representing complex
numbers and the method add, subtract, multiply, divide and ads for performing complex- number
oprations and override toString method for retuning a sting repre- sentation for Complex number.
The toSring method return (a + bi) as string. if b is 0, it simply returns a. Your Copmlex class
should also implement the Cloneable interface.
Explanation / Answer
public class ComplexDemo {
/** The program */
public static void main(String[] args) {
Complex c = new Complex(3, 5);
Complex d = new Complex(2, -2);
System.out.println(c);
System.out.println(c + ".getReal() = " + c.getReal());
System.out.println(c + " + " + d + " = " + c.add(d));
System.out.println(c + " + " + d + " = " + Complex.add(c, d));
System.out.println(c + " * " + d + " = " + c.multiply(d));
System.out.println(Complex.divide(c, d));
}
}
/** A class to represent Complex Numbers. A Complex object is
* immutable once created; the add, subtract and multiply routines
* return newly-created Complex objects containing the results.
*
*
*/
class Complex {
/** The real part */
private double r;
/** The imaginary part */
private double i;
/** Construct a Complex */
Complex(double rr, double ii) {
r = rr;
i = ii;
}
/** Display the current Complex as a String, for use in
* println() and elsewhere.
*/
public String toString() {
StringBuffer sb = new StringBuffer().append(r);
if (i>0)
sb.append('+'); // else append(i) appends - sign
return sb.append(i).append('i').toString();
}
/** Return just the Real part */
public double getReal() {
return r;
}
/** Return just the Real part */
public double getImaginary() {
return i;
}
/** Return the magnitude of a complex number */
public double magnitude() {
return Math.sqrt(r*r + i*i);
}
/** Add another Complex to this one
*/
public Complex add(Complex other) {
return add(this, other);
}
/** Add two Complexes
*/
public static Complex add(Complex c1, Complex c2) {
return new Complex(c1.r+c2.r, c1.i+c2.i);
}
/** Subtract another Complex from this one
*/
public Complex subtract(Complex other) {
return subtract(this, other);
}
/** Subtract two Complexes
*/
public static Complex subtract(Complex c1, Complex c2) {
return new Complex(c1.r-c2.r, c1.i-c2.i);
}
/** Multiply this Complex times another one
*/
public Complex multiply(Complex other) {
return multiply(this, other);
}
/** Multiply two Complexes
*/
public static Complex multiply(Complex c1, Complex c2) {
return new Complex(c1.r*c2.r - c1.i*c2.i, c1.r*c2.i + c1.i*c2.r);
}
/** Divide c1 by c2.
*
*/
public static Complex divide(Complex c1, Complex c2) {
return new Complex(
(c1.r*c2.r+c1.i*c2.i)/(c2.r*c2.r+c2.i*c2.i),
(c1.i*c2.r-c1.r*c2.i)/(c2.r*c2.r+c2.i*c2.i));
}
/* Compare this Complex number with another
*/
public boolean equals(Object o) {
if (!(o instanceof Complex))
throw new IllegalArgumentException(
"Complex.equals argument must be a Complex");
Complex other = (Complex)o;
return r == other.r && i == other.i;
}
/* Generate a hashCode; not sure how well distributed these are.
*/
public int hashCode() {
return (int)( r) | (int)i;
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.