mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-23 21:11:08 +00:00
Capacitor equivalence algorithm (#9814)
* 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>
This commit is contained in:
parent
e5a6a97c32
commit
e791a2067b
53
electronics/capacitor_equivalence.py
Normal file
53
electronics/capacitor_equivalence.py
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
# 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()
|
Loading…
Reference in New Issue
Block a user