mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-12-18 09:10:16 +00:00
e791a2067b
* capacitor equivalence algorithm * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Apply suggestions from code review * Update capacitor_equivalence.py --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Tianyi Zheng <tianyizheng02@gmail.com>
54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
# https://farside.ph.utexas.edu/teaching/316/lectures/node46.html
|
|
|
|
from __future__ import annotations
|
|
|
|
|
|
def capacitor_parallel(capacitors: list[float]) -> float:
|
|
"""
|
|
Ceq = C1 + C2 + ... + Cn
|
|
Calculate the equivalent resistance for any number of capacitors in parallel.
|
|
>>> capacitor_parallel([5.71389, 12, 3])
|
|
20.71389
|
|
>>> capacitor_parallel([5.71389, 12, -3])
|
|
Traceback (most recent call last):
|
|
...
|
|
ValueError: Capacitor at index 2 has a negative value!
|
|
"""
|
|
sum_c = 0.0
|
|
for index, capacitor in enumerate(capacitors):
|
|
if capacitor < 0:
|
|
msg = f"Capacitor at index {index} has a negative value!"
|
|
raise ValueError(msg)
|
|
sum_c += capacitor
|
|
return sum_c
|
|
|
|
|
|
def capacitor_series(capacitors: list[float]) -> float:
|
|
"""
|
|
Ceq = 1/ (1/C1 + 1/C2 + ... + 1/Cn)
|
|
>>> capacitor_series([5.71389, 12, 3])
|
|
1.6901062252507735
|
|
>>> capacitor_series([5.71389, 12, -3])
|
|
Traceback (most recent call last):
|
|
...
|
|
ValueError: Capacitor at index 2 has a negative or zero value!
|
|
>>> capacitor_series([5.71389, 12, 0.000])
|
|
Traceback (most recent call last):
|
|
...
|
|
ValueError: Capacitor at index 2 has a negative or zero value!
|
|
"""
|
|
|
|
first_sum = 0.0
|
|
for index, capacitor in enumerate(capacitors):
|
|
if capacitor <= 0:
|
|
msg = f"Capacitor at index {index} has a negative or zero value!"
|
|
raise ValueError(msg)
|
|
first_sum += 1 / capacitor
|
|
return 1 / first_sum
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import doctest
|
|
|
|
doctest.testmod()
|