{ "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 }