print("Exemplo 2.14")
def delta_y(Ra,Rb,Rc):
    r1 = Rb*Rc/(Ra+Rb+Rc)
    r2 = Ra*Rc/(Ra+Rb+Rc)
    r3 = Ra*Rb/(Ra+Rb+Rc)
    return r1,r2,r3

r1,r2,r3 = delta_y(15,10,25)
print("R1:",r1,"ohms")
print("R2:",r2,"ohms")
print("R3:",r3,"ohms")

"""
Explanation: Métodos de Análise de Circuitos - Análise Nodal
Jupyter Notebook desenvolvido por Gustavo S.S.

"Nenhuma grande obra é realizada de forma apressada. Realizar uma grande descoberta científica, pintar
uma grande tela, escrever um poema imortal, tornar-se um ministro ou um general famoso – realizar
qualquer coisa de grandioso requer tempo, paciência e perseverança. Essas coisas são realizadas
gradualmente, “pouco a pouco” - W. J. Wilmont Buxton

Transformações Y-Delta (estrela-triângulo)
Estes circuitos apresentados correspondem à rede ípsilon (Y) ou tê (T), mostrada
na Figura 2.47, e à rede delta (Δ) ou pi (π), ilustrada na Figura 2.48. Essas
redes ocorrem por si só ou como parte de uma rede maior e são usadas em
redes trifásicas, filtros elétricos e circuitos adaptadores


Conversão delta-Y (triângulo-estrela)
Em alguns casos é mais conveniente trabalhar com uma rede Y em um ponto
em que o circuito contém uma configuração delta. Sobrepomos uma rede Y
à rede delta existente e encontramos as resistências equivalentes na rede
Y, e, para obtê-las, comparamos as duas redes e nos certificamos de que a
resistência entre cada par de nós na rede Δ (ou π) é a mesma que a resistência
entre o mesmo par de nós na rede Y (ou T)

Assim:
\begin{align}
{\Large R_1 = \frac{R_bR_c}{R_a + R_b + R_c}}
\end{align}
\begin{align}
{\Large R_2 = \frac{R_aR_c}{R_a + R_b + R_c}}
\end{align}
\begin{align}
{\Large R_3 = \frac{R_aR_b}{R_a + R_b + R_c}}
\end{align}
Resumindo:
Cada resistor na rede Y é o produto dos resistores nos dois ramos adjacentes
Δ, dividido pela soma dos três resistores Δ.
Conversão Y-Delta
Para se obter o valor de resistores numa representação Delta a partir de uma Y, basta realizar o seguinte cálculo:
\begin{align}
{\Large R_a = \frac{R_1R_2 + R_2R_3 + R_3R_1}{R_1}}
\end{align}
\begin{align}
{\Large R_b = \frac{R_1R_2 + R_2R_3 + R_3R_1}{R_2}}
\end{align}
\begin{align}
{\Large R_c = \frac{R_1R_2 + R_2R_3 + R_3R_1}{R_3}}
\end{align}
Resumindo:
Cada resistor na rede Δ é a soma de todos os produtos possíveis de Y resistores
extraídos dois a dois, dividido pelo resistor Y oposto.
No caso, como os resistores são de mesmo valor, fica:
\begin{align}
{\Large R_Y = \frac{R_\Delta}{3}}
\ou
\{\Large R_\Delta = 3R_Y}
\end{align}
Note que, ao fazer a transformação, não retiramos nem inserimos nada de
novo no circuito, porque substituímos padrões de rede de três terminais diferentes,
porém matematicamente equivalentes para criar um circuito no qual os
resistores estão em série ou em paralelo, o que possibilita que calculemos a
Req, caso necessário.
Exemplo 2.14
Converta a rede Δ da Figura 2.50a em uma rede Y equivalente.
End of explanation
"""


print("Problema Prático 2.14")
def y_delta(R1,R2,R3):
    Ra = (R1*R2 + R2*R3 + R3*R1)/R1
    Rb = (R1*R2 + R2*R3 + R3*R1)/R2
    Rc = (R1*R2 + R2*R3 + R3*R1)/R3
    return Ra,Rb,Rc
