You need to perform arithmetic
with complex numbers. For example,
given the complex numbers A
,
B
, C
, and
E
and two equations shown in Figure 8-5, you need to find the real part of
F
and the imaginary part of
D
.
Use Commons Math Complex
and
ComplexMath
classes to represent complex numbers
and perform arithmetic using complex numbers. Use the
ComplexFormat
class to print the real and imaginary parts of a complex number. The
following example demonstrates the use of the
Complex
class to calculate D
and F
from Figure 8-5 using
arbitrary values for A
, B
,
C
, and E
:
import org.apache.commons.math.complex.Complex; import org.apache.commons.math.complex.ComplexFormat; Complex a = new Complex(2, 3); Complex b = new Complex(4, 5); Complex c = new Complex(0.3, 2); Complex e = new Complex(4, 4); Complex sum = a.add( b ); Complex d = c.divide( sum ); Complex f = e.multiply( d.conjugate( ) ); System.out.println( "D is: " + ComplexFormat.formatComplex( d ) ); System.out.println( "F is: " + ComplexFormat.formatComplex( f ) ); double realF = f.getReal( ); double imD = d.getImaginary( ); double answer = realF / imD; System.out.println( "Answer Re(F)/Im(D): " + NumberFormat.getInstance( ).format( answer ) );
The variables a
, b
,
c
, and e
are created using
arbitrary values, and an intermediate Complex
object sum
is calculated by adding
b
to a--a.add(b)
.
d
is calculated by dividing this intermediate
sum
by c
:
c.divide(sum)
. f
is calculated
by multiplying e
times the complex conjugate of
d
: e.multiply( d.conjugate( ) )
. The final answer is calculated by taking the real part
of f
(f.getReal( )
) and
dividing that by the imaginary part of d
:
d.getImaginary( )
. The previous example performs
complex arithmetic and prints the following to the console:
D is: 0.18 + 0.1i F is: 1.1 + 0.33i Answer Re(F)/Im(D): 11.417
The previous example used the ComplexFormat
class
to create a String
representation of a
Complex
object. This class allows you to print out
the complex number N
in the format
Re(N) + Im(N)i
. This class also has a
constructor that takes a String
to use instead of
“i.” In electrical engineering,
where “i” is frequently used to
refer to current, complex impedance is represented using a
“j” instead of an
“i.” To print a complex number
using a “j”, write the following
code:
Complex impedance = new Complex( 1.0, 2.0 ); ComplexFormat format = new ComplexFormat("j"); System.out.println( "Impedance: " + format.format( impedance ) );
The previous code prints the following output to the console:
Impedance: 1.0 + 2.0j
The Complex
object contains simple arithmetic
methods such as add( )
, subtract( )
, multiply( )
, divide()
, conjugate( )
, and negate( )
. More advanced methods are available as static methods on
the ComplexMath
class.
ComplexMath
includes trigonometric methods such as
sin( )
, sinh( )
, cos()
, and tan( )
, as well as methods to
calculate logarithms and to take the square root of a
Complex
object.
For more information about the ComplexMath
utility, see the Commons Math JavaDoc at http://jakarta.apache.org/commons/math/apidocs/index.html.
3.15.26.221