Почему numpy.exp на сложном массиве meshgrid дает неправильную реальную часть?

Во-первых, это раздражает пользователя: я бы предложил вместо этого сделать что-то похожее на поле комментариев StackOverflow, которое позволяет вам вводить столько или меньше, как вам нравится, показывает вам сообщение о том, сколько символов вы 'typed и слишком ли много или слишком мало, и отказывается предоставить вам комментарий, длина которого недействительна.

Во-вторых, если вам действительно нужно ограничить длину текста, заменив весь контент из <div> при каждом нажатии клавиши, если содержимое слишком длинное, излишне дорогостоящее и сделает редактор невосприимчивым к более медленным машинам. Я предлагаю обработать событие keypress и просто запретить вставку символа с помощью preventDefault() в событии (или в IE, установив [returnValue] в true, если вы используете attachEvent). Это не помешает пользователю вставлять текст, поэтому вам нужно будет обработать событие paste (которого нет в Opera или Firefox & lt; 3, так что вам потребуется какое-то решение на основе опроса для тех). Поскольку вы не сможете получить доступ к предварительно вставленному контенту, у вас не будет никакого способа узнать, приведет ли паста к личным ограничениям, поэтому вам нужно будет установить таймер, чтобы снова проверить длину после пасты. Все, что имеет место, первый вариант кажется мне предпочтительным.

0
задан attikat 13 July 2018 в 09:37
поделиться

1 ответ

Согласно моим результатам, numpy действительно вычисляет правильные результаты:

Traceback from my console:

import numpy as np

xi = np.array([[
  [2.51325641-2.34963293j,  2.17949212-1.57079633j,  2.51325641-0.79195972j],
  [ 2.15322703+3.14159265j,  0.00000000+1.57079633j,  2.15322703+0.j        ],
  [ 2.51325641+2.34963293j,  2.17949212+1.57079633j , 2.51325641+0.79195972j]],

 [[ 2.44651048-2.3486959j ,  2.11452586-1.57079633j , 2.44651048-0.79289676j],
  [ 2.08450333+3.14159265j , 0.00000000+1.57079633j , 2.08450333+0.j        ],
  [ 2.44651048+2.3486959j ,  2.11452586+1.57079633j , 2.44651048+0.79289676j]]])



xi
Out[7]: 
array([[[2.51325641-2.34963293j, 2.17949212-1.57079633j,
         2.51325641-0.79195972j],
        [2.15322703+3.14159265j, 0.        +1.57079633j,
         2.15322703+0.j        ],
        [2.51325641+2.34963293j, 2.17949212+1.57079633j,
         2.51325641+0.79195972j]],

       [[2.44651048-2.3486959j , 2.11452586-1.57079633j,
         2.44651048-0.79289676j],
        [2.08450333+3.14159265j, 0.        +1.57079633j,
         2.08450333+0.j        ],
        [2.44651048+2.3486959j , 2.11452586+1.57079633j,
         2.44651048+0.79289676j]]])

np.exp(xi)
Out[8]: 
array([[[-8.67181417e+00-8.78636873e+00j,
         -2.83389303e-08-8.84181454e+00j,
          8.67181420e+00-8.78636870e+00j],
        [-8.61260674e+00+3.09174756e-08j,
         -3.20510345e-09+1.00000000e+00j,
          8.61260674e+00+0.00000000e+00j],
        [-8.67181417e+00+8.78636873e+00j,
         -2.83389303e-08+8.84181454e+00j,
          8.67181420e+00+8.78636870e+00j]],

       [[-8.10419466e+00-8.22665531e+00j,
         -2.65563855e-08-8.28565627e+00j,
          8.10419461e+00-8.22665536e+00j],
        [-8.04059697e+00+2.88640789e-08j,
         -3.20510345e-09+1.00000000e+00j,
          8.04059697e+00+0.00000000e+00j],
        [-8.10419466e+00+8.22665531e+00j,
         -2.65563855e-08+8.28565627e+00j,
          8.10419461e+00+8.22665536e+00j]]])

np.exp(2.17949212-1.57079633j)
Out[9]: (-2.833893031963725e-08-8.84181453742246j)

Я использую Python 3.6.5 (Anaconda Python) , с версией NumPy 1.14.3. Пробовали ли вы проверять результаты на другом компьютере / другом экземпляре python?

0
ответ дан dennlinger 17 August 2018 в 13:27
поделиться
  • 1
    хорошая идея! Я просто обновил anaconda и numpy для проверки - но он все равно не работает, когда я запускаю весь свой код (в qtconsole) ... но если я определяю xi самостоятельно, автономный массив действительно дает мне правильный np.exp ( хi). Я думаю, что @HadiFarah может быть прав, что я что-то неправильно передаю, я дам ему еще один взгляд! – attikat 13 July 2018 в 08:09
Другие вопросы по тегам:

Похожие вопросы: