How to compute sqrt of complex number ?

42 views (last 30 days)
sqrt(z) , (where z=x+iy a general complex number) will have two solutions. I would like to pick up a solution that lies in the fourth quadrant always. How can i do it ?
sqrt(z)=sqrt(r)e^(1/2*i*(phase+2*k*pi)) ,where k= 0,1, r=(x^2+y^2)^(1/2) The solution has two branches I would like to pick a specific one.
min = 0.65;
max = 0.95;
no = complex(1,-10^-4);
c = linspace(min, max, 10000);
n1 = (1+0.6961663.*c.^2./(c.^2-0.0684043.^2) + 0.4079426.*c.^2./(c.^2-0.1162414.^2) + 0.8974794.*c.^2./(c.^2-9.896161.^2)).^(1/2);
n1 = complex(n1,-10^-5);
b = length(c);
theta = 45*(3.14/2)/180;
for i = 1:b
sqd1(i) = sqrt(n1(i)^2 - no^2*sin(theta)^2);
% need to pick up the solution in the fourth quadrant
end
  3 Comments
Azzi Abdelmalek
Azzi Abdelmalek on 13 Oct 2012
sqrt(x+i*y) is a function : one result
Dimitar
Dimitar on 14 Oct 2012
Edited: Matt Fig on 14 Oct 2012
I mean z=x+i*y (i=sqrt(-1)) is complex number
sqrt(z) = sqrt(r)e^(1/2*i*(phase+2*k*pi))
% With k= 0,1, r=(x^2+y^2)^(1/2)
The solution has two branches I would like to pick a specific one.

Sign in to comment.

Accepted Answer

Rick Rosson
Rick Rosson on 14 Oct 2012
Edited: Rick Rosson on 14 Oct 2012
First method:
r = roots([1 0 z]);
phi = angle(r);
v = r(phi<0);
Second method:
r = roots([1 0 z]);
p = imag(r);
v = r(p<0);
The second method is probably faster.

More Answers (0)

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!