如何修复计算自然对数函数极限的代码上的TypeError



现在我正在尝试对函数的极限进行编码: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定义。

相关内容

最新更新