#python #math #sympy
#python #математика #симпатичный
Вопрос:
Итак, я хочу создать код для использования численного метода аппроксимации, и мне нужна функция и ее производная, поэтому я сделал это:
import numpy as np
import sympy as sym
import math
x = Symbol('x')
fx = lambda x:math.tan(2*(x-5*math.pi/2))-x
f = math.tan(2*(x-5*math.pi/2))-x
dfx = lambdify (x,f.diff(x))
Это ошибка, она работала раньше, когда я использовал полиномиальные функции:
TypeError Traceback (most recent call last)
<ipython-input-18-e3f579396c41> in <module>
1 # INGRESO
2 fx = lambda x:math.tan(2*(x-5*math.pi/2))-x
----> 3 f = (float)(math.tan(2*(x-5*math.pi/2))-x)
4 dfx = lambdify (x,f.diff(x))
5
~Anaconda3libsite-packagessympycoreexpr.py in __float__(self)
278 if result.is_number and result.as_real_imag()[1]:
279 raise TypeError("can't convert complex to float")
--> 280 raise TypeError("can't convert expression to float")
281
282 def __complex__(self):
Ошибка типа: не удается преобразовать выражение в float
Ответ №1:
Вы должны использовать, например, sympy.tan
not math.tan
. math.tan
Функция принимает только float
входные данные, и вы передаете символическое выражение SymPy.
In [10]: import numpy as np
...: import sympy as sym
...: import math
...: x = Symbol('x')
...: fx = lambda x:sym.tan(2*(x-5*sym.pi/2))-x
...: f = sym.tan(2*(x-5*sym.pi/2))-x
...: dfx = lambdify (x,f.diff(x))
In [11]: dfx(1)
Out[11]: 10.548798408083835
Ответ №2:
Используйте sympi tan и pi: математическая библиотека плохо работает с sympy
import sympy as sym
from sympy import tan,pi
import numpy as np
x = sym.Symbol('x')
fx = tan(2*(x-5*pi/2))-x
dfx = sym.lambdify (x,fx)
Это работает…