首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我试图定义一个函数及其导数,但它似乎不起作用

我试图定义一个函数及其导数,但它似乎不起作用
EN

Stack Overflow用户
提问于 2020-08-26 22:29:43
回答 2查看 35关注 0票数 0

所以我想编写代码,使用数值逼近方法,我需要函数及其导数,所以我这样做了:

代码语言:javascript
复制
    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))

这就是错误,以前我使用多项式函数时,它是有效的:

代码语言:javascript
复制
    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 
    
    ~\Anaconda3\lib\site-packages\sympy\core\expr.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):

TypeError:无法将表达式转换为浮点型

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-26 22:40:39

例如,你应该使用sympy.tan,而不是math.tanmath.tan函数只接受float输入,而您传入的是一个符号SymPy表达式。

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2020-08-26 23:00:26

使用渐近函数tan和pi:数学库不能很好地与渐近函数配合使用

代码语言:javascript
复制
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)

这行得通..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63599881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档