Я пытаюсь определить функцию и ее производную, но, похоже, она не работает

#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)
  

Это работает…