gpt4 book ai didi

python - “符号”对象没有属性 'sin'

转载 作者:行者123 更新时间:2023-11-28 18:05:52 28 4
gpt4 key购买 nike

我定义了一个函数 integrate_boole 如下:

def integrate_boole(f,l,r,N):
N = 4 * int(N // 4)
h=((r-l)/N)
xN = np.linspace(l,r,N+1)
fN = f(xN)
return ((2*h)/45)*(7*fN[0]+32*(np.sum(fN[1:-1:2]))+12*. (np.sum(fN[2:-2:4]))+14*(np.sum(fN[4:-4]))+7*fN[-1])

我现在正在尝试对 f(x) 的 0 和 pi 进行积分,其中 f(x) 定义为:

def f(x):
return x*np.sin(x)/(1+np.cos(x)**2)

当我将 f(x) 代入函数时:

integrate_boole(f(x),0,np.pi,8)

我收到以下错误消息:

-----------------------------------------------------------------------  ----
AttributeError Traceback (most recent call last)
<ipython-input-23-91f1a95793b5> in <module>()
----> 1 integrate_boole(f(x),0,np.pi,8)

<ipython-input-20-165d275ae26c> in f(x)
1 def f(x):
----> 2 return x*np.sin(x)/(1+np.cos(x)**2)
3 myx = np.linspace(0,np.pi,1000)
4 plt.plot(myx,f(myx),label=r"$f(x)=\frac{x\sin{x}}{1+\cos^2{x}}$")
5 plt.ylabel("$f(x)$")

AttributeError: 'Symbol' object has no attribute 'sin'

我最初在同一笔记本的开头导入了以下库:

import numpy as np
import matplotlib.pyplot as plt
import sympy as sym
from ipywidgets.widgets import interact
sym.init_printing(use_latex="mathjax")
x, y, z, t = sym.symbols('x y z t')

我已经检查了关于大致相同主题的其他文章,但是我不相信我的 numpy 和 sympy 库会发生冲突,因为它们似乎已经发生在其他人身上。但他们可能是,我不知道为什么。任何帮助将不胜感激。

最佳答案

integrate_boole 的第一个参数应该是一个函数。

  • f 是一个函数
  • f(x) 是函数 f 为输入 x 返回的数字。

你需要打电话

integrate_boole(f,0,np.pi,8)

不是

integrate_boole(f(x),0,np.pi,8)

这是完整的代码,缩进正确:

import numpy as np
import matplotlib.pyplot as plt
import sympy as sym

x, y, z, t = sym.symbols('x y z t')

def integrate_boole(f,l,r,N):
N = 4 * int(N // 4)
h=((r-l)/N)
xN = np.linspace(l,r,N+1)
fN = f(xN)
return ((2*h)/45)*(7*fN[0]+32*(np.sum(fN[1:-1:2]))+12*(np.sum(fN[2:-2:4]))+14*(np.sum(fN[4:-4]))+7*fN[-1])

def f(x):
return x*np.sin(x)/(1+np.cos(x)**2)

integrate_boole(f,0,np.pi,8)
# 2.470207745145361

关于python - “符号”对象没有属性 'sin',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53537224/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com