英文:
TypeError: 'numpy.ndarray' object is not callable , where does it take an array from?
问题
Here's the translated code portion you provided:
def draw_PF(g, x0, nb, colors):
plt.plot([x0], [x0], color=colors, marker='o')
for i in range(nb):
x1 = g(x0)
plt.plot([x0, x0], [x0, x1], color=colors)
plt.plot([x0, x1], [x1, x1], color=colors)
x0 = x1
x = np.linspace(0, 1, 999)
y1 = 1 - np.sin(π)
y2 = np.exp(-4 * x)
y3 = 0.4 * np.exp(π) - 0.25
y4 = 1 / (1 + ((1 - x) / x) ** 2)
y = x
y1_dev = -np.cos(x)
y2_dev = -4 * y2
y3_dev = 0.4 * np.exp(x)
y4_dev = 2 * ((1 + ((1 - x) / x) ** 2) ** -2) * ((1 - x) / x ** 3)
functions = [y1, y2, y3, y4]
derivatives = [y1_dev, y2_dev, y3_dev, y4_dev]
iterations = [10, 10, 10, 10]
colors = ["r", "g", "c", "m"]
fixed_points = [0.5, 0.3, 0.3, 0.5]
for i in range(len(functions)):
plt.plot(x, functions[i])
plt.plot(x, y)
plt.show()
for j in range(len(derivatives)):
plt.plot(x, derivatives[j])
plt.show()
for k in range(len(functions)):
draw_PF(functions[k], (fixed_points[k] - 0.1), iterations[k], colors[k])
plt.show()
I've translated the code and replaced special characters with their respective Python equivalents. Please note that you should ensure you have the necessary libraries imported (e.g., import numpy as np
and import matplotlib.pyplot as plt
) for this code to work properly.
英文:
def draw_PF(g, x0, nb, colors):
plt.plot([x0], [x0], color = colors, marker='o')
for i in range(nb):
x1 = g(x0)
plt.plot([x0,x0], [x0,x1], color = colors)
plt.plot([x0,x1], [x1,x1], color = colors)
x0 = x1
x = np.linspace(0,1,999)
y1 = 1-np.sin(𝑥)
y2 = np.exp(-4*x)
y3 = 0.4 * np.exp(𝑥) - 0.25
y4 = 1/(1 + ((1-x)/x)**2)
y = x
y1_dev = -np.cos(x)
y2_dev = -4 * y2
y3_dev = 0.4*np.exp(x)
y4_dev = 2*((1 + ((1-x)/x)**2)**-2)*((1-x)/x**3)
functions = [y1,y2,y3,y4]
derivatives = [y1_dev,y2_dev,y3_dev,y4_dev]
iterations = [10,10,10,10]
colors = ["r","g","c","m"]
fixed_points = [0.5,0.3,0.3,0.5]
for i in range(len(functions)):
plt.plot(x,functions[i])
plt.plot(x,y)
plt.show()
for j in range(len(derivatives)):
plt.plot(x,derivatives[j])
plt.show()
for k in range(len(functions)):
dessiner_PF(functions[k],(fixed_points[k] - 0.1), iterations[k], couleurs[k])
plt.show()
TypeError Traceback (most recent call last)
Cell In[28], line 25
22 plt.show()
24 for k in range(len(functions)):
---> 25 draw_PF(functions[k],(fixed_points[k] - 0.1), iterations[k], colors[k])
26 plt.show()
Cell In[27], line 15, in draw_PF(g, x0, nb, colors)
13 plt.plot([x0], [x0], color = colors, marker='o')
14 for i in range(nb):
---> 15 x1 = g(x0)
16 plt.plot([x0,x0], [x0,x1], color = colors)
17 plt.plot([x0,x1], [x1,x1], color = colors)
TypeError: 'numpy.ndarray' object is not callable``
'Hello, I keep receiving this error message, but i dont understand quite why...
I am trying to implement a Picard algorithm to find fix points, but I keep having an issue with my call, I especially don't understand from where it takes the numpy array... thank you in advance.'
答案1
得分: 1
以下是翻译好的部分:
错误来自于这个函数:
def draw_PF(g, x0, nb, colors):
plt.plot([x0], [x0], color=colors, marker='o')
for i in range(nb):
x1 = g(x0) # 错误出现在这里
plt.plot([x0, x0], [x0, x1], color=colors)
plt.plot([x0, x1], [x1, x1], color=colors)
x0 = x1
g(x0)
不能工作,因为在你的代码中,g 本身没有定义为一个函数。如果你执行 print(g)
,你会得到一个形状为 (999,)
的 numpy.ndarray
。这是因为你在 draw_PF
中定义了表示 g
的第一个对象 y1
,如下所示:
x = np.linspace(0, 1, 999)
y1 = 1 - np.sin(x)
由于 y1 是一个 numpy 数组,它不可调用(也就是说,它不像一个函数那样工作,因为它是一个数组),因此 Python 返回给你这个错误 numpy.ndarray' object is not callable
。对于 y2
、y3
和 y4
,也是同样的情况。
如果有帮助,请告诉我!
英文:
The error comes from this function:
def draw_PF(g, x0, nb, colors):
plt.plot([x0], [x0], color = colors, marker='o')
for i in range(nb):
x1 = g(x0) # error is here
plt.plot([x0,x0], [x0,x1], color = colors)
plt.plot([x0,x1], [x1,x1], color = colors)
x0 = x1
g(x0)
does not work because g itself is not defined as a function in your code. If you do print(g)
you get a numpy.ndarray
with the shape (999,)
. This is because you define y1
, which is the first object representing g
in draw_PF
, as follows:
x = np.linspace(0,1,999)
y1 = 1-np.sin(x)
Since y1 is a numpy array, it is not callable (that is to say it does not behave like a function since it's an array) and therefore python returns you this error numpy.ndarray' object is not callable
. The same applies for y2
, y3
, and y4
.
Let me know if this helped!
答案2
得分: 0
g
似乎是一个 np.ndarray
,您正在尝试访问元素 x0
。在这种情况下,您需要使用 g[x0]
来访问列表的第 x0
个元素。
英文:
There's not enough information to know for sure, but it seems like g
is a np.ndarray
, and you're trying to access element x0
. In that case, you want g[x0]
, to access the x0
'th element of the list.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论