回路トポロジーのメモ帳

回路の簡単な計算のために。
Pythonのコードも載せておく。

テブナンの定理
![IMG_2459.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3759109/70862e54-f41a-31fd-4179-cdb99fdbec41.jpeg)



テブナンの定理とホイーストンブリッジ
![IMG_2455.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3759109/bc707316-39e6-f06c-b366-6cae4f4ad2ad.jpeg)

I5=(R2R3-R1R4)/(R1R2R3+R1R2R4+R1R3R4+ R1R3R5+R1R4R5+R2R3R4+R2R3R5+R2R4R5)×V1

```py


def calculate_I5(R1, R2, R3, R4, R5, V1):
    numerator = (R2*R3 - R1*R4)
    denominator = (R1*R2*R3 + R1*R2*R4 + R1*R3*R4 + R1*R3*R5 + R1*R4*R5 + R2*R3*R4 + R2*R3*R5 + R2*R4*R5)
    
    if denominator != 0:  # 分母が0でない場合のみ計算を行う
        I5 = (numerator / denominator) * V1
        return I5
    else:
        print("Error: Denominator is zero, division by zero not allowed.")

# 例: 数値を与えて計算する
R1 = 2.0
R2 = 3.0
R3 = 4.0
R4 = 5.0
R5 = 6.0
V1 = 10.0

I5_value = calculate_I5(R1, R2, R3, R4, R5, V1)
if I5_value is not None:
    print("I5 =", I5_value)



```


デルタスター変換(仮)フィルター

![IMG_2460.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3759109/c3865c5b-aaa0-50b3-a04b-c0c1cee96b72.jpeg)

デルタスター変換は、フィルターとして使用される場合、T型またはπ型回路と言い換えられる。

![IMG_2456.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3759109/152678a7-d7f1-9efb-ea47-5cac0110514b.jpeg)

G=(Z1Z2+Z2Z3+Z3Z1+Z3Z4)/(Z1Z2+Z2Z3+Z3Z1+Z3Z4+Z4Z1)

```py

import cmath

def calculate_G(Z1, Z2, Z3, Z4):
    numerator = Z1*Z2 + Z2*Z3 + Z3*Z1 + Z3*Z4
    denominator = Z1*Z2 + Z2*Z3 + Z3*Z1 + Z3*Z4 + Z4*Z1
    
    if denominator != 0:
        G = numerator / denominator
        return G
    else:
        return None  # 分母がゼロの場合はエラーを返すか、適切な処理を行ってください

# 実際の値を入力してGを計算する例（複素数の場合、cmath.rect関数を使用して極形式で表現します）
Z1 = cmath.rect(2, cmath.pi/4)  # Z1 = 2 * e^(i*pi/4)
Z2 = cmath.rect(3, cmath.pi/3)  # Z2 = 3 * e^(i*pi/3)
Z3 = cmath.rect(1, cmath.pi/6)  # Z3 = 1 * e^(i*pi/6)
Z4 = cmath.rect(4, cmath.pi/2)  # Z4 = 4 * e^(i*pi/2)

result_G = calculate_G(Z1, Z2, Z3, Z4)
if result_G is not None:
    print("Gの値は:", result_G)
else:
    print("分母がゼロになるため計算できません。")

```

2段ラダー(仮)型フィルター
2段L型回路
![IMG_2457.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3759109/d5977b5a-f7cb-8b5e-9ecf-8586fd9098d7.jpeg)


G=(Z1Z2+Z1Z3+Z2Z3+Z3Z4)÷ (Z1Z2+Z1Z3+Z2Z3+Z3Z4+Z1Z4)

