mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-12-05 02:40:16 +00:00
6a391d113d
* Added Photoelectric effect equation Photoelectric effect is one of the demonstration of quanta of energy. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fixed doctest Co-authored-by: Rohan Anand <96521078+rohan472000@users.noreply.github.com> * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Rohan Anand <96521078+rohan472000@users.noreply.github.com>
68 lines
2.4 KiB
Python
68 lines
2.4 KiB
Python
"""
|
|
The photoelectric effect is the emission of electrons when electromagnetic radiation ,
|
|
such as light, hits a material. Electrons emitted in this manner are called
|
|
photoelectrons.
|
|
|
|
In 1905, Einstein proposed a theory of the photoelectric effect using a concept that
|
|
light consists of tiny packets of energy known as photons or light quanta. Each packet
|
|
carries energy hv that is proportional to the frequency v of the corresponding
|
|
electromagnetic wave. The proportionality constant h has become known as the
|
|
Planck constant. In the range of kinetic energies of the electrons that are removed from
|
|
their varying atomic bindings by the absorption of a photon of energy hv, the highest
|
|
kinetic energy K_max is :
|
|
|
|
K_max = hv-W
|
|
|
|
Here, W is the minimum energy required to remove an electron from the surface of the
|
|
material. It is called the work function of the surface
|
|
|
|
Reference: https://en.wikipedia.org/wiki/Photoelectric_effect
|
|
|
|
"""
|
|
|
|
PLANCK_CONSTANT_JS = 6.6261 * pow(10, -34) # in SI (Js)
|
|
PLANCK_CONSTANT_EVS = 4.1357 * pow(10, -15) # in eVs
|
|
|
|
|
|
def maximum_kinetic_energy(
|
|
frequency: float, work_function: float, in_ev: bool = False
|
|
) -> float:
|
|
"""
|
|
Calculates the maximum kinetic energy of emitted electron from the surface.
|
|
if the maximum kinetic energy is zero then no electron will be emitted
|
|
or given electromagnetic wave frequency is small.
|
|
|
|
frequency (float): Frequency of electromagnetic wave.
|
|
work_function (float): Work function of the surface.
|
|
in_ev (optional)(bool): Pass True if values are in eV.
|
|
|
|
Usage example:
|
|
>>> maximum_kinetic_energy(1000000,2)
|
|
0
|
|
>>> maximum_kinetic_energy(1000000,2,True)
|
|
0
|
|
>>> maximum_kinetic_energy(10000000000000000,2,True)
|
|
39.357000000000006
|
|
>>> maximum_kinetic_energy(-9,20)
|
|
Traceback (most recent call last):
|
|
...
|
|
ValueError: Frequency can't be negative.
|
|
|
|
>>> maximum_kinetic_energy(1000,"a")
|
|
Traceback (most recent call last):
|
|
...
|
|
TypeError: unsupported operand type(s) for -: 'float' and 'str'
|
|
|
|
"""
|
|
if frequency < 0:
|
|
raise ValueError("Frequency can't be negative.")
|
|
if in_ev:
|
|
return max(PLANCK_CONSTANT_EVS * frequency - work_function, 0)
|
|
return max(PLANCK_CONSTANT_JS * frequency - work_function, 0)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import doctest
|
|
|
|
doctest.testmod()
|