Это продолжение заданного здесь вопроса: Экспоненциальное число больших отрицательных чисел. Причина, по которой я хочу использовать десятичное число, заключается в том, что np.exp(-large_numbers) возвращает 0,0. Используя ответ Эрика на этот вопрос: https://stackoverflow.com/a/7771210/6943476, я попытался преобразовать свой np .array в десятичное, но я все равно получаю тип данных
numpy.ndarray.
Способность к кодированию: Новичок
Моя конечная цель состоит в том, чтобы функция возвращала затухающую синусоиду:
def waveform(mass_sm, amplitude, F, Q, phi, Time):
w = F/mass_sm
print type(Time)
Ntime = np.array(Time,dtype=np.dtype(decimal.Decimal))
priny type(Ntime)
return mass_sm * amplitude * np.sin(w * Ntime + phi) * np.exp(-w * Ntime/ (2 * Q))
Он попытался отладить код, разбив функцию возврата на синус, а затем на экспоненту:
def waveform(mass_sm, amplitude, F, Q, phi, Time):
w = F/mass_sm
print type(Time)
Ntime = np.array(Time,dtype=np.dtype(decimal.Decimal))
priny type(Ntime)
return mass_sm * amplitude * np.sin(w * Ntime + phi)
Выход:
<type 'numpy.ndarray'>
<type 'numpy.ndarray'>
AttributeError: 'float' object has no attribute 'sin'
Для экспоненциальной части я получаю (ожидаемую) ошибку, которая:
AttributeError: объект 'float' не имеет атрибута 'exp'
Я также попытался преобразовать элементы моего массива в десятичные числа, выполнив следующие действия:
Ntime = [decimal.Decimal(i) for i in Time]
На этот раз, получая эту ошибку для синуса:
TypeError: невозможно умножить последовательность на не-целое типа 'float'
и эта ошибка для exp:
TypeError: неверный тип операнда для унарного -: 'список'