ra,rb,rc = y_delta(10,20,40)
print("Ra:",ra,"ohms")
print("Rb:",rb,"ohms")
print("Rc:",rc,"ohms")

"""
Explanation: Problema Prático 2.14
Transforme a rede Y da Figura 2.51 em uma rede delta.
End of explanation
"""


print("Exemplo 2.15")
#analisando a triade 5ohms (rc) 15ohms (rb) e 20ohms (ra) como associacao em delta
r1,r2,r3 = delta_y(20,15,5)
Req1 = 12.5+r1 #em serie com resistor 12,5 ohm
Req2 = 10+r2 #em serie com resistor 10 ohm
Req3 = Req1*Req2/(Req1 + Req2) #paralelo entre Req1 e Req2
Req4 = Req3 + r3
Reqf = 30*Req4/(Req4 + 30)
V = 120
i = V/Reqf
print("Corrente resultante:",i,"A")

"""
Explanation: Exemplo 2.15
Obtenha a resistência equivalente Rab para o circuito da Figura 2.52 e a use para encontrar
a corrente i.
End of explanation
"""


print("Problema Prático 2.15")
r1,r2,r3 = delta_y(50,30,20)
Req1 = 24 + r1
Req2 = 10 + r2
Req3 = Req1*Req2/(Req1 + Req2)
Req4 = Req3 + r3
Reqf = Req4 + 13
V = 240
i = V/Reqf
print("Rab:",Reqf,"ohm")
print("Corrente resultante:",i,"A")

"""
Explanation: Problema Prático 2.15
Para o circuito em ponte da Figura 2.54, determine Rab e i.
End of explanation
"""


print("Exemplo 2.16")
V = 9
p2 = 15 #potencia da primeira lampada
p3 = 10
p1 = 20
pt = p1 + p2 + p3
i = pt/V
i1 = p1/V
i2 = i - i1
r1 = V/i1
r2 = p2/(i2**2) # da equacao p = r*(i^2) => r = p/(i^2)
r3 = p3/(i2**2)
print("Corrente total:",i,"A")
print("Corrente na lampada 20W:",i1,"A")
print("Corrente nas lampadas 15W e 10W:",i2,"A")
print("Resistencia lampada 15W:",r2,"ohm")
print("Resistencia lampada 10W:",r3,"ohm")
print("Resistencia lampada 20W:",r1,"ohm")

"""
Explanation: Exemplo 2.16
Três lâmpadas são conectadas a uma fonte de 9 V, conforme mostrado na Figura 2.56a.
Calcule: 
(a) corrente total fornecida pela fonte; 
(b) corrente que passa por cada lâmpada;
(c) resistência de cada lâmpada.
End of explanation
"""


V = 110
p = 40
n = 10
pt = p*n  #potencia serie
i = pt/V
print("Corrente em cada lampada em serie:",i,"A")
i = p/V
print("Corrente em cada lampada em paralelo:",i,"A")

"""
Explanation: Problema Prático 2.16
Consulte a Figura 2.55 e considere a existência de dez lâmpadas que podem ser associadas em paralelo e dez que podem ser ligadas em série, cada uma das quais com potência
nominal de 40 W. Se a tensão da rede elétrica for 110 V para as ligações em série e em
paralelo, calcule a corrente através de cada lâmpada para ambos os casos.
End of explanation
"""


print("Exemplo 3.1")
import numpy as np
#i2 + i3 = 5
#i2 + 10 = i5 + 5 => i5 = i2 + 5
#i2 = (v1-v2)/4
#i3 = v1/2
#i5 = v2/6
#(v1-v2)/4 + v1/2 = 5 => 3v1 - v2 = 20
# v2/6 = (v1-v2)/4 + 5 => 2v2 = 3v1 - 3v2 + 60 => 3v1 - 5v2 = -60
coef = np.matrix('3 -1; 3 -5')
res = np.matrix('20;-60')
V = np.linalg.inv(np.transpose(coef)*coef)*np.transpose(coef)*res #algebra linear B = (X'X)^(-1) * X'Y
print("V1:",float(V[0]),"V")
print("V2:",float(V[1]),"V")

