>>> m*np.sin((2*x**(1.1)+30)/(0.7*d))
array([ 15.73194637, 16.73121346, 17.86226504, 19.03958247,
...
6.96013957, 5.16797026, 3.36497969, 1.55409031,
-0.26174328, -2.07953935, -3.8962942 , -5.70898742,
-7.5145872 , -9.31005568, -11.09235441, -12.85844979,
-14.60531859, -16.3299535 , -18.02936862, -19.70060506,
-21.34073643, -22.9468744 , -24.51617418, -26.04583993,
-27.53313024, -28.97536339, -30.36992266, -31.71426152,
-33.0059087 , -34.2424732 , -35.42164915, -36.54122056,
-37.59906596, -38.59316286, -39.52159205, -40.38254179,
-41.17431178, -41.89531695, -42.54409109, -43.11929025,
-43.61969594, -44.04421816, -44.39189813, -44.66191082,
-44.8535673 , -44.96631676, -44.99974837, -44.95359279,
-44.8277235 , -44.62215784, -44.33705779, -43.97273045])
>>> _.dtype
dtype('float64')
Итак, вы получаете кучу отрицательных чисел, но возведение их в степень 2.2
даст сложное число:
>>> (-43.97273045)**2.2
(3333.966245482375+2422.2682642773098j)
>>> (-3.95030853e-07)**2.2
(6.6152442046857145e-15+4.806256247845179e-15j)
Однако данные тип вашего массива - float64
, и поэтому он не может быть повышен до степени, которая приводит к комплексным числам:
>>> np.float64(-3.95030853e-07)**2.2
__main__:1: RuntimeWarning: invalid value encountered in double_scalars
nan
Таким образом, все полномочия для отрицательных чисел становятся NaN.
Вы можете вычислить нечетные корни отрицательных чисел (по сути, вы вычисляете (thing ** 11) ** (1/5)
) с помощью этого метода .