奇妙な問題に遭遇しました: 非線形方程式から 3 つの配列 (x、y、および z) に大量のデータ ポイントを格納し、それらを 2D グラフ (シータ ファイ プロット、したがってその 2D )。
z データはほぼ周期的であるため、20 データ ポイントごとにポイントをサンプリングすることで、プロットする必要のあるポイントを排除しようとしました。すべての期間で 1 つのポイントを確実に選択できるように、z 値が 0 のすぐ上にあるポイントを選択しました。
上記を実行しようとしたときに問題が発生しました。最初のデータポイント数をどのように変更したかに関係なく(もちろん、一定数を超えている限り)、グラフ上のポイント数は非常に限られており、約152ポイントしか得られませんでした。
私が間違って使用しているコマンドであるか、配列の容量が予想よりも小さい可能性があると思われます (可能性は低いと思われます)。
def drawstaticplot(m,n, d_n, n_o):
counter=0
for i in range(0,m):
n=vector.rungekutta1(n, d_n)
d_n=vector.rungekutta2(n, d_n, i)
x1 = n[0]
y1 = n[1]
z1 = n[2]
if i%20==0:
xarray.append(x1)
yarray.append(y1)
zarray.append(z1)
for j in range(0,(m/20)-20):
if (((zarray[j]-n_o)>0) and ((zarray[j+1]-n_o)<0)):
counter= counter +1
print zarray[j]-n_o,counter
plotthetaphi(xarray[j],yarray[j],zarray[j])
def plotthetaphi(x,y,z):
phi= math.acos(z/math.sqrt(x**2+y**2+z**2))
theta = math.acos(x/math.sqrt(x**2 + y**2))
plot(theta, phi,'.',color='red')
さらに、次のSO の質問のコードを自分のコードに適用しようとしましたが、データ ポイントがランダムに生成されないことを除いて、非常によく似た結果が必要です。