# Import libraries
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
Metallsorte "Sodium/Natrium"
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
# Erstellen des Pandas DataFrames
measurements_light_intensity = {'Photon density':[0.2, 0.4, 0.6, 0.8, 1.0], 'Photocurrent (pA)':[3.2, 6.4, 9.6, 12.8, 16.0]}
data_light_intensity = pd.DataFrame(data=measurements_light_intensity)
print(data_light_intensity)
Photon density Photocurrent (pA)
0 0.2 3.2
1 0.4 6.4
2 0.6 9.6
3 0.8 12.8
4 1.0 16.0
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
measurements_voltage_sodium = {'Wavelength (nm)':[300, 350, 400, 450, 500], 'Stopping voltage (V)':[1.79, 1.19, 0.75, 0.41, 0.13]}
data_voltage_sodium = pd.DataFrame (data=measurements_voltage_sodium)
print (data_voltage_sodium)
Wavelength (nm) Stopping voltage (V)
0 300 1.79
1 350 1.19
2 400 0.75
3 450 0.41
4 500 0.13
import pandas as pd
from scipy.constants import c, e
measurements_voltage_sodium = {
'Wavelength (nm)': [300, 350, 400, 450, 500],
'Stopping voltage (V)': [1.79, 1.19, 0.75, 0.41, 0.13]}
data_voltage_sodium = pd.DataFrame(data=measurements_voltage_sodium)
data_voltage_sodium["Frequency (Hz)"] = c / (data_voltage_sodium["Wavelength (nm)"] * 3e8)
data_voltage_sodium["Kinetic energy (J)"] = e * data_voltage_sodium["Stopping voltage (V)"]
print(data_voltage_sodium)
Wavelength (nm) Stopping voltage (V) Frequency (Hz) Kinetic energy (J)
0 300 1.79 0.003331 2.867896e-19
1 350 1.19 0.002855 1.906590e-19
2 400 0.75 0.002498 1.201632e-19
3 450 0.41 0.002221 6.568924e-20
4 500 0.13 0.001999 2.082830e-20
import pandas as pd
from scipy.constants import c, e
measurements_voltage_sodium = {
'Wavelength (nm)': [300, 350, 400, 450, 500],
'Stopping voltage (V)': [1.79, 1.19, 0.75, 0.41, 0.13]}
data_voltage_sodium = pd.DataFrame(data=measurements_voltage_sodium)
data_voltage_sodium["Frequency (Hz)"] = c / (data_voltage_sodium["Wavelength (nm)"] * 1.6e-19)
data_voltage_sodium["Kinetic energy (J)"] = e * data_voltage_sodium["Stopping voltage (V)"]
print(data_voltage_sodium)
Wavelength (nm) Stopping voltage (V) Frequency (Hz) Kinetic energy (J)
0 300 1.79 6.245676e+24 2.867896e-19
1 350 1.19 5.353437e+24 1.906590e-19
2 400 0.75 4.684257e+24 1.201632e-19
3 450 0.41 4.163784e+24 6.568924e-20
4 500 0.13 3.747406e+24 2.082830e-20
data_voltage_sodium.plot(x="Frequency (Hz)", y="Kinetic energy (J)", kind="scatter")
plt.xlabel("Frequency (Hz)")
plt.ylabel("Kinetic energy (J)")
plt.title("Kinetische Energie der Elektronen als Funktion der Frequenz")
plt.show()
/shared-libs/python3.9/py/lib/python3.9/site-packages/pandas/plotting/_matplotlib/core.py:1041: UserWarning: No data for colormapping provided via 'c'. Parameters 'cmap' will be ignored
scatter = ax.scatter(
import numpy as np
# Arrays eU und f
eU = data_voltage_sodium["Kinetic energy (J)"]
f = data_voltage_sodium["Frequency (Hz)"]
# Linearen Fit mit polyfit
coefficients = np.polyfit(f, eU, 1)
m = coefficients[0] # Steigung
q = coefficients[1] # y-Achsenabschnitt
print("Steigung (m):", m)
print("y-Achsenabschnitt (q):", q)
Steigung (m): 1.062314897942447e-43
y-Achsenabschnitt (q): -3.772189457422625e-19
work_function_joules = 2.28 * 1.6e-19 # Annahme eines typischen Werts von 2.28 eV
work_function_ev = work_function_joules / 1.6e-19
print("Austrittsarbeit von Natrium in eV:", work_function_ev)
Austrittsarbeit von Natrium in eV: 2.28
import matplotlib.pyplot as plt
import numpy as np
# Arrays eU und f aus den experimentellen Daten
eU = data_voltage_sodium["Kinetic energy (J)"]
f = data_voltage_sodium["Frequency (Hz)"]
# Linearen Fit mit polyfit
coefficients = np.polyfit(f, eU, 1)
m = coefficients[0] # Steigung
q = coefficients[1] # y-Achsenabschnitt
# Frequenzbereich für den linearen Fit
f_range = np.linspace(0, max(f), 100)
eU_fit = m * f_range + q # Zusatzarray für den linearen Fit
# Plot der experimentellen Daten und des linearen Fits
plt.scatter(f, eU, label="Experimentelle Daten", color='blue')
plt.plot(f_range, eU_fit, label="Linearer Fit", color='red')
# Achsenbeschriftungen
plt.xlabel("Frequenz (Hz)")
plt.ylabel("Kinetische Energie (J)")
# Titel und Legende
plt.title("Kinetische Energie der Elektronen als Funktion von Frequenz")
plt.legend()
# Diagramm anzeigen
plt.show()
import pandas as pd
import numpy as np
# Experimental measurements
measurements_voltage_calcium = {'Wavelength (nm)': [200, 250, 300, 330, 350], 'Stopping voltage (V)': [3.311, 2.072, 1.240, 0.871, 0.650]}
data_voltage_calcium = pd.DataFrame(data=measurements_voltage_calcium)
# Constants
c = 2.998E8 # Speed of light in m/s
e = 1.602E-19 # Elementary charge in C
# Calculate frequency and kinetic energy
data_voltage_calcium["Frequency (Hz)"] = c / (data_voltage_calcium["Wavelength (nm)"] * 1E-9)
data_voltage_calcium["Kinetic energy (J)"] = e * data_voltage_calcium["Stopping voltage (V)"]
# Linear fit
lin_fit_voltage_calcium = np.polyfit(data_voltage_calcium["Frequency (Hz)"], data_voltage_calcium["Kinetic energy (J)"], 1)
print(f"Linear Fit:\n slope = {lin_fit_voltage_calcium[0]:.2e}\n y-intercept = {lin_fit_voltage_calcium[1]:.2e}")
# Work function (Austrittsarbeit)
E_A_calcium = -lin_fit_voltage_calcium[1]
print(f"Work function = {E_A_calcium:.2f} eV")
# Frequency threshold
f_g_calcium = -lin_fit_voltage_calcium[1] / lin_fit_voltage_calcium[0]
print(f"Frequency threshold = {f_g_calcium:.2e} Hz")
Linear Fit:
slope = 6.63e-34
y-intercept = -4.64e-19
Work function = 0.00 eV
Frequency threshold = 6.99e+14 Hz
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Experimental measurements
measurements_voltage_calcium = {'Wavelength (nm)': [200, 250, 300, 330, 350], 'Stopping voltage (V)': [3.311, 2.072, 1.240, 0.871, 0.650]}
data_voltage_calcium = pd.DataFrame(data=measurements_voltage_calcium)
# Constants
c = 2.998E8 # Speed of light in m/s
e = 1.602E-19 # Elementary charge in C
# Calculate frequency and kinetic energy
data_voltage_calcium["Frequency (Hz)"] = c / (data_voltage_calcium["Wavelength (nm)"] * 1E-9)
data_voltage_calcium["Kinetic energy (J)"] = e * data_voltage_calcium["Stopping voltage (V)"]
# Linear fit
lin_fit_voltage_calcium = np.polyfit(data_voltage_calcium["Frequency (Hz)"], data_voltage_calcium["Kinetic energy (J)"], 1)
print(f"Linear Fit Calcium:\n slope = {lin_fit_voltage_calcium[0]:.2e}\n y-intercept = {lin_fit_voltage_calcium[1]:.2e}")
# Work function (Austrittsarbeit)
E_A_calcium = -lin_fit_voltage_calcium[1]
print(f"Work function Calcium = {E_A_calcium:.2f} eV")
# Frequency threshold
f_g_calcium = -lin_fit_voltage_calcium[1] / lin_fit_voltage_calcium[0]
print(f"Frequency threshold Calcium = {f_g_calcium:.2e} Hz")
# Plotting
plt.figure(figsize=(8, 6))
plt.scatter(data_voltage_calcium["Frequency (Hz)"], data_voltage_calcium["Kinetic energy (J)"], label='Experimental Data (Calcium)')
plt.plot(data_voltage_calcium["Frequency (Hz)"], np.polyval(lin_fit_voltage_calcium, data_voltage_calcium["Frequency (Hz)"]), 'r-', label='Linear Fit (Calcium)')
plt.xlabel('Frequency (Hz)')
plt.ylabel('Kinetic energy (J)')
plt.title('Experimental Data and Linear Fits')
plt.legend()
plt.grid(True)
plt.show()
Linear Fit Calcium:
slope = 6.63e-34
y-intercept = -4.64e-19
Work function Calcium = 0.00 eV
Frequency threshold Calcium = 6.99e+14 Hz