使用 numpy 的 trapz 我得到以下資訊:
lewis_result_outer = np.trapz(lewis_few_elements_outer_y, x=lewis_few_elements_outer_x)
lewis_result_inner = np.trapz(lewis_few_elements_inner_y, x=lewis_few_elements_inner_x)
lewis_result = lewis_result_inner - lewis_result_outer
lewis_result_outer : 99.02254450000001
lewis_result_inner : 98.324206
lewis_result: -0.6983385000000055
看看我用內部和外部結果繪制的圖,這顯然是錯誤的,圖代碼:
figure(1)
plt.plot(lewis_few_elements_outer_x, # X-axis
lewis_few_elements_outer_y, # Y-axis
's', # Marker type
color = 'green', # Marker color
markersize=6, # Marker size
alpha=0.5, # Gennemsigtighed
label='Lewis 40 element, outer')
plt.plot(lewis_few_elements_inner_x, # X-axis
lewis_few_elements_inner_y, # Y-axis
's', # Marker type
color = 'blue', # Marker color
markersize=6, # Marker size
alpha=0.5, # Gennemsigtighed
label='Lewis 40 element, inner')
plt.xlabel("r/R", size=20) # X-label name
plt.ylabel("Cp for int", size=20) # Y-label name
plt.legend()
plt.show

內部應該大于外部。然而不是,為什么呢?
我確實確保我使用的串列按如下順序排列:
lewis_few_elements_outer_y
Out[251]:
[100.66,99.867,99.79,99.676,99.57,99.504,99.445,99.405,99.366,99.34,99.334,99.387,99.527,99.743,99.921,100.068,100.178,100.268,100.322]
lewis_few_elements_outer_x
Out[252]:
[0.004,0.015,0.04,0.076,0.125,0.174,0.243,0.312,0.38,0.46,0.541,0.618,0.692, 0.762,0.828,0.883,0.925,0.959,0.998]
lewis_few_elements_inner_y
Out[253]:
[100.707,99.939,99.887,99.82,99.762,99.734,99.706,99.697,99.684,99.671,99.657,99.672,99.755,99.902,100.012,100.121,100.212,100.296]
lewis_few_elements_inner_x
Out[254]:
[0.003,0.015,0.039,0.074,0.118,0.177,0.239,0.309,0.38,0.458,0.543,0.617,0.691,0.762,0.826,0.884,0.927,0.988]
uj5u.com熱心網友回復:
順便說一句,但您可以簡單地驗證這trapz(y, x)只是
(0.5 * (y[1:] y[:-1]) * (x[1:] - x[:-1])).sum()
事實證明,問題是縮放和跨度之一。您的圖表顯示的段差異很大,但請注意,高度差在 ~100 中的 ~0.4 左右。這是一個以更具代表性的比例顯示您正在添加的段的圖:

很明顯,lewis_few_elements_outer_x跨越的領域明顯比lewis_few_elements_inner_x. 因此,無論函式頂部的微小差異看起來如何,重要的是右邊距。
>>> np.ptp(lewis_few_elements_outer_x)
0.994
>>> np.ptp(lewis_few_elements_inner_x)
0.985
從袖口開始,您正在以約 0.3% 的高度降低換取約 1% 的寬度增加,果然,差異大約為 0.7%,有利于更廣泛的資料集。
繪圖代碼供參考:
l, = plt.plot(lewis_few_elements_inner_x, lewis_few_elements_inner_y, label='inner')
for x, y in zip(lewis_few_elements_inner_x, lewis_few_elements_inner_y):
plt.plot([x, x], [y, 0], c=l.get_color())
l, = plt.plot(lewis_few_elements_outer_x, lewis_few_elements_outer_y, label='outer')
for x, y in zip(lewis_few_elements_outer_x, lewis_few_elements_outer_y):
plt.plot([x, x], [y, 0], c=l.get_color())
plt.legend()
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/420311.html
標籤:
下一篇:檢查熊貓中迭代和的最大值
