mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-30 16:31:08 +00:00
50 lines
1.2 KiB
Python
50 lines
1.2 KiB
Python
|
import math
|
||
|
|
||
|
|
||
|
def real_power(apparent_power: float, power_factor: float) -> float:
|
||
|
"""
|
||
|
Calculate real power from apparent power and power factor.
|
||
|
|
||
|
Examples:
|
||
|
>>> real_power(100, 0.9)
|
||
|
90.0
|
||
|
>>> real_power(0, 0.8)
|
||
|
0.0
|
||
|
>>> real_power(100, -0.9)
|
||
|
-90.0
|
||
|
"""
|
||
|
if (
|
||
|
not isinstance(power_factor, (int, float))
|
||
|
or power_factor < -1
|
||
|
or power_factor > 1
|
||
|
):
|
||
|
raise ValueError("power_factor must be a valid float value between -1 and 1.")
|
||
|
return apparent_power * power_factor
|
||
|
|
||
|
|
||
|
def reactive_power(apparent_power: float, power_factor: float) -> float:
|
||
|
"""
|
||
|
Calculate reactive power from apparent power and power factor.
|
||
|
|
||
|
Examples:
|
||
|
>>> reactive_power(100, 0.9)
|
||
|
43.58898943540673
|
||
|
>>> reactive_power(0, 0.8)
|
||
|
0.0
|
||
|
>>> reactive_power(100, -0.9)
|
||
|
43.58898943540673
|
||
|
"""
|
||
|
if (
|
||
|
not isinstance(power_factor, (int, float))
|
||
|
or power_factor < -1
|
||
|
or power_factor > 1
|
||
|
):
|
||
|
raise ValueError("power_factor must be a valid float value between -1 and 1.")
|
||
|
return apparent_power * math.sqrt(1 - power_factor**2)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
import doctest
|
||
|
|
||
|
doctest.testmod()
|