這兩節我的代碼給出了以下錯誤消息。ValueError:使用序列設置數組元素
def Simpsons(a, b, n, f, x):
h=(b-a)/n
s = 0.
step = a + h
for i in range(1, int(n/2)):
s += 4*f(x)
#step += 2*h
step = a + 2 * h
for i in range(2, int(n/2 - 1)):
s += 2*f(x)
#step += 2 * h
area = (h/3) * (f(a) + f(b) + s)
return area
和
for i in range(0, len(list_n)):
for j in range(0, len(Functions)):
x = np.linspace(a, b, list_n[i])
error_simp[j, i] = Exact_intergrals[j] - Simpsons(0, 1, list_n[i], Functions[j], x)
print(error_simp)
給此消息:
error_simp[j, i] = Exact_intergrals[j] - Simpsons(0, 1, list_n[i], Functions[j], x)
ValueError: setting an array element with a sequence.
這是爲什麼?我所嘗試過的一切都沒有擺脫它。
確保您發佈的Python代碼能夠準確地再現您的縮進。否則,你會在代碼中引入新的問題,人們試圖發現問題。 – khelwood
方面的評論:如果n是偶數或奇數,你應該在Simpson(集成)中做出一個案例的定位。辛普森規則可以擴展到奇數個intervalls,通過單獨處理最後一個intervall(將拋物線擬合到最後3個點並僅在最後2個點之間進行積分) –
什麼是'error_simp'?形狀,dtype? RHS產生了什麼? – hpaulj