{
"cells": [
{
"cell_type": "markdown",
"id": "2cecfdc1",
"metadata": {},
"source": [
"# Ptychographic Iterative Engine (Gradients and Hessians)"
]
},
{
"cell_type": "markdown",
"id": "7dda1a25",
"metadata": {},
"source": [
"## PIE - Gradient"
]
},
{
"cell_type": "markdown",
"id": "d0ccdb3f",
"metadata": {},
"source": [
"PIE ultimately assumes independent Object and Probe. This is respected in these derivatives. \n",
"\n",
"$S_{mk} = O_k\\cdot P_{mk}$\n",
"\n",
"$P_{mk} = G(A_{mk})$"
]
},
{
"cell_type": "markdown",
"id": "a429270f",
"metadata": {},
"source": [
"### With respect to Object\n",
"\n",
"Same for all nonlinear methods \n",
"\n",
"$\\frac{dL_m}{dO_k^*} = -1\\cdot P_{mk}^*\\cdot \\Delta S_{mk}$"
]
},
{
"cell_type": "markdown",
"id": "faa41ea8",
"metadata": {},
"source": [
"### With respect to Probe and Probe-Pulse\n",
"\n",
"$\\frac{dL_m}{dA_k^*} = \\left(\\frac{dA_{mj}}{dA_k}\\right)^*\\left(\\frac{dP_{mj}}{dA_{mj}}\\right)^*\\frac{dL_m}{dP_{mj}^*}$ \n",
"\n",
"$\\frac{dL_m}{dP_{mk}^*} = -1\\cdot O_k^*\\cdot \\Delta S_{mk}$ \n",
"\n",
"
\n",
"\n",
"$\\frac{dA_{mj}}{dA_k} = \\sum_{n}D_{kn}D_{nj}\\cdot e^{1j\\phi_{mn}}\\qquad$ (in the exponent $j$ refers to the imaginary unit) \n",
"\n",
"
\n",
"\n",
"$\\frac{dP_{mj}}{dA_{mj}}$ depends on the nonlinear method. \n",
"\n",
"\n",
"1. SHG \n",
"\n",
" $\\frac{dP_{mj}}{dA_{mj}} = 1$\n",
"\n",
"\n",
"2. THG \n",
"\n",
" $\\frac{dP_{mj}}{dA_{mj}} = 2A_{mj}$\n",
"\n",
"\n",
"3. PG \n",
"\n",
" $\\frac{dP_{mj}}{dA_{mj}} = A_{mj}^*$\n",
"\n",
"\n",
"4. SD \n",
"\n",
" $\\frac{dP_{mj}}{dA_{mj}^*} = 2A_{mj}^*\\qquad$ (the other wirtinger derivative is zero)\n",
"\n",
"\n",
"5. nth-HG \n",
"\n",
" $\\frac{dP_{mj}}{dA_{mj}} = (n-1)\\cdot A_{mj}^{n-2}$ \n",
"\n",
"\n",
"
\n",
"\n",
"For SD the wirtinger derivative of probe with respect to the modified probe pulse is zero. Thus one has to use a different chain-rule composition: \n",
"\n",
"$\\frac{dL_m}{dA_k^*} = \\left(\\frac{dA_{mj}}{dA_k}\\right)^*\\frac{dP_{mj}}{dA_{mj}^*}\\frac{dL_m}{dP_{mj}}$ \n",
"\n",
"$\\frac{dL_m}{dP_{mj}} = \\left(\\frac{dL_m}{dP_{mj}^*}\\right)^*$"
]
},
{
"cell_type": "markdown",
"id": "ae157cac",
"metadata": {},
"source": [
"### With respect to Object (Chirp-Scan) \n",
"\n",
"In a Chirp-Scan the object itself is modified along woth the probe. \n",
"\n",
"$S_{mk} = O_{mk}\\cdot P_{mk}$\n",
"\n",
"$\\frac{dL_m}{dO_k^*} = \\left(\\frac{dO_{mj}}{dO_k}\\right)^*\\frac{dL_m}{dO_{mj}^*}$ \n",
"\n",
"$\\frac{dL_m}{dO_{mk}^*} = -1\\cdot P_{mk}^*\\cdot \\Delta S_{mk}$ \n",
"\n",
"\n",
"\n",
"$\\frac{dO_{mj}}{dO_k} = \\sum_{n}D_{kn}D_{nj}\\cdot e^{1j\\phi_{mn}}\\qquad$ (in the exponent $j$ refers to the imaginary unit) \n"
]
},
{
"cell_type": "markdown",
"id": "ff7b2bc9",
"metadata": {},
"source": [
"## PIE - Pseudo Hessian"
]
},