mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-27 15:01:08 +00:00
feat: Add mass energy equivalence in physics and doctests (#10202)
* updating DIRECTORY.md * feat: Add mass energy equivalence in physics * updating DIRECTORY.md * updating DIRECTORY.md * Apply suggestions from code review * Update physics/mass_energy_equivalence.py * Update mass_energy_equivalence.py --------- Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Co-authored-by: Tianyi Zheng <tianyizheng02@gmail.com>
This commit is contained in:
parent
dc4e89805a
commit
68faebe711
|
@ -815,6 +815,7 @@
|
||||||
* [Kinetic Energy](physics/kinetic_energy.py)
|
* [Kinetic Energy](physics/kinetic_energy.py)
|
||||||
* [Lorentz Transformation Four Vector](physics/lorentz_transformation_four_vector.py)
|
* [Lorentz Transformation Four Vector](physics/lorentz_transformation_four_vector.py)
|
||||||
* [Malus Law](physics/malus_law.py)
|
* [Malus Law](physics/malus_law.py)
|
||||||
|
* [Mass Energy Equivalence](physics/mass_energy_equivalence.py)
|
||||||
* [Mirror Formulae](physics/mirror_formulae.py)
|
* [Mirror Formulae](physics/mirror_formulae.py)
|
||||||
* [N Body Simulation](physics/n_body_simulation.py)
|
* [N Body Simulation](physics/n_body_simulation.py)
|
||||||
* [Newtons Law Of Gravitation](physics/newtons_law_of_gravitation.py)
|
* [Newtons Law Of Gravitation](physics/newtons_law_of_gravitation.py)
|
||||||
|
|
77
physics/mass_energy_equivalence.py
Normal file
77
physics/mass_energy_equivalence.py
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
"""
|
||||||
|
Title:
|
||||||
|
Finding the energy equivalence of mass and mass equivalence of energy
|
||||||
|
by Einstein's equation.
|
||||||
|
|
||||||
|
Description:
|
||||||
|
Einstein's mass-energy equivalence is a pivotal concept in theoretical physics.
|
||||||
|
It asserts that energy (E) and mass (m) are directly related by the speed of
|
||||||
|
light in vacuum (c) squared, as described in the equation E = mc². This means that
|
||||||
|
mass and energy are interchangeable; a mass increase corresponds to an energy increase,
|
||||||
|
and vice versa. This principle has profound implications in nuclear reactions,
|
||||||
|
explaining the release of immense energy from minuscule changes in atomic nuclei.
|
||||||
|
|
||||||
|
Equations:
|
||||||
|
E = mc² and m = E/c², where m is mass, E is Energy, c is speed of light in vacuum.
|
||||||
|
|
||||||
|
Reference:
|
||||||
|
https://en.wikipedia.org/wiki/Mass%E2%80%93energy_equivalence
|
||||||
|
"""
|
||||||
|
|
||||||
|
from scipy.constants import c # speed of light in vacuum (299792458 m/s)
|
||||||
|
|
||||||
|
|
||||||
|
def energy_from_mass(mass: float) -> float:
|
||||||
|
"""
|
||||||
|
Calculates the Energy equivalence of the Mass using E = mc²
|
||||||
|
in SI units J from Mass in kg.
|
||||||
|
|
||||||
|
mass (float): Mass of body.
|
||||||
|
|
||||||
|
Usage example:
|
||||||
|
>>> energy_from_mass(124.56)
|
||||||
|
1.11948945063458e+19
|
||||||
|
>>> energy_from_mass(320)
|
||||||
|
2.8760165719578165e+19
|
||||||
|
>>> energy_from_mass(0)
|
||||||
|
0.0
|
||||||
|
>>> energy_from_mass(-967.9)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
ValueError: Mass can't be negative.
|
||||||
|
|
||||||
|
"""
|
||||||
|
if mass < 0:
|
||||||
|
raise ValueError("Mass can't be negative.")
|
||||||
|
return mass * c**2
|
||||||
|
|
||||||
|
|
||||||
|
def mass_from_energy(energy: float) -> float:
|
||||||
|
"""
|
||||||
|
Calculates the Mass equivalence of the Energy using m = E/c²
|
||||||
|
in SI units kg from Energy in J.
|
||||||
|
|
||||||
|
energy (float): Mass of body.
|
||||||
|
|
||||||
|
Usage example:
|
||||||
|
>>> mass_from_energy(124.56)
|
||||||
|
1.3859169098203872e-15
|
||||||
|
>>> mass_from_energy(320)
|
||||||
|
3.560480179371579e-15
|
||||||
|
>>> mass_from_energy(0)
|
||||||
|
0.0
|
||||||
|
>>> mass_from_energy(-967.9)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
ValueError: Energy can't be negative.
|
||||||
|
|
||||||
|
"""
|
||||||
|
if energy < 0:
|
||||||
|
raise ValueError("Energy can't be negative.")
|
||||||
|
return energy / c**2
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
import doctest
|
||||||
|
|
||||||
|
doctest.testmod()
|
Loading…
Reference in New Issue
Block a user