Given two Complex Numbers Z1 and Z2 in the Cartesian form, the task is to convert the given complex number into polar form and perform all the arithmetic operations ( addition, subtraction, multiplication, and division ) on them.
Examples:
Input: Z1 = (2, 3), Z2 = (4, 6)
Output:
Polar form of the first Complex Number: (3.605551275463989, 0.9827937232473292)
Polar form of the Second Complex Number: (7.211102550927978, 0.9827937232473292)
Addition of two Complex Numbers: (10.816653826391967, 0.9827937232473292)
Subtraction of two Complex Numbers: (3.605551275463989, -0.9827937232473292)
Multiplication of two Complex Numbers: (25.999999999999996, 1.9655874464946583)
Division of two Complex Numbers: (0.5, 0.0)Input: Z1 = (1, 1), Z2 = (2, 2)
Output:
Polar form of the first Complex Number: (1.4142135623730951, 0.7853981633974482)
Polar form of the Second Complex Number: (2.8284271247461903, 0.7853981633974482)
Addition of two Complex Numbers: (4.242640687119286, 0.7853981633974482)
Subtraction of two Complex Numbers: (1.4142135623730951, -0.7853981633974482)
Multiplication of two Complex Numbers: (4.000000000000001, 1.5707963267948963)
Division of two Complex Numbers: (0.5, 0.0)
Approach: The given problem can be solved based on the following properties of Complex Numbers:
- A complex number Z in Cartesian form is represented as:
,
where a, b € R and b is known as the imaginary part of the complex number and
- The polar form of complex number Z is:
where, r is known as modules of a complex number and
is the angle made with the positive X axis.
- In the expression of complex number in polar form taking r as common performing
the expression turn into: -
, which is known as the Eulerian form of the Complex Number. - The eulerian and polar forms both are represented as:
.
-
- The multiplication and divisions of two complex numbers can be done using the eulerian form:
For Multiplication:
=>For Division:
=>
Follow the steps below to solve the problem:
- Convert the complex numbers into polar using the formula discussed-above and print it in the form for
. - Define a function say Addition(Z1, Z2) to perform addition operation:
- Find the real part of the complex number by adding two real parts Z1 and Z2, and store it in a variable say a.
- Find the imaginary part of the complex number by adding two imaginary parts of the complex numbers Z1 and Z2 and store it in a variable say b.
- Convert the Cartesian form of the complex to polar form and print it.
- Define a function say Subtraction(Z1, Z2) to perform subtraction operation:
- Find the real part of the complex number by subtracting two real parts Z1 and Z2, and store it in a variable say a.
- Find the imaginary part of the complex number by subtracting two imaginary parts of the complex numbers Z1 and Z2 and store it in a variable say b.
- Convert the Cartesian form of the complex to polar form and print it.
- Print the multiplication of two complex number Z1 and Z2 as
- Print the Division of two complex number Z1 and Z2 as
Below is the implementation of the above approach:
#include <iostream> #include <cmath> using namespace std;
// Function to find the polar form // of the given Complex Number pair< double , double > get_polar_form( double re, double im){
// Z is in cartesian form
// Stores the modulo of complex number
double r = sqrt (re * re + im * im);
// If r is greater than 0
if (r){
double theta = asin (im / r);
return make_pair(r, theta);
}
// Otherwise
else {
return make_pair(0, 0);
}
} // Function to add two complex numbers pair< double , double > Addition(pair< double , double > z1, pair< double , double > z2){
// Z is in polar form
double r1 = z1.first;
double theta1 = z1.second;
double r2 = z2.first;
double theta2 = z2.second;
// Real part of complex number
double a = r1 * cos (theta1) + r2 * cos (theta2);
// Imaginary part of complex Number
double b = r1 * sin (theta1) + r2 * sin (theta2);
// Find the polar form
return get_polar_form(a, b);
} // Function to subtract two // given complex numbers pair< double , double > Subtraction(pair< double , double > z1, pair< double , double > z2){
// Z is in polar form
double r1 = z1.first;
double theta1 = z1.second;
double r2 = z2.first;
double theta2 = z2.second;
// Real part of the complex number
double a = r1 * cos (theta1) - r2 * cos (theta2);
// Imaginary part of complex number
double b = r1 * sin (theta1) - r2 * sin (theta2);
// Converts (a, b) to polar
// form and return
return get_polar_form(a, b);
} // Function to multiply two complex numbers pair< double , double > Multiplication(pair< double , double > z1, pair< double , double > z2){
// z is in polar form
double r1 = z1.first;
double theta1 = z1.second;
double r2 = z2.first;
double theta2 = z2.second;
// Return the multiplication of Z1 and Z2
return make_pair(r1 * r2, theta1 + theta2);
} // Function to divide two complex numbers pair< double , double > Division(pair< double , double > z1, pair< double , double > z2){
// Z is in the polar form
double r1 = z1.first;
double theta1 = z1.second;
double r2 = z2.first;
double theta2 = z2.second;
// Return the division of Z1 and Z2
return make_pair(r1 / r2, theta1 - theta2);
} // Driver Code int main() {
pair< double , double > z1 = make_pair(2.0, 3.0);
pair< double , double > z2 = make_pair(4.0, 6.0);
// Convert into Polar Form
auto z1_polar = get_polar_form(z1.first, z1.second);
auto z2_polar = get_polar_form(z2.first, z2.second);
cout << "Polar form of the first Complex Number: " << z1_polar.first << " " << z1_polar.second << endl;
cout << "Polar form of the Second Complex Number: " << z2_polar.first << " " << z2_polar.second << endl;
cout << "Addition of two Complex Numbers: " << Addition(z1_polar, z2_polar).first << " " << Addition(z1_polar, z2_polar).second << endl;
cout << "Subtraction of two Complex Numbers: " << Subtraction(z1_polar, z2_polar).first << " " << Subtraction(z1_polar, z2_polar).second << endl;
cout << "Multiplication of two Complex Numbers: " << Multiplication(z1_polar, z2_polar).first << " " << Multiplication(z1_polar, z2_polar).second << endl;
cout << "Division of two Complex Numbers: " << Division(z1_polar, z2_polar).first << " " << Division(z1_polar, z2_polar).second << endl;
return 0;
} // This code is contributed by phasing17. |
import java.util.*;
class GFG {
// Function to find the polar form of the given Complex Number
public static double [] GetPolarForm( double re, double im) {
// Z is in cartesian form
// Stores the modulo of complex number
double r = Math.sqrt(re * re + im * im);
// If r is greater than 0
if (r > 0 ) {
double theta = Math.asin(im / r);
return new double [] {r, theta};
}
// Otherwise
else {
return new double [] { 0.00 , 0.00 };
}
}
// Function to add two complex numbers
public static double [] Addition( double [] z1, double [] z2) {
// Z is in polar form
double r1 = z1[ 0 ];
double theta1 = z1[ 1 ];
double r2 = z2[ 0 ];
double theta2 = z2[ 1 ];
// Real part of complex number
double a = r1 * Math.cos(theta1) + r2 * Math.cos(theta2);
// Imaginary part of complex Number
double b = r1 * Math.sin(theta1) + r2 * Math.sin(theta2);
// Find the polar form
return GetPolarForm(a, b);
}
// Function to subtract two given complex numbers
public static double [] Subtraction( double [] z1, double [] z2) {
// Z is in polar form
double r1 = z1[ 0 ];
double theta1 = z1[ 1 ];
double r2 = z2[ 0 ];
double theta2 = z2[ 1 ];
// Real part of the complex number
double a = r1 * Math.cos(theta1) - r2 * Math.cos(theta2);
// Imaginary part of complex number
double b = r1 * Math.sin(theta1) - r2 * Math.sin(theta2);
// Converts (a, b) to polar form and return
return GetPolarForm(a, b);
}
// Function to multiply two complex numbers
public static double [] Multiplication( double [] z1, double [] z2) {
// z is in polar form
double r1 = z1[ 0 ];
double theta1 = z1[ 1 ];
double r2 = z2[ 0 ];
double theta2 = z2[ 1 ];
// Return the multiplication of Z1 and Z2
return new double [] {r1 * r2, theta1 + theta2};
}
// Function to divide two complex numbers
public static double [] Division( double [] z1, double [] z2) {
// Z is in the polar form
double r1 = z1[ 0 ];
double theta1 = z1[ 1 ];
double r2 = z2[ 0 ];
double theta2 = z2[ 1 ];
// Return the division of Z1 and Z2
return new double [] {r1 / r2, theta1 - theta2};
}
public static void main(String[] args) {
double [] z1 = { 2.0 , 3.0 };
double [] z2 = { 4.0 , 6.0 };
// Convert into Polar Form
var z1_polar = GetPolarForm(z1[ 0 ], z1[ 1 ]);
var z2_polar = GetPolarForm(z2[ 0 ], z2[ 1 ]);
System.out.println(
"Polar form of the first Complex Number: "
+ z1_polar[ 0 ] + " " + z1_polar[ 1 ]);
System.out.println(
"Polar form of the Second Complex Number: "
+ z2_polar[ 0 ] + " " + z2_polar[ 1 ]);
System.out.println(
"Addition of two Complex Numbers: "
+ Arrays.toString(Addition(z1_polar, z2_polar)));
System.out.println(
"Subtraction of two Complex Numbers: "
+ Arrays.toString(Subtraction(z1_polar, z2_polar)));
System.out.println(
"Multiplication of two Complex Numbers: "
+ Arrays.toString(Multiplication(z1_polar, z2_polar)));
System.out.println(
"Division of two Complex Numbers: "
+ Arrays.toString(Division(z1_polar, z2_polar)));
}
} // This code is contributed by phasing17. |
# Python program for the above approach import math
# Function to find the polar form # of the given Complex Number def get_polar_form(z):
# Z is in cartesian form
re, im = z
# Stores the modulo of complex number
r = (re * re + im * im) * * 0.5
# If r is greater than 0
if r:
theta = math.asin(im / r)
return (r, theta)
# Otherwise
else :
return ( 0 , 0 )
# Function to add two complex numbers def Addition(z1, z2):
# Z is in polar form
r1, theta1 = z1
r2, theta2 = z2
# Real part of complex number
a = r1 * math.cos(theta1) + r2 * math.cos(theta2)
# Imaginary part of complex Number
b = r1 * math.sin(theta1) + r2 * math.sin(theta2)
# Find the polar form
return get_polar_form((a, b))
# Function to subtract two # given complex numbers def Subtraction(z1, z2):
# Z is in polar form
r1, theta1 = z1
r2, theta2 = z2
# Real part of the complex number
a = r1 * math.cos(theta1) - r2 * math.cos(theta2)
# Imaginary part of complex number
b = r1 * math.sin(theta1) - r2 * math.sin(theta2)
# Converts (a, b) to polar
# form and return
return get_polar_form((a, b))
# Function to multiply two complex numbers def Multiplication(z1, z2):
# z is in polar form
r1, theta1 = z1
r2, theta2 = z2
# Return the multiplication of Z1 and Z2
return (r1 * r2, theta1 + theta2)
# Function to divide two complex numbers def Division(z1, z2):
# Z is in the polar form
r1, theta1 = z1
r2, theta2 = z2
# Return the division of Z1 and Z2
return (r1 / r2, theta1 - theta2)
# Driver Code if __name__ = = "__main__" :
z1 = ( 2 , 3 )
z2 = ( 4 , 6 )
# Convert into Polar Form
z1_polar = get_polar_form(z1)
z2_polar = get_polar_form(z2)
print ( "Polar form of the first" )
print ( "Complex Number: " , z1_polar)
print ( "Polar form of the Second" )
print ( "Complex Number: " , z2_polar)
print ( "Addition of two complex" )
print ( "Numbers: " , Addition(z1_polar, z2_polar))
print ( "Subtraction of two " )
print ( "complex Numbers: " ,
Subtraction(z1_polar, z2_polar))
print ( "Multiplication of two " )
print ( "Complex Numbers: " ,
Multiplication(z1_polar, z2_polar))
print ( "Division of two complex " )
print ( "Numbers: " , Division(z1_polar, z2_polar))
|
// JavaScript program for the above approach // Function to find the polar form // of the given Complex Number function get_polar_form(z){
// Z is in cartesian form
let re = z[0];
let im = z[1];
// Stores the modulo of complex number
let r = (re * re + im * im) ** 0.5;
// If r is greater than 0
if (r){
let theta = Math.asin(im / r);
return [r, theta];
}
// Otherwise
else {
return [0, 0];
}
} // Function to add two complex numbers function Addition(z1, z2){
// Z is in polar form
let r1 = z1[0];
let theta1 = z1[1];
let r2 = z2[0];
let theta2 = z2[1];
// console.log(r1, r2, theta1, theta2)
// Real part of complex number
let a = r1 * Math.cos(theta1) + r2 * Math.cos(theta2);
// Imaginary part of complex Number
let b = r1 * Math.sin(theta1) + r2 * Math.sin(theta2);
console.log(a, b)
// Find the polar form
return get_polar_form([a, b]);
} // Function to subtract two // given complex numbers function Subtraction(z1, z2){
// Z is in polar form
let r1 = z1[0];
let theta1 = z1[1];
let r2 = z2[0];
let theta2 = z2[1];
// Real part of the complex number
let a = r1 * Math.cos(theta1) - r2 * Math.cos(theta2);
// Imaginary part of complex number
let b = r1 * Math.sin(theta1) - r2 * Math.sin(theta2);
// Converts (a, b) to polar
// form and return
return get_polar_form([a, b]);
} // Function to multiply two complex numbers function Multiplication(z1, z2){
// z is in polar form
let r1 = z1[0];
let theta1 = z1[1];
let r2 = z2[0];
let theta2 = z2[1];
// Return the multiplication of Z1 and Z2
return [r1 * r2, theta1 + theta2];
} // Function to divide two complex numbers function Division(z1, z2){
// Z is in the polar form
let r1 = z1[0];
let theta1 = z1[1];
let r2 = z2[0];
let theta2 = z2[1];
// Return the division of Z1 and Z2
return [r1 / r2, theta1-theta2];
} // Driver Code z1 = [2, 3]; z2 = [4, 6]; // Convert into Polar Form z1_polar = get_polar_form(z1) z2_polar = get_polar_form(z2) console.log( "Polar form of the first" );
console.log( "Complex Number: " , z1_polar);
console.log( "Polar form of the Second" );
console.log( "Complex Number: " , z2_polar);
console.log( "Addition of two complex" );
console.log( "Numbers: " , Addition(z1_polar, z2_polar));
console.log( "Subtraction of two " );
console.log( "complex Numbers: " ,
Subtraction(z1_polar, z2_polar));
console.log( "Multiplication of two " );
console.log( "Complex Numbers: " ,
Multiplication(z1_polar, z2_polar));
console.log( "Division of two complex " );
console.log( "Numbers: " , Division(z1_polar, z2_polar));
// The code is contributed by Gautam goel (gautamgoel962) |
// C# code to implement the approach using System;
using System.Collections.Generic;
class GFG {
// Function to find the polar form of the given Complex
// Number
public static Tuple< double , double >
GetPolarForm( double re, double im)
{
// Z is in cartesian form
// Stores the modulo of complex number
double r = Math.Sqrt(re * re + im * im);
// If r is greater than 0
if (r > 0) {
double theta = Math.Asin(im / r);
return Tuple.Create(r, theta);
}
// Otherwise
else {
return Tuple.Create(0.00, 0.00);
}
}
// Function to add two complex numbers
public static Tuple< double , double >
Addition(Tuple< double , double > z1,
Tuple< double , double > z2)
{
// Z is in polar form
double r1 = z1.Item1;
double theta1 = z1.Item2;
double r2 = z2.Item1;
double theta2 = z2.Item2;
// Real part of complex number
double a
= r1 * Math.Cos(theta1) + r2 * Math.Cos(theta2);
// Imaginary part of complex Number
double b
= r1 * Math.Sin(theta1) + r2 * Math.Sin(theta2);
// Find the polar form
return GetPolarForm(a, b);
}
// Function to subtract two given complex numbers
public static Tuple< double , double >
Subtraction(Tuple< double , double > z1,
Tuple< double , double > z2)
{
// Z is in polar form
double r1 = z1.Item1;
double theta1 = z1.Item2;
double r2 = z2.Item1;
double theta2 = z2.Item2;
// Real part of the complex number
double a
= r1 * Math.Cos(theta1) - r2 * Math.Cos(theta2);
// Imaginary part of complex number
double b
= r1 * Math.Sin(theta1) - r2 * Math.Sin(theta2);
// Converts (a, b) to polar form and return
return GetPolarForm(a, b);
}
// Function to multiply two complex numbers
public static Tuple< double , double >
Multiplication(Tuple< double , double > z1,
Tuple< double , double > z2)
{
// z is in polar form
double r1 = z1.Item1;
double theta1 = z1.Item2;
double r2 = z2.Item1;
double theta2 = z2.Item2;
// Return the multiplication of Z1 and Z2
return Tuple.Create(r1 * r2, theta1 + theta2);
}
// Function to divide two complex numbers
public static Tuple< double , double >
Division(Tuple< double , double > z1,
Tuple< double , double > z2)
{
// Z is in the polar form
double r1 = z1.Item1;
double theta1 = z1.Item2;
double r2 = z2.Item1;
double theta2 = z2.Item2;
// Return the division of Z1 and Z2
return Tuple.Create(r1 / r2, theta1 - theta2);
}
// Driver Code
public static void Main( string [] args)
{
Tuple< double , double > z1 = Tuple.Create(2.0, 3.0);
Tuple< double , double > z2 = Tuple.Create(4.0, 6.0);
// Convert into Polar Form
var z1_polar = GetPolarForm(z1.Item1, z1.Item2);
var z2_polar = GetPolarForm(z2.Item1, z2.Item2);
Console.WriteLine(
"Polar form of the first Complex Number: "
+ z1_polar.Item1 + " " + z1_polar.Item2);
Console.WriteLine(
"Polar form of the Second Complex Number: "
+ z2_polar.Item1 + " " + z2_polar.Item2);
Console.WriteLine(
"Addition of two Complex Numbers: "
+ Addition(z1_polar, z2_polar));
Console.WriteLine(
"Subtraction of two Complex Numbers: "
+ Subtraction(z1_polar, z2_polar));
Console.WriteLine(
"Multiplication of two Complex Numbers: "
+ Multiplication(z1_polar, z2_polar));
Console.WriteLine(
"Division of two Complex Numbers: "
+ Division(z1_polar, z2_polar));
}
} // This code is contributed by phasing17 |
Polar form of the first Complex Number: (3.605551275463989, 0.9827937232473292) Polar form of the Second Complex Number: (7.211102550927978, 0.9827937232473292) Addition of two complex Numbers: (10.816653826391967, 0.9827937232473292) Subtraction of two complex Numbers: (3.605551275463989, -0.9827937232473292) Multiplication of two Complex Numbers: (25.999999999999996, 1.9655874464946583) Division of two complex Numbers: (0.5, 0.0)
Time Complexity: O(1)
Auxiliary Space: O(1)