How to compute sqrt of complex number ?

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 Commenti

what do you mean by 4th quadran
sqrt(x+i*y) is a function : one result
Dimitar
Dimitar il 14 Ott 2012
Modificato: Matt Fig il 14 Ott 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.

Accedi per commentare.

 Risposta accettata

Rick Rosson
Rick Rosson il 14 Ott 2012
Modificato: Rick Rosson il 14 Ott 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.

Più risposte (0)

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by