Python: sympy TypeError: невозможно преобразовать выражение в число с плавающей запятой

В настоящее время я работаю над калькулятором, который работает аналогично «настоящему» калькулятору при определении определенных интегралов.

В настоящее время я могу заставить его работать с такими функциями, как

  • sin(x)
  • cos(x)
  • e**x
  • n*x**x

Однако он не примет math.sqrt(x) в качестве функции в моем коде, где просто указано, что

File "C:\Users\Nikolai Lund Kühne\.spyder-py3\integration.py", line 6, in <module>
  print(series(math.sqrt(x), x, x0=0, n=6))

File "C:\ProgramData\Anaconda3\lib\site-packages\sympy\core\expr.py", line 327, in __float__
  raise TypeError("can't convert expression to float")

TypeError: can't convert expression to float

Мой код:

from sympy.functions import sin,cos
from sympy.abc import x
from sympy import series
from pprint import pprint
# Indsæt her funktionen f(x), variablen x, udviklingspunktet x0 og antal led n
print(series(math.sqrt(x), x, x0=0, n=6))

N = int(input("Antal summer(flere summer er mere præcist): "))
a = int(input("Integrer fra: "))
b = int(input("Integrer til: "))

# Vi anvender Midpoint metoden til integration og skriver funktionen ind, som skal integreres

def integrate(N, a, b):
    def f(x):
        return series(math.sqrt(x), x, x0=0, n=6)
    value=0
    value=2
    for n in range(1, N+1):
        value += f(a+((n-(1/2))*((b-a)/N)))
    value2 = ((b-a)/N)*value
    return value2

print("...................")
print("Her er dit svar: ")
print(integrate(N, a, b))

Может ли кто-нибудь помочь мне здесь, это очень ценится.

Отказ от ответственности: я новичок в программировании и Python и буду признателен за любую помощь. Извините за странную настройку, я привык к LaTeX и MathJax при написании вопросов :)


person Nikolai    schedule 08.09.2020    source источник
comment
Вы import math? Также series — это только модуль, вы не можете использовать его как функцию, если вы хотите использовать функцию, вам нужно импортировать определенную функцию из этого модуля, например, from sympy import fourier_series   -  person Yannick Funk    schedule 08.09.2020
comment
Эй, import math, кажется, не помогает, но я включу его. Хорошо, как ни странно, он работает с другими функциями, как указано. Я пытаюсь заставить python сделать серию Тейлора для данной функции. Можете ли вы импортировать функцию из sympy или где-то еще, например from sympy import taylor_series, как функцию?   -  person Nikolai    schedule 08.09.2020
comment
Ознакомьтесь с docs.sympy.org/latest/modules/series/series.html Я думаю, вы ищете функцию ограничения, но сами прочитайте документ и проверьте, если это то, что вы хотите   -  person Yannick Funk    schedule 08.09.2020


Ответы (1)


Вы получаете сообщение об ошибке:

TypeError: can't convert expression to float

Поскольку аргумент, переданный как expr, равен math.sqrt(x), а sympy этого не ожидает.

Изменить с math.sqrt(x) на x**0.5:

print(series(x**0.5, x, x0=0, n=6))

То же самое относится и к строке 16.

person Aviv Yaniv    schedule 08.09.2020