2011-09-13 14 views
8

क्या पाइथन का उपयोग करके किसी दिए गए नंबर की जटिल जटिल जड़ों की गणना करना संभव है? मैं शीघ्र ही यह देख लिया है, और यह की तरह अजगर मुझे गलत/अधूरा जवाब देता दिखता है:,पायथन - किसी संख्या की सभी nth जड़ों की गणना कैसे करें?

(-27.0j)**(1.0/3.0) पैदा करता (2.598076211353316-1.4999999999999998j)

लेकिन उचित जड़ों 3 जटिल संख्याओं होना चाहिए, क्योंकि हर गैर शून्य संख्या n विभिन्न जटिल संख्या है एनएच जड़ें क्या यह पाइथन में संभव है?

+0

संबंधित: ([अजगर में एक बहुत बड़ा पूर्णांक के n वीं मूल गणना करने के लिए कैसे] http://stackoverflow.com/questions/356090/how-to-compute-the-nth- रूट-ऑफ-ए-बहुत-बड़े-पूर्णांक-इन-पायथन) [एक डुप्ली नहीं है क्योंकि इस प्रश्न में ओपी पूर्णांक नहीं चाहता है, लेकिन कोई भी संख्या] – amit

+2

असल में, शून्य में भी जड़ों की जड़ें हैं - वे सिर्फ वही हैं :) –

+0

@amit: यह बिल्कुल एक और सवाल है, कीवर्ड "सभी जड़ें" – psihodelia

उत्तर

0

आप साफ अजगर पर सभी जड़ों प्राप्त करना चाहते हैं आप ऐसा करने के लिए सरल कार्य बना सकते हैं:

import math 

def root(num, r): 
    base = num ** (1.0/r) 
    roots = [base] 
    for i in range(1, r): 
     roots.append(complex(base * math.cos(2*math.pi * i/r), base * math.sin(2*math.pi * i/r))) 
    return roots 
4

कई बहु-मूल्यवान जटिल कार्य-कार्य हैं जो उनके डोमेन में किसी भी बिंदु से संबंधित एक से अधिक मान हो सकते हैं। उदाहरण के लिए: जड़ें, लॉगरिदम, उलटा त्रिकोणमितीय कार्य ...

इन कार्यों के कई मान हो सकते हैं क्योंकि आमतौर पर वे एक ऐसे फ़ंक्शन के विपरीत होते हैं जिसमें डोमेन मानचित्र में एक ही मान पर कई मान होते हैं।

ऐसे कार्यों के साथ गणना करते समय, यह हमेशा संभव मूल्यों को वापस करने के लिए अव्यवहारिक होगा। व्यस्त त्रिकोणमितीय कार्यों के लिए, असीमित कई संभावित मूल्य हैं।

आमतौर पर विभिन्न फ़ंक्शन मान को पूर्णांक पैरामीटर के फ़ंक्शन के रूप में व्यक्त किया जा सकता है। उदाहरण के लिए, log z के मान z = r*(cos t + i*sin t के साथ log r + i*(t + k*2*pi) के साथ कोई पूर्णांक है। एनएच रूट के लिए, यह r**(1/n)*exp(i*(t+k*2*pi)/nk=0..n-1 समेत है।

क्योंकि सभी संभावित मूल्यों को वापस करना अव्यवहारिक है, पाइथन में गणितीय कार्य और लगभग सभी अन्य सामान्य प्रोग्रामिंग भाषाएं फ़ंक्शन के 'मूल मूल्य' कहलाती हैं। (reference) मूल मूल्य आमतौर पर के = 0 के साथ फ़ंक्शन मान होता है। जो भी विकल्प बनाया जाता है, इसे दस्तावेज़ीकरण में स्पष्ट रूप से बताया जाना चाहिए।

तो एक जटिल संख्या के सभी जटिल जड़ों प्राप्त करने के लिए, तो आप सिर्फ कश्मीर के सभी प्रासंगिक मूल्यों के लिए समारोह का मूल्यांकन:

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)) 

(आप इस काम करने के लिए cmath मॉड्यूल आयात करने के लिए की आवश्यकता होगी।) यह देता है:

>>> roots(-27j,3) 
[(2.59808-1.5j), (1.83691e-16+3j), (-2.59808-1.5j)] 
संबंधित मुद्दे

 संबंधित मुद्दे