0
import matplotlib.pyplot as plt
import numpy as np
import scipy as sc
import math


t,theta1=np.loadtxt('Single Small Angle 1.txt',unpack=True,skiprows=2)
t2,theta2=np.loadtxt('Single Small Angle 3.txt',unpack=True,skiprows=2)
theta=[]

omega=np.arange(int(len(theta1)/5)-1)
for x in range (int(len(theta1)/5-1)): 
    omega[x]=(theta1[x*5]-theta1[(x+1)*5])/.005
    theta[x]=theta1[x*5]


plt.plot(theta1,omega)
plt.xlabel("${\Theta}$ [rad]")
plt.ylabel("${\Omega}$ [rad/s]")
plt.title("Small Angle Approximation Phase Space")
plt.show()

Traceback (most recent call last):
    theta[x]=theta1[x*5]
IndexError: list assignment index out of range
[Finished in 0.6s with exit code 1]

自分が何をしているのかわかりません。エラーを修正したいだけです。私はちょうど位相空間を作ろうとしていて、d(theta1)/dt を持つことができるように私の theta1 のものの導関数が必要です。

4

1 に答える 1

1

以下はうまくいくはずです-あなたの問題は、適切な長さでシータを初期化していませんでした。行を挿入することもできますomega=np.arange(int(len(theta1)/5)-1)。これは両方をリストとして作成し、それらに追加します。少し読みやすくなると思います。

theta, omega = [],[]
for x in range (int(len(theta1)/5-1)): 
  omega.append((theta1[x*5]-theta1[(x+1)*5])/.005)
  theta.append(theta1[x*5])

omega = np.array(omega)
theta = np.array(theta)
于 2014-02-10T04:31:32.283 に答える