
{
"cell_type": "markdown",
"id": "9362e91d",
"metadata": {},
"source": [
"### With respect to Object\n",
"\n",
"Same for all nonlinear methods \n",
"\n",
"$\\frac{d|S_{mn}|}{dO_k^*} = \\frac{S_{mn}}{2|S_{mn}|} \\cdot D_{kn} P_{mk}^*$ \n",
"\n",
"$\\frac{d}{dO_j}\\left(\\frac{d|S_{mn}|}{dO_k}\\right)^* = \\left(\\frac{d}{dO_j^*}\\left(\\frac{d|S_{mn}|}{dO_k^*}\\right)^*\\right)^* = \\frac{1}{4}D_{kn}D_{nj} P_{mk}^*P_{mj}\\cdot\\frac{1}{|S_{mn}|}$ \n"
]
},
{
"cell_type": "markdown",
"id": "b659f1a5",
"metadata": {},
"source": [
"### With respect to Probe and Probe-Pulse \n",
"\n",
"$\\frac{d|S_{mn}|}{dA_k^*} = \\left(\\frac{dA_{mj}}{dA_k}\\right)^*\\left(\\frac{dP_{mj}}{dA_{mj}}\\right)^*\\frac{d|S_{mn}|}{dP_{mj}^*}$ \n",
"\n",
"$\\frac{d|S_{mn}|}{dP_{mk}^*} = \\frac{S_{mn}}{2|S_{mn}|} \\cdot D_{kn} O_k^*$ \n",
"\n",
"$\\frac{dP_{mj}}{dA_{mj}}$ depends on the nonlinear method. Same as in gradient. \n",
"\n",
"\n",
"$\\frac{dA_{mj}}{dA_k} = \\sum_{n}D_{kn}D_{nj}\\cdot e^{1j\\phi_{mn}}\\qquad$ (in the exponent $j$ refers to the imaginary unit) \n",
"\n",
"
\n",
"\n",
"$\\frac{d}{dA_j}\\left(\\frac{d|S_{mn}|}{dA_k}\\right)^* = \\frac{dA_{mu}}{dA_k}\\left(\\frac{dA_{mi}}{dA_j}\\right)^*\\frac{dP_{mu}}{dA_{mu}}\\left(\\frac{dP_{mi}}{dA_{mi}}\\right)^*\\frac{d}{dP_{mu}}\\left(\\frac{d|S_{mn}|}{dP_{mi}}\\right)^*$\n",
"\n",
"$\\frac{d}{dP_{mj}}\\left(\\frac{d|S_{mn}|}{dP_{mk}}\\right)^* = \\left(\\frac{d}{dP_{mj}}\\left(\\frac{d|S_{mn}|}{dP_{mk}}\\right)^*\\right)^* = \\frac{1}{4}D_{kn}D_{nj} O_k^*O_j\\cdot\\frac{1}{|S_{mn}|}$ \n",
"\n",
"
\n",
"\n",
"\n",
"For SD the wirtinger derivative of probe with respect to the modified probe pulse is zero. Thus one has to use a different chain-rule composition: \n",
"\n",
"\n",
"$\\frac{d}{dA_j}\\left(\\frac{d|S_{mn}|}{dA_k}\\right)^* = \\frac{dA_{mu}}{dA_k}\\left(\\frac{dA_{mi}}{dA_j}\\right)^*\\frac{dP_{mu}^*}{dA_{mu}}\\left(\\frac{dP_{mi}^*}{dA_{mi}}\\right)^*\\frac{d}{dP_{mu}^*}\\left(\\frac{d|S_{mn}|}{dP_{mi}^*}\\right)^*$ \n",
"\n",
"$\\frac{d|S_{mn}|}{dP_{mi}^*}=\\left(\\frac{d|S_{mn}|}{dP_{mi}}\\right)^*$"
]
},
{
"cell_type": "markdown",
"id": "977e01e7",
"metadata": {},
"source": [
"### With respect to Object (Chirp-Scan) \n",
"\n",
"$\\frac{d|S_{mn}|}{dA_k^*} = \\left(\\frac{dA_{mj}}{dA_j}\\right)^*\\frac{d|S_{mn}|}{dA_{mj}^*}$\n",
"\n",
"$\\frac{d|S_{mn}|}{dA_{mk}^*} = \\frac{S_{mn}}{2|S_{mn}|} \\cdot D_{kn} P_{mk}^*$ \n",
"\n",
"
\n",
"\n",
"$\\frac{d}{dA_j}\\left(\\frac{d|S_{mn}|}{dA_k}\\right)^* = \\frac{dA_{mu}}{dA_k}\\left(\\frac{dA_{mi}}{dA_j}\\right)^*\\frac{d}{dA_{mu}}\\left(\\frac{d|S_{mn}|}{dA_{mi}}\\right)^*$\n",
"\n",
"$\\frac{d}{dA_{mj}}\\left(\\frac{d|S_{mn}|}{dA_{mk}}\\right)^* = \\left(\\frac{d}{dA_{mj}^*}\\left(\\frac{d|S_{mn}|}{dA_{mk}^*}\\right)^*\\right)^* = \\frac{1}{4}D_{kn}D_{nj} P_{mk}^*P_{mj}\\cdot\\frac{1}{|S_{mn}|}$ \n"
]
}
],
"metadata": {
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 5
}