Kiedy biorę pierwiastek kwadratowy z -1 wyskakuje mi błąd:Jak mogę wziąć pierwiastek kwadratowy z -1 przy użyciu Pythona?
invalid value encountered in sqrt
Jak mogę to naprawić?
/////////
arr=sqrt(-1)
print(arr)
OUTPUT
Kiedy biorę pierwiastek kwadratowy z -1 wyskakuje mi błąd:Jak mogę wziąć pierwiastek kwadratowy z -1 przy użyciu Pythona?
invalid value encountered in sqrt
Jak mogę to naprawić?
/////////
arr=sqrt(-1)
print(arr)
OUTPUT
Musisz użyć sqrt z modułu cmath
>>> import cmath
>>> cmath.sqrt(-1)
1j
Pierwiastek kwadratowy z -1 nie jest liczbą rzeczywistą, lecz raczej liczbą urojoną. IEEE 754 nie ma możliwości reprezentowania liczb urojonych.
numpy obsługuje numery zespolone. Proponuję użyć że: http://docs.scipy.org/doc/numpy/user/basics.types.html
Domyślam się, że @ marriam używa już numpy, ponieważ 'np.sqrt (-1)' powoduje wyświetlenie ostrzeżenia 'invalid value problems ...', podczas gdy 'math.sqrt (-1)' powoduje błąd ValueError: błąd domeny matematyki ". –
@WarrenWeckesser Tak czy inaczej, zrozumienie, jakie liczby są złożone, pomoże jej. – Marcin
yup u r right im już używasz numpy –
Aby uniknąć invalid value
ostrzegawczy/błąd argument do sqrt
funkcji NumPy musi być złożona:
In [8]: import numpy as np
In [9]: np.sqrt(-1+0j)
Out[9]: 1j
Jak @AshwiniChaudhary zauważył w komentarzu, można również użyć cmath
biblioteka standardowa:
In [10]: cmath.sqrt(-1)
Out[10]: 1j
Inni prawdopodobnie sugerowali bardziej pożądane metody, ale aby dodać do konwersacji, zawsze można pomnożyć dowolną liczbę mniej niż 0 (wartość, którą chcesz sqrt, -1 w tym przypadku) przez -1, a następnie sqrt tego. Po prostu wiedz, że twój wynik jest wyimaginowany.
Właśnie odkryłem funkcję wygody numpy.lib.scimath.sqrt
wyjaśnione w sqrt documentation. Używam go w następujący sposób:
>>> from numpy.lib.scimath import sqrt as csqrt
>>> csqrt(-1)
1j
Not sure about numpy ale w czystym Pythonie można użyć 'cmath.sqrt (-1)'. –