Форма выражения (соответствующая переменной, называемой «выражение» ниже), критические точки которого я пытаюсь найти, одинакова во всех случаях, поскольку единственное, что меняется между успехом и неудачей, — это значения показатели степени для каждого члена.
Вот минимальный воспроизводимый пример:
Если вы создадите файл Python с приведенным выше примером и запустите его, вы увидите только 15 результатов в распечатанном виде. 16-е вычисление для IOTAUSDT никогда не возвращает результат.
Каждый пример, сверху вниз, превращается в одно из приведенных ниже выражений, когда мы проверяем значение переменной выражения в отладчике:
Но по какой-то причине окончательное выражение для IOTAUSDT приводит к тому, что Sympy.solve никогда не возвращается, когда мы пытаемся найти его критические точки:
Уникальная особенность выражения, которое не работает, заключается в том, что в его показателях есть повторяющиеся десятичные дроби, как в рациональном числе, таком как 2/3. Чтобы подтвердить свое интуитивное предположение о том, что это является источником ошибки, я еще раз просмотрел сделки, которые сформировали гистограмму для этого символа: 131 были в сегменте -1 и 157 были в сегменте +1. 131/288 = 0,454861 с повторяющейся 1 и 157/288 = 0,545138 с повторяющейся 8. Таким образом, получается, что, хотя десятичные значения сохраняют много точности в гистограмме, которую мы передаем в вычислительную функцию, эти значения неточны. поскольку повторение через некоторое время прекращается, но даже это не имеет значения, потому что Sympy обрезает значения до этого момента. Поскольку Sympy.solve преобразует мои входные десятичные дроби Python в числовые значения с плавающей запятой, а не в рациональные числа Sympy, разумно ли ожидать, что это является источником проблемы? Если да, то как я могу изменить свой код, чтобы вычисления выполнялись правильно, а не застревали навсегда?
Форма выражения (соответствующая переменной, называемой «выражение» ниже), критические точки которого я пытаюсь найти, одинакова во всех случаях, поскольку единственное, что меняется между успехом и неудачей, — это значения показатели степени для каждого члена. Вот минимальный воспроизводимый пример: [code]from sympy import symbols, Mul, diff, solve from decimal import Decimal
class Histogram: def __init__(self, bins, pdf): self.bins = bins self.pdf = pdf
for histogram in histograms: computation(histogram) [/code] Если вы создадите файл Python с приведенным выше примером и запустите его, вы увидите только 15 результатов в распечатанном виде. 16-е вычисление для IOTAUSDT никогда не возвращает результат. Каждый пример, сверху вниз, превращается в одно из приведенных ниже выражений, когда мы проверяем значение переменной выражения в отладчике: [code](1.0 - 0.0774785191289289x)^0.505928853754941 \* (0.0818152772752661x + 1.0)^0.494071146245059
(1.0 - 0.0774785191289289x)^0.5 \* (0.0818152772752661x + 1.0)^0.5 [/code] Но по какой-то причине окончательное выражение для IOTAUSDT приводит к тому, что Sympy.solve никогда не возвращается, когда мы пытаемся найти его критические точки: [code](1.0 - 0.0774785191289289x)^0.454861111111111 \* (0.0818152772752661x + 1.0)^0.545138888888889 [/code] Уникальная особенность выражения, которое не работает, заключается в том, что в его показателях есть повторяющиеся десятичные дроби, как в рациональном числе, таком как 2/3. Чтобы подтвердить свое интуитивное предположение о том, что это является источником ошибки, я еще раз просмотрел сделки, которые сформировали гистограмму для этого символа: 131 были в сегменте -1 и 157 были в сегменте +1. 131/288 = 0,454861 с повторяющейся 1 и 157/288 = 0,545138 с повторяющейся 8. Таким образом, получается, что, хотя десятичные значения сохраняют много точности в гистограмме, которую мы передаем в вычислительную функцию, эти значения неточны. поскольку повторение через некоторое время прекращается, но даже это не имеет значения, потому что Sympy обрезает значения до этого момента. Поскольку Sympy.solve преобразует мои входные десятичные дроби Python в числовые значения с плавающей запятой, а не в рациональные числа Sympy, разумно ли ожидать, что это является источником проблемы? Если да, то как я могу изменить свой код, чтобы вычисления выполнялись правильно, а не застревали навсегда?
Форма выражения (соответствующая переменной, называемой «выражение» ниже), критические точки которого я пытаюсь найти, одинакова во всех случаях, поскольку единственное, что меняется между успехом и неудачей, — это значения показатели степени для...
Форма выражения (соответствующая переменной, называемой «выражение» ниже), критические точки которого я пытаюсь найти, одинакова во всех случаях, поскольку единственное, что меняется между успехом и неудачей, — это значения показатели степени для...
Форма выражения (соответствующая переменной, называемой «выражение» ниже), критические точки которого я пытаюсь найти, одинакова во всех случаях, поскольку единственное, что меняется между успехом и неудачей, — это значения показатели степени для...
Форма выражения (соответствующая переменной, называемой «выражение» ниже), критические точки которого я пытаюсь найти, одинакова во всех случаях, поскольку единственное, что меняется между успехом и неудачей, — это значения показатели степени для...
Форма выражения (соответствующая переменной, называемой «выражение» ниже), критические точки которого я пытаюсь найти, одинакова во всех случаях, поскольку единственное, что меняется между успехом и неудачей, — это значения показатели степени для...