mirror of
https://github.com/vale981/fpraktikum
synced 2025-03-06 01:51:38 -05:00
415 lines
9 KiB
Text
415 lines
9 KiB
Text
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"\"\"\"Calculation of the Kaustik of a Laserbeam.\"\"\"\n",
|
|
"\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"import numpy as np\n",
|
|
"from SecondaryValue import SecondaryValue\n",
|
|
"from scipy.optimize import curve_fit\n",
|
|
"import pandas as pd\n",
|
|
"import glob\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Input Parameters\n",
|
|
"R = 100 # cm\n",
|
|
"L = 80 # cm\n",
|
|
"f = 15 # cm\n",
|
|
"lam = 0.00006328 # cm\n",
|
|
"lens_pos = 25+29.5+10 # cm\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Optical Matrix Elements\n",
|
|
"A = SecondaryValue('1-x/f', defaults=dict(f=f))\n",
|
|
"B = SecondaryValue('s+x-x*s/f', defaults=dict(f=f))\n",
|
|
"C = SecondaryValue('-1/f', defaults=dict(f=f))\n",
|
|
"D = SecondaryValue('1-s/f', defaults=dict(f=f))\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"w0 = SecondaryValue('((l/pi)^2*L*(R-L))^(1/4)', defaults=dict(l=lam, L=L, R=R, pi=np.pi))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# b parameter\n",
|
|
"b = SecondaryValue('l/(pi*w0^2)', defaults=dict(l=lam, pi=np.pi), dependencies=dict(w0=w0))\n",
|
|
"new_b = SecondaryValue('b*(A*D-C*B)/(A^2+B^2*b^2)', dependencies=dict(A=A, B=B, C=C, D=D, b=b))\n",
|
|
"b_before = SecondaryValue('b/(1+x^2*b^2)', dependencies=dict(b=b))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# omega\n",
|
|
"w = SecondaryValue('sqrt(l/(p*b))', defaults=dict(l=lam, p=np.pi), dependencies=dict(b=new_b))\n",
|
|
"w_before = SecondaryValue('sqrt(l/(p*b))', defaults=dict(l=lam, p=np.pi), dependencies=dict(b=b_before))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"0.02838496052328435"
|
|
]
|
|
},
|
|
"execution_count": 14,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"w0()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"data = pd.read_csv(r'./../messungen/Boettcher_Matthes/Kaustik-Messung/11_2008-07-13_03h-00m-41s.csv', sep=';', encoding='latin1')\n",
|
|
"fwhm = 'Value.18'\n",
|
|
"zs = np.array([11, 13, 15, 17, 19, 21, 23, 27])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 16,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"def extract_fwhm(z):\n",
|
|
" filename = \\\n",
|
|
" glob.glob(f'./../messungen/Boettcher_Matthes/Kaustik-Messung/{z}*.csv')[0]\n",
|
|
" dat = pd.read_csv(filename, sep=';', encoding='latin1')\n",
|
|
" return dat[fwhm][0]\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"widths = np.array([extract_fwhm(z) for z in zs]) * 0.00056 / (np.sqrt(2*np.log(2))) # cm"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"popt, pcov = curve_fit(lambda x, w0, off: w(w0=w0, s=lens_pos, x=[x+off]), zs, widths)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 19,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"%matplotlib qt5\n",
|
|
"xs_before = np.linspace(0, lens_pos, 1000)\n",
|
|
"xs_after = np.linspace(0, 40, 1000)\n",
|
|
"plt.plot(xs_before, w_before(w0=popt[0], x=[xs_before]), color='grey',\n",
|
|
" linestyle='--')\n",
|
|
"plt.plot(lens_pos + xs_after, w(w0=popt[0], s=lens_pos, x=[xs_after]), color='grey',\n",
|
|
" linestyle='--', label='Theoretische Kaustik, $w_0={:f}cm$'.format(popt[0]))\n",
|
|
"plt.errorbar(lens_pos + zs + popt[1], widths, yerr=0.00056,\n",
|
|
" xerr=1, linestyle='none', marker='x', markersize=10,\n",
|
|
" ecolor='red', elinewidth=1, barsabove=True,\n",
|
|
" label='Gemessene Kaustik', zorder=100)\n",
|
|
"plt.xlabel('z [cm]')\n",
|
|
"plt.ylabel('w [cm]')\n",
|
|
"plt.legend()\n",
|
|
"plt.grid()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 330,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"array([0.00158225, 0.234916 ])"
|
|
]
|
|
},
|
|
"execution_count": 330,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"np.sqrt(np.diag(pcov))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 331,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"array([0.03963238, 1.20690559])"
|
|
]
|
|
},
|
|
"execution_count": 331,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"popt"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 332,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"(0.02838496052328435, 0.0001330545024528954)"
|
|
]
|
|
},
|
|
"execution_count": 332,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"w0(L=(80,.5))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 344,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
",0,1,2\n",
|
|
"0,11.0,29.9,142.0\n",
|
|
"1,13.0,19.1,91.0\n",
|
|
"2,15.0,14.0,67.0\n",
|
|
"3,17.0,17.5,83.0\n",
|
|
"4,19.0,27.7,132.0\n",
|
|
"5,21.0,41.5,197.0\n",
|
|
"6,23.0,56.0,266.0\n",
|
|
"7,27.0,78.3,372.0\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"\n",
|
|
"print(pd.DataFrame(np.array([zs, np.array([extract_fwhm(z) for z in zs]), np.around(widths*10*1000)]).T).to_csv())"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"argv": [
|
|
"/usr/bin/python3",
|
|
"-m",
|
|
"ipykernel_launcher",
|
|
"-f",
|
|
"{connection_file}"
|
|
],
|
|
"display_name": "Python 3",
|
|
"env": null,
|
|
"interrupt_mode": "signal",
|
|
"language": "python",
|
|
"metadata": null,
|
|
"name": "python3"
|
|
},
|
|
"name": "Kaustik.ipynb"
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|