mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-27 23:11:09 +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()
|