```py
import cmath

def calculate_G(Z1, Z2, Z3, Z4):
    numerator = Z1*Z2 + Z1*Z3 + Z2*Z3 + Z3*Z4
    denominator = Z1*Z2 + Z1*Z3 + Z2*Z3 + Z3*Z4 + Z1*Z4
    
    if denominator != 0:
        G = numerator / denominator
        return G
    else:
        return None  # 分母がゼロの場合はエラーを返すか、適切な処理を行ってください

# 実際の値を入力してGを計算する例（複素数の場合、cmath.rect関数を使用して極形式で表現します）
Z1 = 2 + 1j  # Z1 = 2 + j
Z2 = 3 + 2j  # Z2 = 3 + 2j
Z3 = -1 + 1j  # Z3 = -1 + j
Z4 = 4 - 3j  # Z4 = 4 - 3j

result_G = calculate_G(Z1, Z2, Z3, Z4)
if result_G is not None:
    print("Gの値は:", result_G)
else:
    print("分母がゼロになるため計算できません。")


```


キルヒホッフの法則と行列計算

![IMG_2458.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3759109/21ad4428-f809-a8d4-8c79-67b6590b769d.jpeg)

PythonよりもWolframを使った方が速く計算できるかもしれない。

https://ja.wolframalpha.com/input?i=%E9%80%A3%E7%AB%8B%E6%96%B9%E7%A8%8B%E5%BC%8F%E3%80%807+x+-+y+%3D+8%2C+-9+x+%2B+4+y+%3D+6

3×3行列法としてホイートストンブリッジ

https://engineer-education.com/electrical-mathematics-15_3x3matrix_wheatstone-bridge/

```py
import numpy as np

def calculate_inverse_matrix(matrix):
    # 行列の逆行列を計算
    try:
        inv_matrix = np.linalg.inv(matrix)
        return inv_matrix
    except np.linalg.LinAlgError:
        # 逆行列が存在しない場合
        print("逆行列は存在しません。")
        return None

def solve_linear_equations(matrix, vector):
    # 連立方程式を解く
    try:
        solution = np.linalg.solve(matrix, vector)
        return solution
    except np.linalg.LinAlgError:
        # 解が存在しない場合
        print("解が存在しません。")
        return None

# 3×3行列を入力
A = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])

# 逆行列を計算
inverse_A = calculate_inverse_matrix(A)
if inverse_A is not None:
    print("逆行列:\n", inverse_A)

# 3×3係数行列と右辺のベクトルを定義
A = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])

b = np.array([6, 15, 24])  # 右辺のベクトル

# 連立方程式を解く
solution = solve_linear_equations(A, b)
if solution is not None:
    print("連立方程式の解:", solution)


```

テブナンの定理試し打ち回路(仮)
電験頻出
![IMG_2462.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3759109/cb8a622b-aa4d-947b-c2af-ffbd2fbdcc16.jpeg)

```py
# 与えられた数値を変数に代入
a = 2
b = 3
c = 8
d = 5
e = 9

# R合の計算
R合 = (a * b) / (a + b) + (e * d) / (e + d)

# Vの計算
E1 = 10  # E1の値を適切な値に置き換える
E2 = 15  # E2の値を適切な値に置き換える
V = (E1 * b) / (a + b) - (E2 * d) / (e + d)

# 求める電流の計算
求める電流 = V / (R合 + c)

# 結果の表示
print("R合の値:", R合)
print("Vの値:", V)
print("求める電流の値:", 求める電流)


```


![IMG_2463.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3759109/516858e3-bbfa-6b4e-38c4-a7f3567b0995.jpeg)




```py
def calculate_R(a, b, c, d, e):
    A = a * b / (a + b + c)
    B = a * c / (a + b + c)
    C = b * c / (a + b + c)
    
    numerator = (B + d) * (C + e)
    denominator = B + d + C + e
    
    R = A + numerator / denominator
    return R

# 例として、a=1, b=2, c=3, d=4, e=5 の場合の計算
a = 1
b = 2
c = 3
d = 4
e = 5

result = calculate_R(a, b, c, d, e)
print("計算結果 R =", result)


```

![IMG_2582.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3759109/6319b347-bcd8-86e4-abea-7448578f75b8.jpeg)

デルタスター変換をして最後はテブナンの定理の回路

![IMG_6087.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3759109/9d914af3-1e2f-aa6e-73ce-b007060ec2fe.jpeg)

https://detail-infomation.com/miller-effect/