birçok çoklu değerli karmaşık fonksiyonlar vardır - kendi etki alanındaki herhangi bir noktaya tekabül eden birden fazla değere sahip olabilir fonksiyonları. Örneğin: kökler, logaritmalar, ters trigonometrik fonksiyonlar ...
Bu işlevlerin birden çok değere sahip olmasının nedeni genellikle, etki alanı haritasındaki aynı değere birden çok değere sahip bir işlevin tersi olmalarıdır.
Bu tür işlevlerle hesaplamalar yaparken, tüm olası değerleri her zaman döndürmek pratik olmayabilir. Ters trigonometrik fonksiyonlar için sonsuz sayıda olası değer vardır. Genellikle farklı fonksiyon değerleri, bir tamsayı parametresi k'nin bir fonksiyonu olarak ifade edilebilir. Örneğin,ile log z
'un değerleri, herhangi bir tamsayı ile log r + i*(t + k*2*pi)
'dur. Nth kök için k=0..n-1
dahil r**(1/n)*exp(i*(t+k*2*pi)/n
'dur.
Mümkün olan tüm değerlerin döndürülmesi pratik olmadığından, Python'daki matematiksel işlevler ve hemen hemen tüm diğer yaygın programlama dilleri, işlevin 'temel değeri' olarak adlandırılanı döndürür. (reference) Temel değer, genellikle k = 0 olan işlev değeridir. Seçim ne olursa olsun, belgelerde açıkça belirtilmelidir.
Yani bir karmaşık sayının tüm karmaşık kökleri almak için, sadece k ilgili tüm değerler için işlevini değerlendirmek:
def roots(z, n):
nthRootOfr = abs(z)**(1.0/n)
t = phase(z)
return map(lambda k: nthRootOfr*exp((t+2*k*pi)*1j/n), range(n))
(Sen bu işi yapmak için cmath modülü almak gerekir.) Bu veriyor:
>>> roots(-27j,3)
[(2.59808-1.5j), (1.83691e-16+3j), (-2.59808-1.5j)]
ilgili: ([python çok büyük tamsayı inci kökünü hesaplamak için nasıl] http://stackoverflow.com/questions/356090/how-to-compute-the-nth- root-of-a-çok-büyük-tamsayı-içinde-python) [bir dupe değil çünkü bu soruda OP tam sayı istemiyor, fakat herhangi bir sayı] – amit
Aslında, sıfır n kökleri de vardır - hepsi aynıdır :) –
@amit: bu kesinlikle başka bir soru, anahtar kelime "tüm kökler" – psihodelia