2016-08-04 19 views
6

Karmaşık sonsuzluklarla komik sonuçlar aldım.Karmaşık sonsuzluklar - komik reslts - uyuşmuş bir böcek?

In [1]: import numpy as np 

In [2]: np.isinf(1j * np.inf) 
Out[2]: True 

In [3]: np.isinf(1 * 1j * np.inf) 
Out[3]: True 

In [4]: np.isinf(1j * np.inf * 1) 
Out[4]: False 

Bu, nan ile ilgilidir. Ancak sonuç, tuhaftır.

Bu bir numpy hatası mı? Yapmam gereken bir şey var mı?

+0

'numpy.inf' düzenli şamandıra değil, bir olduğunu Biz 1j * numpy.inf bir nan bileşeni ve bir inf bileşenine sahip olduğunu görebilirsiniz NumPy nesnesi. Python'un yerleşik karmaşık türleri, yalnızca dikkatli bir şekilde/nan işlemeye sahip değildir. – user2357112

+1

Bir düşünün, karmaşık sayı hesaplamaları için componentwise inf/nan'in ne kadar anlam ifade ettiğinden emin değilim. “Arg (inf + inf * j)” ifadesinin ne olduğunu ya da “1 + 1j” ile çarpmaya çalıştığınızda sonucun belirtilerinin neler olduğunu söyleyemezsiniz. Karmaşık sonsuzlukların herhangi bir şeyle çarpılmasının hızla NaN'ler üretmesi mantıklı görünmektedir. – user2357112

cevap

5

NumPy hatası değil. numpy.inf düzenli Python şamandıra ve garip sonuçlar this olduğu düzenli Python karmaşık çarpma algoritması, gelen: inf-inf çıkarma ve 0*inf neden girişler sonsuz gerçek ya da hayali parçalar var

Py_complex 
_Py_c_prod(Py_complex a, Py_complex b) 
{ 
    Py_complex r; 
    r.real = a.real*b.real - a.imag*b.imag; 
    r.imag = a.real*b.imag + a.imag*b.real; 
    return r; 
} 

karmaşık çarpma eğilimi Sonuçta nan bileşenlerine yol açan çarpma.

In [5]: 1j * numpy.inf 
Out[5]: (nan+infj) 

ve 1 ile çarpılmasıyla iki nan parçaları üretiyor:

In [4]: 1j * numpy.inf * 1 
Out[4]: (nan+nanj) 
İlgili konular