【发布时间】:2021-09-22 23:57:50
【问题描述】:
我在python oop中有这个数值方法,这个错误出现在控制台窗口。谁能告诉我如何解决这个问题
self.y[i+1] = self.y[i]+(h / 6) * (k1 + 2 * k2 + 2 * k3 + k4) ValueError: 使用序列设置数组元素。
class runge():
def __init__(self):
self.x = np.linspace(1, 5, 50)
self.y = np.zeros(len(self.x))
self.y[0] = 4
self.loop()
self.f()
def f(self, x, y):
return (self.x*np.sqrt(self.y))
def loop(self):
h = 0.2
for i in range(len(self.x) - 1):
k1 = self.f(self.x[i], self.y[i])
k2 = self.f(self.x[i] + h / 2, self.y[i] + k1 * (h / 2))
k3 = self.f(self.x[i] + h / 2, self.y[i] + k2 * (h / 2))
k4 = self.f(self.x[i] + h, self.y[i] + k3 * h)
self.y[i+1] = self.y[i]+(h / 6) * (k1 + 2 * k2 + 2 * k3 + k4)
def draw(self):
plt.plot(self.x, self.y)
plt.show()
run = runge()
run.draw()
【问题讨论】:
-
错误很明显:你实现的计算没有意义。我们无法知道你到底想做什么...How to Ask
-
该作业的 rhs 大小是多少? lhs 只能容纳 1 个数字。
标签: python arrays numpy class oop