我的2021年的开篇作~~,无非是把自己之前用到的写进博客里面。~~
今天写的是牛顿-拉夫逊法的直角坐标方式求解潮流程序,这类代码在m文件里面已经出现很多,但是Python中比较少,所以今天我先占个位置。
首先理解一下牛顿-拉夫逊法,它其实是一种以逼近的思想去求解最终解,最简单的公式是:
在求解潮流计算时,比较好用的是直角坐标系的方法,一般网络可以求解的话,15次内就可以迭代出最终解,其方程是这样子的(这里偷一下懒,直接照搬文库里的书本内容):
公式就以上几个,用起来的话其实还是容易的,不要把逻辑混乱就可以了,那么接下来讲一下代码部分。
num_Y = size(Y,1)
#Y为网络的节点矩阵
n=size(Y,1)-1
if n == 5:
PVlist = [4]
else:
PVlist = [29,30,31,32,33,34,35,36,37]
#有一个是平衡节点,故减去1,n=5,num_Y=6,这里用PVlist是保存平衡节点的序号,在下面会用别的公式计算
J=mat(zeros((2*n,2*n)))
#J矩阵为雅克比矩阵,大小为2*n
for i in range(n):
#i为行数
for j in range(n):
#j为列数
if i in PVlist:
if i==j:
J[2*i,j*2] = sum([-(Y[i,k].real*U[k].real-Y[i,k].imag*U[k].imag) for k in range(num_Y)]) - Y[i,i].real*U[i].real-Y[i,i].imag*U[i].imag
J[i*2,j*2+1] = sum([-(Y[i,k].real*U[k].imag + Y[i,k].imag*U[k].real) for k in range(