现在我正在尝试对函数的极限进行编码:4ln(2x+3(-1。这就是我迄今为止编码的内容:
# import sympy
from sympy import *
import numpy as np
def function(x):
return np.log(x)
x = symbols('x')
expr = 4*np.log(2*x+3)-1;
print("Expression : {}".format(expr))
# Use sympy.limit() method
limit_expr = limit(expr, x, 0)
print("Limit of the expression tends to 0 : {}".format(limit_expr))
我一直在8号线上收到一个TypeError
,但我无法修复它。
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
AttributeError: 'Add' object has no attribute 'log'
The above exception was the direct cause of the following exception:
TypeError Traceback (most recent call last)
<ipython-input-188-eba48ced061f> in <module>
6
7 x = symbols('x')
----> 8 expr = 4*np.log(2*x+3)-1;
9
10 print("Expression : {}".format(expr))
TypeError: loop of ufunc does not support argument 0 of type Add which has no callable log method
@jasonharper有正确的想法,所以我写下评论作为答案。
numpy模块中的数学函数用于使用实际数字进行计算。您必须使用sympy中的相应函数来处理符号变量。
实际情况是,虽然普通数学运算符可以很好地使用Sympy(根据占位符,它们将变量的神奇占位符变成基本数学表达式的神奇占位符(,但Sympy不可能对函数执行此操作。你不能让函数的参数重载函数调用的行为(想象一下随之而来的疯狂(,所以np.log
实际上试图立即确定这个神奇的Sympy占位符的对数。这不起作用,因为它既不是数字类型,也不是Numpy数组类型(Numpy函数通过向数组的每个元素"广播"来处理它(。
您需要使用Sympy的log函数,该函数将表达式的神奇Sympy占位符转换为该表达式对数的相应神奇Sympy占位符。这也被称为log,但由sympy而不是numpy定义。