"""
Explanation: Análise Nodal
A análise nodal também é
conhecida como método do
nó-tensão.
Etapas para determinar tensões nodais:

Selecione um nó como referência. 
Atribua tensões v1, v2, ..., vn–1 aos n – 1 nós restantes. As tensões são medidas em relação ao nó de referência.
Aplique a LKC a cada um dos n – 1 nós que não são de referência. 
Use a lei de Ohm para expressar as correntes nos ramos em termos de tensões nodais.
Resolva as equações simultâneas resultantes para obter as tensões nodais desconhecidas.


O número de nós que não são
de referência é igual ao número
de equações independentes que
vamos deduzir.
Em um resistor, a corrente flui de um potencial mais elevado para um
potencial mais baixo.
\begin{align}
{\Large i = \frac{v_{maior} - v_{menor}}{R}}
\end{align}
Exemplo 3.1
Calcule as tensões nodais no circuito mostrado na Figura 3.3a.
End of explanation
"""


print("Problema Prático 3.1")
#i1 + i3 = 3
#i3 = i2 + 12
#i1 = v1/2
#i2 = v2/7
#i3 = (v1-v2)/6
#v1/2 + (v1-v2)/6 = 3 => 4v1 - v2 = 18
#(v1-v2)/6 = v2/7 + 12 => 7v1 - 7v2 = 6v2 + 504 => 7v1 - 13v2 = 504
coef = np.matrix('4 -1; 7 -13')
res = np.matrix('18; 504')
V = np.linalg.inv(np.transpose(coef)*coef)*np.transpose(coef)*res
print("Tensão v1:",float(V[0]),"V")
print("Tensão v2:",float(V[1]),"V")

"""
Explanation: Problema Prático 3.1
Obtenha as tensões nodais no circuito da Figura 3.4
End of explanation
"""


print("Exemplo 3.2")
#i1 + ix = 3
#ix = i2 + i3
#i1 + i2 = 2*ix
#i1 = (v1-v3)/4
#i2 = (v2-v3)/8
#i3 = v2/4
#ix = (v1-v2)/2
#(v1-v3)/4 + (v1-v2)/2 = 3             =>     9v1 - 6v2 - 3v3 = 36
#(v1-v2)/2 = (v2-v3)/8 + v2/4          =>     4v1 - 7v2 + v3 = 0
#(v1-v3)/4 + (v2-v3)/8 = v1 - v2       =>     -6v1 + 9v2 - 3v3 = 0
coef = np.matrix('9 -6 -3;4 -7 1;-6 9 -3')
res = np.matrix('36;0;0')
V = np.linalg.inv(coef)*res
print("Tensão V1:",float(V[0]),"V")
print("Tensão V2:",float(V[1]),"V")
print("Tensão V3:",float(V[2]),"V")

"""
Explanation: Exemplo 3.2
Determine as tensões na Figura 3.5a.
End of explanation
"""


print("Problema Prático 3.2")
#i2 = i1 + 4
#ix = i2 + 4*ix
#i1 + i3 + 4*ix = 0
#i1 = (v3-v1)/2
#i2 = (v1-v2)/3
#i3 = v3/6
#ix = v2/4
#(v1-v2)/3 = (v3-v1)/2 + 4       =>     10v1 - 4v2 -6v3 = 48
#v2/4 = (v1-v2)/3 + v2           =>     4v1 + 5v2 = 0
#(v3-v1)/2 + v3/6 + v2 = 0       =>     -3v1 + 6v2 + 4v3= 0
coef = np.matrix("10 -4 -6;4 5 0;-3 6 4")
res = np.matrix("48;0;0")
V = np.linalg.inv(coef)*res
print("Tensão V1:",float(V[0]),"V")
print("Tensão V2:",float(V[1]),"V")
print("Tensão V3:",float(V[2]),"V")

"""
Explanation: Problema Prático 3.2
Determine as tensões nos três primeiros nós que não são de referência no circuito da Figura 3.6.
End of explanation
"""


