【问题标题】:Trying to find derivative of function using python尝试使用python找到函数的导数
【发布时间】:2021-02-04 02:40:31
【问题描述】:

我试图找到这个函数的导数:

y = 100e^-0.0482t

这是我的代码:

import math
from sympy import *
import numpy as np
x = Symbol('x')
y = (math.exp(-.0482 * x) * 100)
yprime = y.diff(x)
yprimerep = y.diff(5)
yprime
print(yprime)

我收到以下错误: TypeError: 无法将表达式转换为浮点数

我查看了该错误的各种含义,但我不明白。知道我做错了什么吗?

【问题讨论】:

  • 什么是Symbol('x')
  • 我试图从等式中定义“x”(我在代码中使用“x”而不是“t”)
  • 尝试使用 sympy exp 而不是 math.exp。
  • 好的,我试过了,我该如何定义 sympy?我收到错误 NameError: name 'sympy' is not defined
  • 因为你有from sympy import *。所以,exp 应该在你的命名空间中,你应该可以说y = exp(-.0482 * x) * 100。更好的是使用import sympy 而不是from sympy import * 然后你可以使用sympy.exp

标签: python math calc


【解决方案1】:

您是否正在寻找这样的东西?它会找到导数和 5 次导数,除非您尝试使用 x=5 评估导数

import sympy

x = sympy.Symbol('x')
y = (sympy.exp(-.0482 * x) * 100)
yprime = y.diff(x) # get derivative
print yprime # print derivative
print y.diff(x, 5) # print 5th derivative

您的代码的问题是将数学 exp 语句传递给 sympy。

我对sympy不太熟悉,但我相信如果你想用5代替x,你可以这样做

yprime.subs(x,5)

【讨论】:

    【解决方案2】:

    无需导入 math 和 numpy。 只需使用 sympy,因为其他模块中的值可能会使事情复杂化,并且模块的功能无法理解从其他模块派生的值。原则上,尽量坚持一个关于数学计算的模块。

    在计算某个点的导数时,您可以使用 sympy 中的 lambdify()。它将字符串转换为函数,让您计算该位置的值。

    例如:

    from sympy import *
        
    x = Symbol('x')
        
    f = input("Enter the function: ")
        
    f_derivative = Derivative(f, x)
    f_derivative = f_derivative.doit() #do the derivative and assign it to variable
    print(f_derivative)
        
    f = lambdify(x, f)
    f_derivative = lambdify(x, f_derivative) #convert it to function
        
    userInput = float(input("Try critical point: "))
    print("Your input: ", userInput)
        
    result = f_derivative(userInput) #pass the point to the function and assign it to variable
    
    print("Result: ", result)
    

    【讨论】:

      猜你喜欢
      • 2015-02-28
      • 2020-12-17
      • 2018-04-11
      • 1970-01-01
      • 2019-02-03
      • 2021-11-13
      • 2016-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多