我是 python 的初学者,正在尝试编写代码来确定导纳矩阵。我的准入名单被定义为 Y_ges
Y_ges = [ 9.89583333-40.47448077j 27.9209622 -10.73883162j
27.9209622 -10.73883162j 27.9209622 -10.73883162j
27.9209622 -10.73883162j]
一开始我创建了一个零矩阵并确定了它的大小。
a=np.zeros((len(net.bus),len(net.bus)),dtype=complex)
然后我创建了一个函数来逐行填充矩阵
def fillmatrix(n):
for i in range(len(n)):
#print(i)
if i == 0 :
zerolist=[0]*len(net.bus)
print("we are in if loop",i)
zerolist[i]=Y_ges[i]
zerolist[i+1]=-Y_ges[i]
a[i]=zerolist
#print(zerolist)
#print(a)
else:
print("we are in else loop",i)
zerolist=[0]*len(net.bus)
zerolist[i-1]=-Y_ges[i-1]
zerolist[i]=Y_ges[i-1]+Y_ges[i+1]
zerolist[i+1]=-Y_ges[i+1]
a[i]=zerolist
i+=1
print(a)
print("i =",i)
#print(zerolist)
fillmatrix(Y_ges)
我希望这个矩阵
[[ 9.89583333-40.47448077j -9.89583333+40.47448077j
0. +0.j 0. +0.j
0. +0.j 0. +0.j ]
[ -9.89583333+40.47448077j 37.81679553-51.21331239j
-27.9209622 +10.73883162j 0. +0.j
0. +0.j 0. +0.j ]
[ 0. +0.j -27.9209622 +10.73883162j
55.8419244 -21.47766323j -27.9209622 +10.73883162j
0. +0.j 0. +0.j ]
[ 0. +0.j 0. +0.j
-27.9209622 +10.73883162j 55.8419244 -21.47766323j
-27.9209622 +10.73883162j 0. +0.j ]
[ 0. +0.j 0. +0.j
0. +0.j -27.9209622 +10.73883162j
55.8419244 -21.47766323j -27.9209622 +10.73883162j]
[ 0. +0.j 0. +0.j
0. +0.j 0. +0.j
-27.9209622 +10.73883162j 27.9209622 +10.73883162j]]
但我得到了这个矩阵
[[ 9.89583333-40.47448077j -9.89583333+40.47448077j
0. +0.j 0. +0.j
0. +0.j 0. +0.j ]
[ -9.89583333+40.47448077j 37.81679553-51.21331239j
-27.9209622 +10.73883162j 0. +0.j
0. +0.j 0. +0.j ]
[ 0. +0.j -27.9209622 +10.73883162j
55.8419244 -21.47766323j -27.9209622 +10.73883162j
0. +0.j 0. +0.j ]
[ 0. +0.j 0. +0.j
-27.9209622 +10.73883162j 55.8419244 -21.47766323j
-27.9209622 +10.73883162j 0. +0.j ]
[ 0. +0.j 0. +0.j
0. +0.j 0. +0.j
0. +0.j 0. +0.j ]
[ 0. +0.j 0. +0.j
0. +0.j 0. +0.j
0. +0.j 0. +0.j ]]
和这个错误信息:
File "/Users/pythonuser/Desktop/Probe code ", line 230, in <module>
fillmatrix(Y_ges)
File "/Users/pythonuser/Desktop/Probe code ", line 220, in fillmatrix
zerolist[i]=Y_ges[i-1]+Y_ges[i+1]
IndexError: index 5 is out of bounds for axis 0 with size 5
任何想法 ?