PEG_opti/opti_continu.py
2023-12-11 15:28:31 +01:00

53 lines
1 KiB
Python

import numpy as np
import matplotlib.pyplot as plt
import PyQt5 as qt
# Vn = 4e5 # En V
def make_Y(n):
Y = np.zeros((n, n))
return Y
def connect_Y(x, y, Ys, Yp, Y):
Y[x, y] = -Ys
Y[y, x] = -Ys
Y[x, x] += Ys + Yp
Y[y, y] += Ys + Yp
def spec(n, Y, Vn):
S = np.zeros((n, n))
for i in range(n):
for k in range(n):
if i == k:
S[i, k] = n
else:
S[i, k] = -1
S[i, k] *= Vn**2 * Y[i, k]
return S
def delta_select(i, S):
for k in range(len(S)):
S[i, k] = 0
Y = make_Y(4)
connect_Y(2, 3, 0.1, 0, Y)
connect_Y(1, 3, 0.15, 0, Y)
connect_Y(2, 1, 0.05, 0, Y)
connect_Y(2, 0, 0.05, 0, Y)
connect_Y(3, 0, 0.05, 0, Y)
print("Admittance matrix :")
print(Y)
S = spec(4, Y, 2e5)
print("System matrix :")
print(S)
invS = np.linalg.inv(S)
print(invS)
P = np.array([1000, -500, -250, -250])
P = P * 1e6
print("Power input :")
print(P)
delta = np.dot(invS, P)
print("Delta (rad) :")
print(delta)
print(delta * 180 / 3.1415)