Convert given Complex Numbers into polar form and perform all arithmetic operations
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:
C++
#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. |
Java
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. |
Python3
# 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
// 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#
// 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)
Please Login to comment...