Skip to content

Instantly share code, notes, and snippets.

@WetHat
Last active July 27, 2022 20:25
Show Gist options
  • Save WetHat/63d315df86b3bac4e9f95db3087b04ca to your computer and use it in GitHub Desktop.
Save WetHat/63d315df86b3bac4e9f95db3087b04ca to your computer and use it in GitHub Desktop.
Computing the Center of Radial Vector Fields From Inaccurate Measurement Data
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Note**: Click [here](https://nbviewer.jupyter.org/gist/WetHat/63d315df86b3bac4e9f95db3087b04ca/PY-RadialVectorFieldCenter.ipynb)\n",
"to view the full fidelity version of this notebook with\n",
"[nbviewer](https://nbviewer.jupyter.org/)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Computing the Center of Radial Vector Fields From Measured Data\n",
"\n",
"Radial [vector fields](https://ximera.osu.edu/mooculus/calculus3/vectorFields/digInVectorFields)\n",
"can be described by a family of vector-valued functions $\\vec{F}: \\mathbb{R}^n \\mapsto \\mathbb{R}^n$.\n",
"They can also be interpreted as emanating from a source or being absorbed into a sink at the origin.\n",
"Radial fields, at all locations other than the center, point directly outward from sources and directly inward to sinks.\n",
"\n",
"![Radial Vector Field](https://gist.github.com/WetHat/63d315df86b3bac4e9f95db3087b04ca/raw/1631f9bfe416b61c99f03775c0c995c7ea6bae3d/Zradial_field.png)\n",
"\n",
"**Fig 1. Example of a radial, 3-dimensional vector field pointing towards a sink.**\n",
"\n",
"Radial fields are encountered in a variety of scientific disciplines such as:\n",
"* Electrostatics: Electric field of point charges\n",
"* Geophysics: Gravitational fields\n",
"* Computational Geometry: Reconstruction of analytical surfaces from mesh approximations.\n",
"* Mathematics: [Pencil of Lines](https://en.wikipedia.org/wiki/Pencil_(mathematics)).\n",
"\n",
"In this notebook we are going to:\n",
"* develop a linear least squares optimization to reconstruct the source/sink location of\n",
" a radial field from inaccurate measurement data.\n",
"* use `sympy` wherever possible to establish confidence in the correctness of the involved mathematics.\n",
"* use `matplotlib` for illustration where feasible.\n",
"* Implement the algorithm with Python in a way that it can be easily ported to other languages."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# The Optimization Model\n",
"\n",
"The first step in the computation of the source/sink positions of a radial vector fields is the\n",
"definition of a mathematical model which is suitable for least squares optimization.\n",
"\n",
"We assume that the each data point acquired for a vector field is represented as a pair of vectors:\n",
"* a location in space\n",
"* a direction vector pointing towards / away from the vector field source / sink.\n",
"\n",
"In this notebook we refer to a location-direction measurement as a _ray_. We also assume that the data has no systematic measurement error.\n",
"\n",
"With this we represent the data set of a vector field measurement in _Python_ like so:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from collections import namedtuple"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"Measurement = namedtuple('Measurement',('points','directions','properties'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The measurement data structure consists of `points` and `directions` lists\n",
"including a `properties` (hash-)table describing optional specific details of the measurement."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Assumptions\n",
"\n",
"The key assumptions of the optimization model are:\n",
"1. Each ray of the measurement data $\\mathbb{M}$ defines a parametric line in space\n",
"2. These lines approximate a [Pencil of Lines](https://en.wikipedia.org/wiki/Pencil_(mathematics)#).\n",
" That is: For an ideal (precise) measurement field all lines intersect at the center $\\vec{p}$ of the radial vector field.\n",
"3. For measured data there will be no single common intersection point.\n",
" Hence we assume that a point which has the smallest average distance to all lines from the set of lines\n",
" created from measured directional data is the optimal approximation to the center of the radial vector field."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Before we dive into the concrete details of the model, we set up an [EquationRegistry](https://gist.github.com/WetHat/6a8e38fb92ab831d8cdb5d66f2d2e524) instance to track and auto-number `SymPy` math expressions."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# An utility class to keep track of math expressions\n",
"from jnbBuffs.eqreg import EquationRegistry"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# The registry for this notebook\n",
"EQ = EquationRegistry(show_names=False, github = True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To address item (1.) of the list above, some more Python packages are needed:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"from sympy import Eq, Function, expand\n",
"from sympy.abc import *\n",
"from jnbBuffs.vecops import * # symbolic vector extensions for sympy"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For a concise representation of parametric, n-dimensional straight lines we use the `SymPy` extensions\n",
"for symbolic vector algebra from [this GitHub Gist](https://gist.github.com/WetHat/1225a0524a53894353e850d458f73bd1)."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"ray_center_i = VectorIndexedBase(r'\\vec{c}')[i] # location of the i-th measurement\n",
"ray_direction_i = VectorIndexedBase(r'\\hat{n}', normalized=True)[i] # i-th directional measurement\n",
"lmbda = Symbol(r'\\lambda') # the line parameter\n",
"point_i = Function(r'\\vec{p}_i')(lmbda)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we note that unit-vectors have the property shown below:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"\n",
"<a name=\"n_dot_n\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle \\left( {\\hat{n}}_{i}\\cdot{\\hat{n}}_{i} \\right) = 1} & (1)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"EQ.n_dot_n = Eq(DOT(ray_direction_i,ray_direction_i),\n",
" expand(DOT(ray_direction_i,ray_direction_i)))\n",
"EQ('n_dot_n')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With the vocabulary from above, a n-dimensional straight line, created from the i-th directional\n",
"measurement, looks like so:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"\n",
"<a name=\"Line_i\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle \\vec{p}_i{\\left(\\lambda \\right)} = \\lambda {\\hat{n}}_{i} + {\\vec{c}}_{i}} & (2)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"EQ.Line_i = Eq(point_i,\n",
" ray_center_i + lmbda*ray_direction_i)\n",
"EQ('Line_i')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"where:\n",
"\n",
"* $\\vec{p}_i(\\lambda)$: Is a point on the i-th parametric straight line which\n",
" was created from the i-th measured ray.\n",
"* $\\lambda$: is the generating parameter of the i-th parametric line\n",
"* $\\vec{c}_i$: is the center of the i-th parametric line; Corresponds to the\n",
" location where the i-th measurement was taken.\n",
"* $\\hat{n}_i$: Is the direction measured at the i-th location. To simplify downstream\n",
" calculation we assume that this vector is normalized. If the directional data of the\n",
" measurement is not normalized it needs to pre-processed."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The Distance from a Point to a Parametric Line\n",
"\n",
"As noted in (3.) of the optimization model assumptions, we want to find the best approximation of the vector field\n",
"center $\\vec{p}$ by finding the point with the smallest average distance to the all parametric lines.\n",
"\n",
"Using the formulas from [Distance from a point to a line](https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line)\n",
"we can illustrate the situation for a single parametric line:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"from matplotlib.pyplot import subplots, plot, scatter, legend, gca, arrow, annotate"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"def figure_pt_line_distance(title): \n",
" fig,ax = subplots()\n",
" ax.set_title(title)\n",
" \n",
" ax.plot((-1,1),(-1,1), label=r'$\\vec{p}_i(\\lambda)$')\n",
" ax.scatter(0.5,-0.5, label=r'$\\vec{p}$')\n",
" ax.scatter(0,0, label=r'$\\vec{c} + ((\\vec{p} - \\vec{c}) \\cdot \\hat{n})*\\hat{n}$')\n",
" ax.arrow(0.5,-0.5,-0.5,0.5,head_width=0.1,length_includes_head=True)\n",
" gca().set_aspect('equal', adjustable='box')\n",
" ax.legend()\n",
"figure_pt_line_distance('Fig 2. Shortest Distance from a Point to a Line')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The distance vector from $\\vec{p}$ to the closest point on the straight line can be written as:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"\n",
"<a name=\"err\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle {\\vec{\\epsilon}}_{i} = \\vec{p} - \\left( \\left(\\vec{p} - {\\vec{c}}_{i} \\right)\\cdot{\\hat{n}}_{i} \\right) {\\hat{n}}_{i} - {\\vec{c}}_{i}} & (3)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"err = VectorIndexedBase(r'\\vec{\\epsilon}')[i]\n",
"point = VectorSymbol(r'\\vec{p}')\n",
"EQ.err = Eq(err,\n",
" point - (ray_center_i + DOT(point - ray_center_i, ray_direction_i) * ray_direction_i))\n",
"EQ('err')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The Energy Function\n",
"\n",
"We re-interpret the distance vector $\\vec{\\epsilon}_i$ as an _error vector_ which\n",
"we want to minimize in order to determine the center of the vector field.\n",
"With this we can now formulate an [energy function](https://en.wikipedia.org/wiki/Energy_functional) $E(\\vec{p}): \\mathbb{R}^n \\mapsto \\mathbb{R}^+ $ which represents a measure for the average distance of a point $\\vec{p}$\n",
"to all the lines. \n",
"Distance minimization involves partial derivatives of $E(\\vec{p})$, so we are not going using the [Euclidian distance](https://en.wikipedia.org/wiki/Euclidean_distance)\n",
"to avoid the the complexity of square root differentiation. Instead we use the square distance\n",
"$\\vec{\\epsilon}_i \\cdot \\vec{\\epsilon}_i$ which has compatible optimization properties."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"from sympy import Sum"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"\n",
"<a name=\"Energy\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle E{\\left(\\vec{p} \\right)} = \\frac{\\sum_{i=0}^{n - 1} \\left( {\\vec{\\epsilon}}_{i}\\cdot{\\vec{\\epsilon}}_{i} \\right)}{n}} & (4)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"E = Function('E')(point)\n",
"EQ.Energy = Eq(E,\n",
" Sum(DOT(EQ.err.lhs,EQ.err.lhs),(i,0,n-1))/n)\n",
"EQ('Energy')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"were the dot product $\\vec{\\epsilon}_i \\cdot \\vec{\\epsilon}_i$ is the square distance of a point $\\vec{p}$ to\n",
"the i-th line. Now we _just_ need to find the point $\\vec{p}$ with the smallest possible energy. That point then is the closest possible approximation to the center of the radial field.\n",
"\n",
"Substituting [$\\vec{\\epsilon}_i$](#err) the error function becomes:"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"\n",
"<a name=\"Energy_explicit\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle E{\\left(\\vec{p} \\right)} = \\frac{\\sum_{i=0}^{n - 1} \\left( \\left(\\vec{p} - \\left( \\left(\\vec{p} - {\\vec{c}}_{i} \\right)\\cdot{\\hat{n}}_{i} \\right) {\\hat{n}}_{i} - {\\vec{c}}_{i} \\right)\\cdot\\left(\\vec{p} - \\left( \\left(\\vec{p} - {\\vec{c}}_{i} \\right)\\cdot{\\hat{n}}_{i} \\right) {\\hat{n}}_{i} - {\\vec{c}}_{i} \\right) \\right)}{n}} & (5)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"EQ.Energy_explicit=Eq(EQ.Energy.lhs,\n",
" EQ.Energy.rhs.xreplace({EQ.err.lhs : EQ.err.rhs}))\n",
"EQ('Energy_explicit')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The expanded form of $E(\\vec{p})$ is:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"from sympy import factor_terms"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"\n",
"<a name=\"Energy_long\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle E{\\left(\\vec{p} \\right)} = \\frac{\\left( \\vec{p}\\cdot\\vec{p} \\right) \\sum_{i=0}^{n - 1} 1 + 2 \\sum_{i=0}^{n - 1} \\left( \\vec{p}\\cdot{\\hat{n}}_{i} \\right) \\left( {\\hat{n}}_{i}\\cdot{\\vec{c}}_{i} \\right) - \\sum_{i=0}^{n - 1} \\left( \\vec{p}\\cdot{\\hat{n}}_{i} \\right)^{2} - 2 \\sum_{i=0}^{n - 1} \\left( \\vec{p}\\cdot{\\vec{c}}_{i} \\right) - \\sum_{i=0}^{n - 1} \\left( {\\hat{n}}_{i}\\cdot{\\vec{c}}_{i} \\right)^{2} + \\sum_{i=0}^{n - 1} \\left( {\\vec{c}}_{i}\\cdot{\\vec{c}}_{i} \\right)}{n}} & (6)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"EQ.Energy_long = Eq(EQ.Energy.lhs,\n",
" factor_terms(expand(EQ.Energy_explicit.rhs)))\n",
"EQ('Energy_long')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We use the energy [$E(\\vec{p})$](#Energy) of a point with respect to a vector field measurement as a basis for the _Python_ implementation fof the energy function."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"def compute_energy(P: np.ndarray, measurement: Measurement) -> float:\n",
" '''Compute the energy of a point with respect to a vector field measurement\n",
" \n",
" Args\n",
" ====\n",
" \n",
" `P: np.ndarray`\n",
" : A 3-dimensional point\n",
" \n",
" `measurement: Measurement`\n",
" : A vector field measurement\n",
" \n",
" Returns\n",
" =======\n",
" \n",
" The energy.\n",
" '''\n",
" Seps2 = 0\n",
" for C, N in zip(measurement.points, measurement.directions):\n",
" N0 = N / alg.norm(N)\n",
" eps = P - (P - C).dot(N0) * N0 - C\n",
" Seps2 += eps.dot(eps)\n",
" return Seps2 / len(measurement.points)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Simulating Directional Vector Field Measurements\n",
"\n",
"To test the vector field center calculator algorithm, numeric data is needed. We implement an imaginary vector field measurement device which _measures_ azimuth and polar\n",
"angle of the vector field center. The device has constant angular resolution, hence the farther away from the center\n",
"a measurement is taken, the larger the measurement error. For all coordinates and lengths abstract units are used.\n",
"All angles are in degrees."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"import random\n",
"import numpy.linalg as alg\n",
"from scipy.spatial.transform import Rotation\n",
"from typing import Tuple"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"def simulate_vector_field_measurement(center: np.ndarray,\n",
" theta_range: Tuple[float,float] = (-np.pi, np.pi),\n",
" phi_range: Tuple[float,float] = (0, np.pi),\n",
" r: float = 1,\n",
" n: int = 10,\n",
" perturbation: float = 2) -> Measurement:\n",
" '''Simulate measurement made with a measurement device measuring azimuth and polar angles.\n",
" \n",
" The measurement device is located on a sphere with radius r around the\n",
" vector field center. \n",
" \n",
" Args\n",
" ====\n",
" \n",
" `center: np.ndarray`\n",
" : Location of the center of the simulated vector field\n",
" \n",
" `theta_range: Tuple[float,float] = (-np.pi, np.pi)`, `phi_range: Tuple[float,float] = (0, np.pi)`\n",
" : Range of spherical coordinates of the measurement device on the sphere arround the\n",
" vector field center.\n",
" \n",
" `r: float` \n",
" : Distance from center where measurement is taken.\n",
"\n",
" `n: int`\n",
" : Number of measurements to be simulated.\n",
" \n",
" ` perturbation: float`\n",
" : The maximum angular measurement error in degrees.\n",
" \n",
" Returns\n",
" =======\n",
" \n",
" Simulated measurement annotated with the simulation parameters.\n",
" '''\n",
" points = []\n",
" directions = []\n",
" SanglularError = 0\n",
" for i in range(n):\n",
" # create a random point within the box\n",
" theta = random.uniform(*theta_range) # azimuth\n",
" phi = random.uniform(*phi_range) # polar angle\n",
"\n",
" measurement_direction = -np.array([\n",
" np.cos(theta) * np.sin(phi),\n",
" np.sin(theta) * np.sin(phi),\n",
" np.cos(phi)\n",
" ])\n",
"\n",
" measurement_location = center - r * measurement_direction\n",
"\n",
" points.append(measurement_location)\n",
"\n",
" # create an orthonormal vector to use as a rotation axis\n",
" maxndx, = np.where(\n",
" measurement_direction == np.amax(measurement_direction))[0]\n",
" ndx = (maxndx + 1) % 3\n",
" axis = np.zeros(3)\n",
"\n",
" axis[maxndx] = measurement_direction[ndx]\n",
" axis[ndx] = -measurement_direction[maxndx]\n",
" axis /= alg.norm(axis)\n",
"\n",
" perturbation_rad = np.radians(perturbation)\n",
" # apply the rotation to the measurement direction\n",
" perturbed_angle = random.uniform(-perturbation_rad, perturbation_rad)\n",
" SanglularError += np.abs(perturbed_angle)\n",
" rot = Rotation.from_rotvec(perturbed_angle * axis)\n",
" # perturb the direction vector\n",
" directions.append(rot.apply(measurement_direction))\n",
" return Measurement(\n",
" points, directions, {\n",
" 'perturbation': perturbation,\n",
" 'center': center,\n",
" 'distance': r,\n",
" 'AveragePerturbation': SanglularError / n\n",
" })"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For visualization we also implement a function to draw measurement data."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"def draw_measurement(ax,measurement):\n",
" '''Draw a vector field measurement as vector field.'''\n",
" # draw measurement points\n",
" Xs = [ p[0] for p in measurement.points]\n",
" Ys = [ p[1] for p in measurement.points]\n",
" Zs = [ p[2] for p in measurement.points]\n",
" Ns = [d for d in measurement.directions]\n",
" Us = [N[0] for N in Ns]\n",
" Vs = [N[1] for N in Ns]\n",
" Ws = [N[2] for N in Ns]\n",
" ax.scatter(Xs,Ys,Zs, color='b')\n",
" ax.quiver(Xs,Ys,Zs,Us,Vs,Ws,arrow_length_ratio=.3,normalize=True, length=.5, edgecolors=('r',))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We are now at the point where we can illustrate a vector field measurement and the associated energy function [$E(\\vec{p})$](#Energy). The energy will be plotted for points on the X,Y plane located at the vector field center."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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l5fH//73P86ePUttbS2WVdeamhpOnz7NuHHjrBrxjUYjv//975kwYQIPPvhgj41cS0pKiI2Nlb+OiYmhpKSk3f0yMjJISkpiwYIFFBUVdeuxjnLy5Eni4+P5zW9+w/Dhw532vAoKEllZWYwcOZL4+HibFQi9Xs+iRYuIj49nypQp5Ofn9/4inYAgCCQkJPD444/zv//9j//7v/+jvr6exYsXM2fOHN58803Kysro4uSnHaIoUlxczIgRI7jyyivp378/Wq2W/fv3c/z4cbRaLSaTyeoxO3bs4M0332THjh096jFri+Xm0cfHR948ugslfv2MUuFyEl2VcPV6PbfddhuHDh0iLCyMf//73wwZMsQ9i3USarWaq666iquuugqTycR3331HRkYGa9euZfTo0aSlpXU6LaRWq+nfvz/9+/eXy/NFRUXU19cTGhpKQEAARUVF7ZItk8nEPffcw6hRo/jLX/7S42TLXubMmcPixYvx9fXlzTffZMmSJXz55Zcuv+7o0aPJzc11+XUUfpnYUxF55513CAkJ4dy5c2zevJlHHnmEf//7325cdc8RBIH4+HhWrVrFI488QkFBARkZGSxZsgRBEGSXjujo6E5jjMlk4vDhwwwcOJABAwYArZPgoaGhiKIoC0ifO3cOaJWM6devHxs2bGD37t096imzha0N4P79+9vdLyMjg2+++YYRI0bwyiuvWD3GmSjx62eUCpcTkALWnj17OHnyJJs2beLkyZNW97EMWA888IDT5QrcjZeXF9OmTeNvf/sbhw8f5oEHHuDgwYNcffXV3HrrrWzdurVTRWypPD927FimTJmCn58f586dw2w2k5eXR2VlJSaTCZPJxP333090dDRr1qxxWrIVHR0tV6wAiouL5f4GibCwMDnxW7ZsGYcOHbL7sQoKnoo9FZHt27fLgyALFizgiy++6HYVyJMRBIEhQ4bw5z//mW+++YZNmzbh5+fH8uXLmTlzJq+++ip5eXntfmYp2RowYICcbLV93n79+jFixAguu+wyBgwYwNdff839999PWFgYe/bscYtTwJw5c8jPz+fo0aPMnDnT6UM+CrZREi4noAQsa1QqFVOmTOHFF1/kxx9/ZPXq1Zw4cYJrr72WxYsXs2nTJmprazt8fENDA6WlpUyZMoXLL7+cyMhIysrKmDJlCjNmzKC6upq1a9c61Vts0qRJnD17lry8PFpaWti8eXM7S6DS0lL5/zt27CAhIQGAa665hk8//ZTq6mqqq6v59NNPueaaa5y2NgUFV2LPkbjlfdRqNcHBwVRWVvbqOnsLQRCIjo7m/vvv58svv2Tbtm2EhobywAMPMGPGDF544QXOnDlDfX09GzZsoH///gwcONCu5y0oKCA3N5eTJ0/y17/+ldzcXCoqKpy6/p5sHhVci5JwOQElYHWMSqVi/PjxPPvssxw6dIinn36awsJC5syZw4IFC3j//fepqqqS719TU8OJEydISkqiT58+qFQqwsLCSEhIYPr06QwdOpQhQ4YwZcoUtm7d6rR1WgqaJiQkcNNNN8mCpjt27ADgtddeY8yYMSQnJ/Paa6+xceNGoPX44PHHH2fSpElMmjRJtrJQUFC4uBEEgaioKO6++24+/fRTMjMziYmJ4ZFHHmHChAkcOXKkXd9pR3z77besXr2anTt3EhUVxejRo3n88ced3lrSk82jgmtRergUeg3LaaE1a9Zw+vRp0tPTWbBgAX379mXKlCns2rWLrKwsq74vs9nM//t//w+DwcDmzZtRqVSIothpc74jXH/99e0E+Z588kn5/88++6zsndiWpUuXsnTpUqeuR0GhN7CnIiLdJyYmBqPRSG1t7S9SLTwsLIzf/e53bNu2jT//+c+EhYXx9NNPU1BQwKxZs0hLSyMxMbFd9X3//v088sgj7Ny50+bRozOxxw3jtddeY8eOHajVakJDQ+XNo4KLEUWxs38KdrBv3z5x1qxZ8tfr1q0T161bZ3WfWbNmifv27RNFURQNBoMYFhYmms3mXl2np2I2m8U9e/aIAwYMEK+88kpx+vTp4ssvvyyeP39ebGhoEFetWiXedtttotFodPdSfyl0FRcupn8KXWAwGMShQ4eKubm5ol6vF5OSksTjx49b3WfDhg3i8uXLRVEUxU2bNokLFy50x1I9gqamJnH79u1W36utrRU/+ugjccGCBWJSUpL4wAMPiF9//bVYX18vfvPNN2JycrKYn5/vphX/4nB3zOnwnxKsnIASsHqG2WwWr732WvHEiROi2WwW8/PzxZdeekm88sorxbi4OHH27NmiwWDo0TX27NkjjhgxQhw2bJj47LPPtrv9pZdeEhMSEsTExERxxowZVsFRpVKJycnJYnJysjhnzpwereMiwe2ByYn/FOxg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\n",
"text/plain": [
"<Figure size 720x720 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Simulate Vector Field Measurement and compute the Field Center\n",
"def figure_measurement(title,measurement):\n",
" fig = plt.figure(figsize=(10,10))\n",
" ax = fig.add_subplot(121,projection='3d')\n",
" draw_measurement(ax,measurement)\n",
" center = measurement.properties['center']\n",
" ax.scatter(*center, label=r'Vector Field Center', color='black', s=200)\n",
" ax.set_title('Simulated Vector Field')\n",
" ax.set_xlabel('x')\n",
" ax.set_ylabel('y')\n",
" ax.set_zlabel('z')\n",
" ax.legend(loc='upper right')\n",
" # Now draw the Energy for a slice\n",
" n = 20\n",
" l = measurement.properties['distance']\n",
" Xs,Ys = np.meshgrid(\n",
" np.linspace(center[0]-l,center[0]+l,n),\n",
" np.linspace(center[1]-l,center[1]+l,n))\n",
" \n",
" # compute the energies\n",
" Es= [compute_energy(np.array([xy[0],xy[1],center[2]]),measurement) for xy in np.nditer([Xs,Ys])]\n",
" Es = np.reshape(Es,Xs.shape)\n",
" \n",
" ax2 = fig.add_subplot(122,projection='3d')\n",
" ax2.plot_surface(Xs,Ys,Es,cmap='rainbow')\n",
" ax2.set_xlabel('x')\n",
" ax2.set_ylabel('y')\n",
" ax2.set_zlabel('Energy')\n",
" ax2.set_title('Energy at Different Locations')\n",
" fig.suptitle(title,y=0.75)\n",
" \n",
"\n",
"measurement = simulate_vector_field_measurement(np.array([0,1,0]),r=1.0,n=30,perturbation=1)\n",
"figure_measurement('Fig 3. Simulated Vector Field Measurement', measurement)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Solving for the Center of a Radial Vector Field\n",
"\n",
"The point of lowest energy can be computed by finding the roots of the partial\n",
"derivatives of the energy function [$E(\\vec{p})$](#Energy_long)."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"from sympy import diff"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/markdown": [
"\n",
"<a name=\"dEdp_root\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle \\frac{d}{d \\vec{p}} E{\\left(\\vec{p} \\right)} = 0} & (7)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"EQ.dEdp_root = Eq(diff(EQ.Energy.lhs,point),0)\n",
"EQ('dEdp_root')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[$\\frac{d}{d\\vec{p}}E(\\vec{p})$](#dEdp_root) can now also be written as:"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"\n",
"<a name=\"dEdp_0\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle \\frac{2 \\left(n \\vec{p} - \\sum_{i=0}^{n - 1} \\left( \\vec{p}\\cdot{\\hat{n}}_{i} \\right) {\\hat{n}}_{i} + \\sum_{i=0}^{n - 1} \\left( {\\hat{n}}_{i}\\cdot{\\vec{c}}_{i} \\right) {\\hat{n}}_{i} - \\sum_{i=0}^{n - 1} {\\vec{c}}_{i}\\right)}{n} = 0} & (8)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"EQ.dEdp_0 = Eq(factor_terms(EQ.Energy_long.rhs.diff(point)).doit(),0)\n",
"EQ('dEdp_0')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we are solving for roots, we can get rid of the constant factor $\\frac{2}{n}$:"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"\n",
"<a name=\"dEdp_0_simple\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle n \\vec{p} - \\sum_{i=0}^{n - 1} \\left( \\vec{p}\\cdot{\\hat{n}}_{i} \\right) {\\hat{n}}_{i} + \\sum_{i=0}^{n - 1} \\left( {\\hat{n}}_{i}\\cdot{\\vec{c}}_{i} \\right) {\\hat{n}}_{i} - \\sum_{i=0}^{n - 1} {\\vec{c}}_{i} = 0} & (9)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"EQ.dEdp_0_simple = Eq(EQ.dEdp_0.lhs*n/2,0)\n",
"EQ('dEdp_0_simple')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Solving for the Roots of the Energy Function's Partial Derivatives\n",
"\n",
"Here we will be solving for the roots of the partial derivatives for 3-dimensional radial vector fields\n",
"using `SymPy` matrix algebra.\n",
"\n",
"Below are the definitions to express the equation system [$\\frac{d}{d\\vec{p}}E(\\vec{p}) = 0$](#dEdp_0_simple) in matrix notation."
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"from IPython.display import Math\n",
"from sympy import latex, Matrix"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$\\displaystyle \\vec{p} = \\left[\\begin{matrix}x\\\\y\\\\z\\end{matrix}\\right] ; {\\vec{c}}_{i} = \\left[\\begin{matrix}{c_{x}}_{i}\\\\{c_{y}}_{i}\\\\{c_{z}}_{i}\\end{matrix}\\right] ; {\\hat{n}}_{i} = \\left[\\begin{matrix}{n_{x}}_{i}\\\\{n_{y}}_{i}\\\\{n_{z}}_{i}\\end{matrix}\\right]$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"n_x, n_y, n_z = symbols('n_x n_y n_z',\n",
" cls=IndexedBase) # coordinates of direction vector\n",
"c_x, c_y, c_z = symbols('c_x c_y c_z',\n",
" cls=IndexedBase) # line center coordinates\n",
"p_x, p_y, p_z = symbols('p_x p_y p_z') # (unknown) vector field center coordinates\n",
"\n",
"N_i = Matrix([n_x[i], n_y[i], n_z[i]]) # the i-th measured direction vector\n",
"C_i = Matrix([c_x[i], c_y[i], c_z[i]]) # the i-th measurement location\n",
"P = Matrix([x, y, z]) # computed point of minimal energy\n",
"\n",
"display(Math(latex(Eq(point, P, evaluate=False)) +\n",
" ' ; ' + \n",
" latex(Eq(ray_center_i, C_i, evaluate=False)) +\n",
" ' ; ' +\n",
" latex(Eq(ray_direction_i, N_i, evaluate=False))))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Substituting the symbolic vectors $\\vec{p},\\vec{c}_i,\\hat{n}_i$\n",
"in\n",
"[$\\frac{d}{d\\vec{p}}E(\\vec{p}) = 0$](#dEdp_0_simple) then yields:"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"\n",
"<a name=\"dEdp_eqns\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle \\left[\\begin{matrix}n x\\\\n y\\\\n z\\end{matrix}\\right] - \\sum_{i=0}^{n - 1} \\left[\\begin{matrix}\\left(x {n_{x}}_{i} + y {n_{y}}_{i} + z {n_{z}}_{i}\\right) {n_{x}}_{i}\\\\\\left(x {n_{x}}_{i} + y {n_{y}}_{i} + z {n_{z}}_{i}\\right) {n_{y}}_{i}\\\\\\left(x {n_{x}}_{i} + y {n_{y}}_{i} + z {n_{z}}_{i}\\right) {n_{z}}_{i}\\end{matrix}\\right] + \\sum_{i=0}^{n - 1} \\left[\\begin{matrix}\\left({c_{x}}_{i} {n_{x}}_{i} + {c_{y}}_{i} {n_{y}}_{i} + {c_{z}}_{i} {n_{z}}_{i}\\right) {n_{x}}_{i}\\\\\\left({c_{x}}_{i} {n_{x}}_{i} + {c_{y}}_{i} {n_{y}}_{i} + {c_{z}}_{i} {n_{z}}_{i}\\right) {n_{y}}_{i}\\\\\\left({c_{x}}_{i} {n_{x}}_{i} + {c_{y}}_{i} {n_{y}}_{i} + {c_{z}}_{i} {n_{z}}_{i}\\right) {n_{z}}_{i}\\end{matrix}\\right] - \\sum_{i=0}^{n - 1} \\left[\\begin{matrix}{c_{x}}_{i}\\\\{c_{y}}_{i}\\\\{c_{z}}_{i}\\end{matrix}\\right] = \\left[\\begin{matrix}0\\\\0\\\\0\\end{matrix}\\right]} & (10)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# express symbolic vectors in Matrix notation\n",
"EQ.dEdp_eqns = EQ.dEdp_0_simple.lhs.xreplace({\n",
" point: P,\n",
" ray_center_i: C_i,\n",
" ray_direction_i: N_i\n",
"})\n",
"\n",
"# switch over to the corresponding dot product\n",
"EQ.dEdp_eqns = EQ.dEdp_eqns.replace(DOT, lambda a,b: a.dot(b))\n",
"\n",
"# simplify\n",
"EQ.dEdp_eqns = Eq(EQ.dEdp_eqns,Matrix([0,0,0]), evaluate=False)\n",
"EQ('dEdp_eqns')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"to make this system easier to solve with `linsolve` we express it as a single vector."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"\n",
"<a name=\"dEdp_eqns_long\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle \\left[\\begin{matrix}n x - x \\sum_{i=0}^{n - 1} {n_{x}}_{i}^{2} - y \\sum_{i=0}^{n - 1} {n_{x}}_{i} {n_{y}}_{i} - z \\sum_{i=0}^{n - 1} {n_{x}}_{i} {n_{z}}_{i} + \\sum_{i=0}^{n - 1} {c_{x}}_{i} {n_{x}}_{i}^{2} + \\sum_{i=0}^{n - 1} {c_{y}}_{i} {n_{x}}_{i} {n_{y}}_{i} + \\sum_{i=0}^{n - 1} {c_{z}}_{i} {n_{x}}_{i} {n_{z}}_{i} - \\sum_{i=0}^{n - 1} {c_{x}}_{i}\\\\n y - x \\sum_{i=0}^{n - 1} {n_{x}}_{i} {n_{y}}_{i} - y \\sum_{i=0}^{n - 1} {n_{y}}_{i}^{2} - z \\sum_{i=0}^{n - 1} {n_{y}}_{i} {n_{z}}_{i} + \\sum_{i=0}^{n - 1} {c_{y}}_{i} {n_{y}}_{i}^{2} + \\sum_{i=0}^{n - 1} {c_{x}}_{i} {n_{x}}_{i} {n_{y}}_{i} + \\sum_{i=0}^{n - 1} {c_{z}}_{i} {n_{y}}_{i} {n_{z}}_{i} - \\sum_{i=0}^{n - 1} {c_{y}}_{i}\\\\n z - x \\sum_{i=0}^{n - 1} {n_{x}}_{i} {n_{z}}_{i} - y \\sum_{i=0}^{n - 1} {n_{y}}_{i} {n_{z}}_{i} - z \\sum_{i=0}^{n - 1} {n_{z}}_{i}^{2} + \\sum_{i=0}^{n - 1} {c_{z}}_{i} {n_{z}}_{i}^{2} + \\sum_{i=0}^{n - 1} {c_{x}}_{i} {n_{x}}_{i} {n_{z}}_{i} + \\sum_{i=0}^{n - 1} {c_{y}}_{i} {n_{y}}_{i} {n_{z}}_{i} - \\sum_{i=0}^{n - 1} {c_{z}}_{i}\\end{matrix}\\right]} & (11)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"EQ.dEdp_eqns_long = expand(EQ.dEdp_eqns.lhs)\n",
"EQ.dEdp_eqns_long = Matrix([\n",
" factor_terms(expand(r)).doit()\n",
" for r in expand(EQ.dEdp_eqns.lhs)\n",
"])\n",
"EQ('dEdp_eqns_long')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We note that this equation is system in linear with respect to $x,y,z$.\n",
"\n",
"To further simplify the equation system we define two batches of substitutions which we then apply one after the other.\n",
"The first batch is:"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"\n",
"<a name=\"Snx2\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle S n_{x}^2 = \\sum_{i=0}^{n - 1} {n_{x}}_{i}^{2}} & (12)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"\n",
"<a name=\"Sny2\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle S n_{y}^2 = \\sum_{i=0}^{n - 1} {n_{y}}_{i}^{2}} & (13)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"\n",
"<a name=\"Snz2\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle S n_{z}^2 = \\sum_{i=0}^{n - 1} {n_{z}}_{i}^{2}} & (14)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"\n",
"<a name=\"Snxy\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle S n_{xy} = \\sum_{i=0}^{n - 1} {n_{x}}_{i} {n_{y}}_{i}} & (15)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"\n",
"<a name=\"Snxz\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle S n_{xz} = \\sum_{i=0}^{n - 1} {n_{x}}_{i} {n_{z}}_{i}} & (16)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"\n",
"<a name=\"Snyz\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle S n_{yz} = \\sum_{i=0}^{n - 1} {n_{y}}_{i} {n_{z}}_{i}} & (17)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# binary combinations of direction vector coordinates\n",
"EQ.Snx2 = Eq(Symbol(r'S n_{x}^2'),\n",
" Sum(n_x[i]**2, (i, 0, n - 1)))\n",
"EQ('Snx2')\n",
"EQ.Sny2 = Eq(Symbol(r'S n_{y}^2'),\n",
" Sum(n_y[i]**2, (i, 0, n - 1)))\n",
"EQ('Sny2')\n",
"\n",
"EQ.Snz2 = Eq(Symbol(r'S n_{z}^2'),\n",
" Sum(n_z[i]**2, (i, 0, n - 1)))\n",
"EQ('Snz2')\n",
"\n",
"EQ.Snxy = Eq(Symbol(r'S n_{xy}'),\n",
" Sum(n_x[i]*n_y[i], (i, 0, n - 1)))\n",
"EQ('Snxy')\n",
"\n",
"EQ.Snxz = Eq(Symbol(r'S n_{xz}'),\n",
" Sum(n_x[i]*n_z[i], (i, 0, n - 1)))\n",
"EQ('Snxz')\n",
"\n",
"EQ.Snyz = Eq(Symbol(r'S n_{yz}'),\n",
" Sum(n_y[i]*n_z[i], (i, 0, n - 1)))\n",
"EQ('Snyz')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Applying the first batch to the [system of linear equations](#dEdp_eqns_long) yields:"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"from sympy import simplify"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"\n",
"<a name=\"dEdp_eqns_medium\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle \\left[\\begin{matrix}- S n_{xy} y - S n_{xz} z - S n_{x}^2 x + n x + \\sum_{i=0}^{n - 1} \\left(\\left({n_{x}}_{i}^{2} - 1\\right) {c_{x}}_{i} + {c_{y}}_{i} {n_{x}}_{i} {n_{y}}_{i} + {c_{z}}_{i} {n_{x}}_{i} {n_{z}}_{i}\\right)\\\\- S n_{xy} x - S n_{yz} z - S n_{y}^2 y + n y + \\sum_{i=0}^{n - 1} \\left(\\left({n_{y}}_{i}^{2} - 1\\right) {c_{y}}_{i} + {c_{x}}_{i} {n_{x}}_{i} {n_{y}}_{i} + {c_{z}}_{i} {n_{y}}_{i} {n_{z}}_{i}\\right)\\\\- S n_{xz} x - S n_{yz} y - S n_{z}^2 z + n z + \\sum_{i=0}^{n - 1} \\left(\\left({n_{z}}_{i}^{2} - 1\\right) {c_{z}}_{i} + {c_{x}}_{i} {n_{x}}_{i} {n_{z}}_{i} + {c_{y}}_{i} {n_{y}}_{i} {n_{z}}_{i}\\right)\\end{matrix}\\right]} & (18)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"EQ.dEdp_eqns_medium = EQ.dEdp_eqns_long.xreplace({ \n",
" EQ.Snx2.rhs: EQ.Snx2.lhs,\n",
" EQ.Sny2.rhs: EQ.Sny2.lhs,\n",
" EQ.Snz2.rhs: EQ.Snz2.lhs,\n",
" \n",
" EQ.Snxy.rhs: EQ.Snxy.lhs,\n",
" EQ.Snxz.rhs: EQ.Snxz.lhs,\n",
" EQ.Snyz.rhs: EQ.Snyz.lhs,\n",
"})\n",
"EQ.dEdp_eqns_medium = simplify(EQ.dEdp_eqns_medium)\n",
"EQ('dEdp_eqns_medium')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The second batch of substitutions can now be identified as:"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"\n",
"<a name=\"SC_x\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle SC_{x} = \\sum_{i=0}^{n - 1} \\left(\\left({n_{x}}_{i}^{2} - 1\\right) {c_{x}}_{i} + {c_{y}}_{i} {n_{x}}_{i} {n_{y}}_{i} + {c_{z}}_{i} {n_{x}}_{i} {n_{z}}_{i}\\right)} & (19)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"\n",
"<a name=\"SC_y\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle SC_{y} = \\sum_{i=0}^{n - 1} \\left(\\left({n_{y}}_{i}^{2} - 1\\right) {c_{y}}_{i} + {c_{x}}_{i} {n_{x}}_{i} {n_{y}}_{i} + {c_{z}}_{i} {n_{y}}_{i} {n_{z}}_{i}\\right)} & (20)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"\n",
"<a name=\"SC_z\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle SC_{z} = \\sum_{i=0}^{n - 1} \\left(\\left({n_{z}}_{i}^{2} - 1\\right) {c_{z}}_{i} + {c_{x}}_{i} {n_{x}}_{i} {n_{z}}_{i} + {c_{y}}_{i} {n_{y}}_{i} {n_{z}}_{i}\\right)} & (21)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"EQ.SC_x = Eq(Symbol(r'SC_{x}'),\n",
" Sum((n_x[i]**2-1)*c_x[i] + c_y[i]*n_x[i]*n_y[i] + c_z[i]*n_x[i]*n_z[i],\n",
" (i, 0, n - 1)))\n",
"EQ('SC_x')\n",
"EQ.SC_y = Eq(Symbol(r'SC_{y}'),\n",
" Sum((n_y[i]**2-1)*c_y[i] + c_x[i]*n_x[i]*n_y[i] + c_z[i]*n_y[i]*n_z[i],\n",
" (i, 0, n - 1)))\n",
"EQ('SC_y')\n",
"EQ.SC_z = Eq(Symbol(r'SC_{z}'),\n",
" Sum((n_z[i]**2-1)*c_z[i] + c_x[i]*n_x[i]*n_z[i] + c_y[i]*n_y[i]*n_z[i],\n",
" (i, 0, n - 1)))\n",
"EQ('SC_z')"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"\n",
"<a name=\"dEdp_eqns_short\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle \\left[\\begin{matrix}- S n_{xy} y - S n_{xz} z - S n_{x}^2 x + SC_{x} + n x\\\\- S n_{xy} x - S n_{yz} z - S n_{y}^2 y + SC_{y} + n y\\\\- S n_{xz} x - S n_{yz} y - S n_{z}^2 z + SC_{z} + n z\\end{matrix}\\right] = \\left[\\begin{matrix}0\\\\0\\\\0\\end{matrix}\\right]} & (22)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"EQ.dEdp_eqns_short = Eq(EQ.dEdp_eqns_medium.xreplace({\n",
" EQ.SC_x.rhs:EQ.SC_x.lhs,\n",
" EQ.SC_y.rhs:EQ.SC_y.lhs,\n",
" EQ.SC_z.rhs:EQ.SC_z.lhs}),\n",
" Matrix([0,0,0]), evaluate=False)\n",
"EQ('dEdp_eqns_short')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This can be now easily be solved:"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [],
"source": [
"from sympy import linsolve"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"solution, = linsolve(EQ.dEdp_eqns_short.lhs,[x,y,z])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Despite all simplifications so far, the solution is still quite unwieldy, so we take it apart and look for more simplifications."
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"from sympy import factor, fraction"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [],
"source": [
"numerator_x,denominator_x = fraction(factor(solution[0]))\n",
"numerator_y,denominator_y = fraction(factor(solution[1]))\n",
"numerator_z,denominator_z = fraction(factor(solution[2]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Linear systems like this one usually have a common denominator. Let's assert this:"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [],
"source": [
"assert denominator_x == denominator_y and denominator_y == denominator_z, \"Denominators not the same ?!\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So we define a common denominator $D$ for all dimensions like so:"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"\n",
"<a name=\"D_long\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle D = S n_{xy}^{2} S n_{z}^2 - 2 S n_{xy} S n_{xz} S n_{yz} + S n_{xz}^{2} S n_{y}^2 + S n_{x}^2 S n_{yz}^{2} - S n_{x}^2 S n_{y}^2 S n_{z}^2 + n^{3} + n^{2} \\left(- S n_{x}^2 - S n_{y}^2 - S n_{z}^2\\right) + n \\left(- S n_{xy}^{2} - S n_{xz}^{2} + S n_{x}^2 S n_{y}^2 + S n_{x}^2 S n_{z}^2 - S n_{yz}^{2} + S n_{y}^2 S n_{z}^2\\right)} & (23)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"EQ.D_long = Eq(Symbol('D'),\n",
" simplify(denominator_x).collect(n))\n",
"EQ('D_long')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We note that the dot product [$\\hat{n}_i \\cdot \\hat{n}_i$](#n_dot_n) is 1. Therefore the sums [$S n_{x}^2$](#Snx2),\n",
"[$S n_{y}^2$](#Sny2), [$S n_{z}^2$](#Snz2) reduce to:"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"\n",
"<a name=\"Sn_dot_n\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle \\sum_{i=0}^{n - 1} {n_{x}}_{i}^{2} + \\sum_{i=0}^{n - 1} {n_{y}}_{i}^{2} + \\sum_{i=0}^{n - 1} {n_{z}}_{i}^{2} = n} & (24)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"EQ.Sn_dot_n = Eq(EQ.Snx2.rhs + EQ.Sny2.rhs + EQ.Snz2.rhs,n)\n",
"EQ('Sn_dot_n')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This takes us to the final simplification of the denominator:"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"\n",
"<a name=\"D\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle D = S n_{xy}^{2} \\left(S n_{z}^2 - n\\right) - 2 S n_{xy} S n_{xz} S n_{yz} + S n_{xz}^{2} \\left(S n_{y}^2 - n\\right) + S n_{x}^2 \\left(S n_{y}^2 \\left(- S n_{z}^2 + n\\right) + S n_{z}^2 n\\right) + S n_{yz}^{2} \\left(S n_{x}^2 - n\\right) + S n_{y}^2 S n_{z}^2 n} & (25)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"EQ.D = EQ.D_long.rhs.xreplace({-EQ.Snx2.lhs -EQ.Sny2.lhs -EQ.Snz2.lhs : -n}) # simplify dot product\n",
"EQ.D = expand(EQ.D)\n",
"EQ.D = EQ.D.collect(EQ.Snxy.lhs)\n",
"EQ.D = EQ.D.collect(EQ.Snxz.lhs)\n",
"EQ.D = EQ.D.collect(EQ.Snyz.lhs)\n",
"EQ.D = EQ.D.collect(EQ.Snx2.lhs)\n",
"EQ.D = EQ.D.collect(EQ.Sny2.lhs)\n",
"EQ.D = Eq(EQ.D_long.lhs,EQ.D)\n",
"EQ('D')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With some regrouping the simplified expressions for the coordinates $x$,$y$,$z$ of the vector field center $\\vec{p}$\n",
"can be expressed as:"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"\n",
"<a name=\"x\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle x = \\frac{SC_{x} \\left(S n_{yz}^{2} + S n_{y}^2 \\left(- S n_{z}^2 + n\\right) + S n_{z}^2 n - n^{2}\\right) + SC_{y} \\left(S n_{xy} \\left(S n_{z}^2 - n\\right) - S n_{xz} S n_{yz}\\right) + SC_{z} \\left(- S n_{xy} S n_{yz} + S n_{xz} \\left(S n_{y}^2 - n\\right)\\right)}{S n_{xy}^{2} \\left(S n_{z}^2 - n\\right) - 2 S n_{xy} S n_{xz} S n_{yz} + S n_{xz}^{2} \\left(S n_{y}^2 - n\\right) + S n_{x}^2 \\left(S n_{y}^2 \\left(- S n_{z}^2 + n\\right) + S n_{z}^2 n\\right) + S n_{yz}^{2} \\left(S n_{x}^2 - n\\right) + S n_{y}^2 S n_{z}^2 n}} & (26)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"\n",
"<a name=\"y\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle y = \\frac{SC_{x} \\left(S n_{xy} \\left(S n_{z}^2 - n\\right) - S n_{xz} S n_{yz}\\right) + SC_{y} \\left(S n_{xz}^{2} + S n_{x}^2 \\left(- S n_{z}^2 + n\\right) + S n_{z}^2 n - n^{2}\\right) + SC_{z} \\left(- S n_{xy} S n_{xz} + S n_{yz} \\left(S n_{x}^2 - n\\right)\\right)}{S n_{xy}^{2} \\left(S n_{z}^2 - n\\right) - 2 S n_{xy} S n_{xz} S n_{yz} + S n_{xz}^{2} \\left(S n_{y}^2 - n\\right) + S n_{x}^2 \\left(S n_{y}^2 \\left(- S n_{z}^2 + n\\right) + S n_{z}^2 n\\right) + S n_{yz}^{2} \\left(S n_{x}^2 - n\\right) + S n_{y}^2 S n_{z}^2 n}} & (27)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"\n",
"<a name=\"z\"/>"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle \\begin{matrix}\\boxed{\\displaystyle z = \\frac{SC_{x} \\left(- S n_{xy} S n_{yz} + S n_{xz} \\left(S n_{y}^2 - n\\right)\\right) + SC_{y} \\left(- S n_{xy} S n_{xz} + S n_{yz} \\left(S n_{x}^2 - n\\right)\\right) + SC_{z} \\left(S n_{xy}^{2} + S n_{x}^2 \\left(- S n_{y}^2 + n\\right) + S n_{y}^2 n - n^{2}\\right)}{S n_{xy}^{2} \\left(S n_{z}^2 - n\\right) - 2 S n_{xy} S n_{xz} S n_{yz} + S n_{xz}^{2} \\left(S n_{y}^2 - n\\right) + S n_{x}^2 \\left(S n_{y}^2 \\left(- S n_{z}^2 + n\\right) + S n_{z}^2 n\\right) + S n_{yz}^{2} \\left(S n_{x}^2 - n\\right) + S n_{y}^2 S n_{z}^2 n}} & (28)\\end{matrix}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"EQ.x = numerator_x.expand()\n",
"EQ.x = EQ.x.collect(EQ.SC_x.lhs)\n",
"EQ.x = EQ.x.collect(EQ.SC_y.lhs)\n",
"EQ.x = EQ.x.collect(EQ.SC_z.lhs)\n",
"EQ.x = EQ.x.collect(EQ.Sny2.lhs)\n",
"EQ.x = EQ.x.collect(EQ.Snxy.lhs)\n",
"EQ.x = EQ.x.collect(EQ.Snxz.lhs)\n",
"EQ.x = Eq(x, EQ.x/EQ.D.rhs)\n",
"EQ('x')\n",
"\n",
"EQ.y = numerator_y.expand()\n",
"EQ.y = EQ.y.collect(EQ.SC_x.lhs)\n",
"EQ.y = EQ.y.collect(EQ.SC_y.lhs)\n",
"EQ.y = EQ.y.collect(EQ.SC_z.lhs)\n",
"EQ.y = EQ.y.collect(EQ.Snxy.lhs)\n",
"EQ.y = EQ.y.collect(EQ.Snx2.lhs)\n",
"EQ.y = EQ.y.collect(EQ.Snyz.lhs)\n",
"EQ.y = Eq(y, EQ.y/EQ.D.rhs)\n",
"EQ('y') \n",
"\n",
"EQ.z = numerator_z.expand()\n",
"EQ.z = EQ.z.collect(EQ.SC_x.lhs)\n",
"EQ.z = EQ.z.collect(EQ.SC_y.lhs)\n",
"EQ.z = EQ.z.collect(EQ.SC_z.lhs)\n",
"EQ.z = EQ.z.collect(EQ.Snxz.lhs)\n",
"EQ.z = EQ.z.collect(EQ.Snx2.lhs)\n",
"EQ.z = EQ.z.collect(EQ.Snyz.lhs)\n",
"EQ.z = Eq(z,EQ.z/EQ.D.rhs)\n",
"EQ('z') "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# A Pythonic Implementation of the Vector Field Center Calculator\n",
"\n",
"For efficient implementation of the vector field center calculator the substitutions made earlier now used are used:\n",
"\n",
"* [$S n_{x}^2$](#Snx2), [$S n_{y}^2$](#Sny2), [$S n_{z}^2$](#Snz2)\n",
"* [$S n_{xy}$](#Snxy), [$S n_{xz}$](#Snxz), [$S n_{yz}$](#Snyz)\n",
"* [$SC_{x}$](#SC_x), [$SC_{y}$](#SC_y), [$SC_{z}$](#SC_z)"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [],
"source": [
"def compute_vector_field_center(measurement: Measurement) -> np.ndarray:\n",
" '''Compute the center of a radial vector field from directional\n",
" measurement data.\n",
" '''\n",
" # set up the accumulators\n",
" Snx2 = Sny2 = Snz2 = 0\n",
" Snxy = Snxz = Snyz = 0\n",
" SC_x = SC_y = SC_z = 0\n",
"\n",
" # Process the vector field measurement\n",
" for C, N in zip(measurement.points, measurement.directions):\n",
" nx, ny, nz = N/alg.norm(N)\n",
" nx2 = nx * nx\n",
" ny2 = ny * ny\n",
" nz2 = nz * nz\n",
" \n",
" Snx2 += nx2\n",
" Sny2 += ny2\n",
" Snz2 += nz2\n",
" \n",
" #############\n",
" \n",
" nxy = nx * ny\n",
" nxz = nx * nz\n",
" nyz = ny * nz\n",
" \n",
" Snxy += nxy\n",
" Snxz += nxz\n",
" Snyz += nyz\n",
" \n",
" ###########\n",
" \n",
" cx, cy, cz = C\n",
" Cx = (nx2-1)*cx + cy*nx*ny + cz*nx*nz\n",
" Cy = (ny2-1)*cy + cx*nx*ny + cz*ny*nz\n",
" Cz = (nz2-1)*cz + cx*nx*nz + cy*ny*nz\n",
" \n",
" SC_x += Cx\n",
" SC_y += Cy\n",
" SC_z += Cz\n",
" \n",
" n = len(measurement.points)\n",
" Snxy2 = Snxy*Snxy\n",
" Snyz2 = Snyz*Snyz\n",
" Snxz2 = Snxz*Snxz\n",
"\n",
" D = Snx2*(Sny2*(n-Snz2) + n*Snz2)\\\n",
" + Snxy2*(Snz2-n)\\\n",
" - 2*Snxy*Snxz*Snyz\\\n",
" + Snxz2*(Sny2 - n)\\\n",
" + Sny2*Snz2*n\\\n",
" + Snyz2*(Snx2 - n)\n",
" \n",
" x = SC_x*(Sny2*(n-Snz2)+Snyz2+ n*Snz2 -n*n)\\\n",
" + SC_y*(Snxy*(Snz2-n)-Snxz*Snyz)\\\n",
" + SC_z*(-Snxy*Snyz + Snxz*(Sny2-n))\n",
" \n",
" y = SC_x*(Snxy*(Snz2-n) - Snxz*Snyz)\\\n",
" + SC_y*(Snx2*(n-Snz2) + Snxz2 + n*Snz2-n*n)\\\n",
" + SC_z*(-Snxy*Snxz + Snyz*(Snx2-n))\n",
" \n",
" z = SC_x*(-Snxy*Snyz + Snxz*(Sny2-n))\\\n",
" + SC_y*(-Snxy*Snxz+Snyz*(Snx2-n))\\\n",
" + SC_z*(Snx2*(n-Sny2) + Snxy2 + n*Sny2 - n*n)\n",
"\n",
" return np.array([x,y,z])/D"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Fitting a Vector Field Center to Measured Data\n",
"\n",
"At this point the _rubber hits the road_. We compute the vector field center for (simulated) measurement data and\n",
"analyze the result."
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [],
"source": [
"def figure_fitting_error_by_measurement_count(title,\n",
" theta_range=(-np.pi, np.pi),\n",
" phi_range=(0, np.pi),\n",
" center=np.array([1, 2, 3]),\n",
" r_max=100,\n",
" perturbation=2):\n",
" '''Generic fitting result visualization.'''\n",
" fig = plt.figure(figsize=(10, 5))\n",
" ax = fig.add_subplot(111)\n",
"\n",
" Ns = np.linspace(2, 100, 30)\n",
" center = np.array([1, 2, 3])\n",
"\n",
" for r in np.linspace(1, r_max, 4):\n",
" measurements = [\n",
" simulate_vector_field_measurement(center,\n",
" theta_range,\n",
" phi_range,\n",
" r=r,\n",
" n=int(n),\n",
" perturbation=perturbation)\n",
" for n in Ns\n",
" ]\n",
" Errors = [\n",
" alg.norm(center - compute_vector_field_center(m))\n",
" for m in measurements\n",
" ]\n",
" ax.plot(Ns, Errors, label=f'Distance from Center = {r}')\n",
"\n",
" ax.set_xlabel('Measurement count')\n",
" ax.set_ylabel('Error')\n",
" ax.set_title(title)\n",
" ax.legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Full Range Measurements\n",
"\n",
"Measurements are taken from positions all around the vector field center at varying distances."
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"figure_fitting_error_by_measurement_count(\n",
" 'Fig 4. Fitting Error for Full Range Measurement',\n",
" r_max=1000)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Observations**:\n",
"* the _averaging effect_ of the center calculation algorithm keeps the measurement error nearly\n",
" constant even at larger distances.\n",
"* When measurements are taken at larger distances, about 20 measurements are needed for good results.\n",
"* The variance of the calculated center slightly increases for measurements taken at larger distances."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Confined Measurements \n",
"\n",
"The locations where measurements are confined small area"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAmQAAAFNCAYAAACuWnPfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAACnuUlEQVR4nOzdd1zVZfvA8c/NEgTcgKjlSHMhIIo5slJz5SotS8207ClLm0+W/Z5Ky4ZNS83UliNXmauhpTlS09yaIjlxACqCsve5fn8cIJDDXmrX+/XiJec77u91DkfOxX3f3+s2IoJSSimllKo4dhUdgFJKKaXUv50mZEoppZRSFUwTMqWUUkqpCqYJmVJKKaVUBdOETCmllFKqgmlCppRSSilVwTQhUyqDMSbOGNOoouMAMMbcmBGPfRHO6WyM+bss46pIxhgXY8wPxphoY8x3FR1PQYwxnYwxRzN+jncbY1YbY0aUwXUaGGPEGONQ2m0rpcqPJmTqX8cYE2KMScz4oMz8qiMibiJyophtijEmPlt7X5Tg3MsicjojnvSMYzYaYx61cV7jzMcisllEmhYn/kLEuNEYk3TFa/ZDWVwrH/cCXkBNEbmvNBo0xlQxxnxsjDmd8ZyOZzyuVQrNvwFMz/g5rhCR3iIytxTaLZKM93vKlc/JGLM34z3UoLxjuhZkvG53VnQc6t9DEzL1b9Uv44My8yusFNr0y9beowUfnue51UohlrIw9orXrJ+tg2z11BS19yaP4+sDR0QkrSht5ROTE/Ab0BLoBVQBOgCRQLuiXsOG+sChUminNJwEhmQ+MMa0AipXXDi5GSv9TFL/WvrmVypD9h4nY0zNjOGxGGPMTmPMm8aYLeUYS9YwlDHmLaAzMD2jF2e6Meb3jEP3Z2y73xhzhzHmbLY2QowxLxhjDmQM8y0xxjhn2/+iMSbcGBNmjHn0yh63IsR6hzHmrDHmJWPMOeBrY8xEY8xSY8w3xpgYYKQxpo4xZpUxJsoYc8wY859sbeQ6/oprvA68Btyf8XxHGWPsjDGvGGNOGWMuGGPmGWOqXvH6jTLGnAbW2wj9IeBG4B4RCRIRi4hcEJFJIvJzRjvNM3oHLxtjDhlj+meLaY4x5lNjzE/GmFhjzJ/GmJsy9h0HGgE/ZMRbKXsvpzFmpDFmizHmA2PMJWPMSWNM72xtVzXGfJnx8wnNeP/ZZ+yzzzjvojHmBNCnED+m+RnPN9MIYN4Vr3GljHZPG2POG2NmGmNcMvZVN8b8aIyJyIj3R2NMvWznjjTGnMh4HU4aY4Zl+7l+k+24HMOrGa/JW8aYrUAC0MgY08wYszbjffK3MWbwFa/5DGMd/o0zxmw1xtQ21l7NS8aYYGNM62zH1zHGfJ8R90ljzNPZ9k00xnyb8b6Jzfj5ts3YNz/jvZH583vRGOOc8f6MzHg/7DTGeBXitVeqUDQhU8q2T4F4oDbWD6/CzP353RhzzhizzJTiMJCI/A/YzD89VGNF5LaM3Zk9a0vyOH0w1t6fhoAvGYmOMaYX8DxwJ9AYuKOEYdYGamDtFXosY9sAYClQDVgALAbOAnWwDj++bYzpmq2NK4/PIiITgLeBJRnP98uM5zIS6II1+XEDpl8R1+1Ac6CnjZjvBNaISJytJ2SMcQR+AH4FPIGngAXGmOzDwg8ArwPVgWPAWxnx3gSc5p+e2GQbl7gF+BuoBbwHfGmMMRn75gBpWH82rYEeQGav63+Avhnb22J9LQuyHaiSkWDaZ8T9zRXHTAZuBvwzrlsXaxIM1s+Kr7H+fG8EEsl4rY0xrsBUoLeIuAMdgX2FiCnTcKzvGXcgAlgLLMT6mj8AzDDGtMh2/GDgFayvWzKwDdiT8Xgp8FFGXHZYf377M55LN+BZY0z290J/rO/LasCqzOckIsPJ+fN7D+vvgKrADUBNYHTG66BUqdCETP1brcj4K/eyMWZF9h0ZH1iDgAkikiAiQUBBc39uBxoAzYAw4EdTtGG6PdnimVqE8woyVUTCRCQK64eTf8b2wcDXInJIRBKAiYVpK1uMl40xk7Lts2B9vZJFJPNDalvG3CkL1g/LTsBLIpIkIvuAL8jZa5N1fLY28jMM+EhETmQkVS8DD1zxuk8Ukfg82qsJhOfTfnusSd5kEUkRkfXAj2Qb+gOWi8iOjGHUBfzz+hbGKRH5PGOe4FzAG/DK6HW5C3g2I/YLwBSsyQlYf3Yfi8iZjJ/rO4W8XmYvWXfgMBCauSMjEXwMeE5EokQkFmsC/ACAiESKyPcZ/x9isSaet2dr2wL4GGNcRCRcRIoyVDsn432YhvWPhxAR+VpE0kRkL/A9kH3O4HIR2S0iScByIElE5mW8jkuwJqoAgYCHiLyR8fM7AXzOP68jwBYR+Tnj3PmAXz5xpmJ9zzQWkfSMGGKK8DyVypfelaP+re4WkXV57PPA+n/jTLZtZ/I4FgARyRxCTDHGPAPEYO2Z+auQ8QSIyLHMB6XYw3Yu2/cJWHunyPh3V7Z9+T6/DE+LSF43K0RkfEBml73NOkDmB32mU1h7eIoSQ3Z1MtrI3p4D1on/hWkzEmsSlF/7ZzISyuzXqJvt8ZWvr1t+AV8h61wRScjoHHPD2tPoCIT/02GGHf88lzrkfF7ZX4P8zAd+x9pbOu+KfR5Y55TtznZNA2QOk1bGmhT2wtobCOBujLEXkXhjzP3AC1h7+bYC/xWR4ELGlf251AduMcZczrbNISP2TOezfZ9o43Hmz6A+UOeKtuyx9jZnuvLn52yMcchjnuJ8rL1ji40x1bD2MP5PRFJtPy2likZ7yJTKLQLrcFG9bNtuKGIbgvUDrbRIKbYF1p6hkjy/K9mKL/u2MKCGMcY927YbydZLk0cb+QnD+qGbvb00cn5A59fmOqBnxpBbXu3fYHJONL8y5rJwButQXC0RqZbxVUVEWmbsDyfnz+vGwjQqIqewTu6/C1h2xe6LWJOZltmuWVVEMpOb/wJNgVtEpAqQOWRuMtr+RUS6Y01wg7H2RIF12D/7zQO1bYV2xXPflC2GahlDhk8U5jle4Qxw8oq23EXkrkKen+O9IyKpIvK6iLTAOizbl5w9vEqViCZkSl0hY/hiGTDRGFPZGNOMfH7xGmNaGmP8MyZbuwEfYv3QPlyKYZ3HOk+qoG2F9S3wcMacosrAqyUJriAicgb4A3gnY3K0LzCK3POYimIR8JwxpmHG6545x6ywd2HOx/qh/X3GRHI7Y72Z4/+MMXcBf2LtNXnRGONojLkD6Id1zlGZEZFwrPPWPjTWshx2xpibjDGZQ4TfAk8bY+oZY6oD44vQ/Cigq4jEX3FNC9YkaooxxhPAGFM323wrd6wJ22VjTA1gQua5xhgvY8yAjMQ2GYjDOoQJ1rlktxlrXb2qWIeV8/MjcLMxZnjGa+5ojAk0xjQvwnPMtAOINdabTVwy/n/6GGMCC3l+jv9fxpguxphWGVMaYrAOYVryOlmpotKETCnbxmKdwHsO6wf3IqwfNrZ4YZ27EgOcwDqXrG/mUEbGB/zqEsbzCXBvxp1kmXPMJgJzM+ZzDc771NxEZDXWidgbsE5G356xK6/nCP/c5Zn5tbtoT4EhWF+bMKxzfybkM2xcGF/xzzDcSSAJ68T7QsmYaH8n1h6dtVh/fjuwznf7U0RSsCZgvbH2IM0AHirCUFxJPAQ4AUHAJayT1TOHVz8HfsE6WX0PuXu78iQix0VkVx67XyLjvWCsd7quw9orBvAx4IL1ddgOrMl2nh3WG0TCgCisc8ueyLjeWqz/Nw4Au7EmXPnFF4v1BoYHMto7B7wLVCrsc8zWVjrWXix/rO+Pi1jnLVYtZBPvAK9k/P96AWvv3lKs75PDwCZyDqUqVSJGpLRHQpS6/hhj3gVqi0ipV1q/GmT0QBwEKhWhh0kppVQp0R4ypWzIGMLyNVbtsA71LK/ouEqTMeYeY609VR1rL8QPmowppVTF0IRMKdvcsQ4FxWMdcvkQWFmhEZW+x4ELwHEgnYxhJqWUUuVPhyyVUkoppSqY9pAppZRSSlUwTciUUkoppSrYNV2pv1atWtKgQYOKDkMppZRSqkC7d+++KCIetvZd0wlZgwYN2LUrr5I6SimllFJXD2NMnkud6ZClUkoppVQF04RMKaWUUqqCaUKmlFJKKVXBruk5ZEoppa5eqampnD17lqSkpIoORaly5ezsTL169XB0dCz0OZqQKaWUKhNnz57F3d2dBg0aYIyp6HCUKhciQmRkJGfPnqVhw4aFPk+HLJVSSpWJpKQkatasqcmY+lcxxlCzZs0i9wxrQqaUUqrMaDKm/o2K877XhEwppdR1y97eHn9/f1q2bImfnx8ffvghFosFgF27dvH000/neW5ISAgLFy4sr1BzmTp1Ks2bN2fYsGFlep3U1FTGjx9PkyZNCAgIoEOHDqxevbpYbW3cuJE//vijlCPM33fffUfLli2xs7PLtzbpmjVraNq0KY0bN2by5MnlGGHh6BwypZRS1y0XFxf27dsHwIULFxg6dCgxMTG8/vrrtG3blrZt2+Z5bmZCNnTo0HKKNqcZM2awbt066tWrl2N7WloaDg6l9/H96quvEh4ezsGDB6lUqRLnz59n06ZNxWpr48aNuLm50bFjx0KfU9Ln4+Pjw7Jly3j88cfzPCY9PZ0xY8awdu1a6tWrR2BgIP3796dFixbFvm5p0x6yfKRFRXHp229JDQur6FCUUkqVkKenJ7Nnz2b69OmICBs3bqRv374AbNq0CX9/f/z9/WndujWxsbGMHz+ezZs34+/vz5QpUwgJCaFz584EBAQQEBCQ1RO0ceNG7rjjDu69916aNWvGsGHDEBEAdu7cSceOHfHz86Ndu3bExsaSnp7OuHHjCAwMxNfXl1mzZuWKdfTo0Zw4cYLevXszZcoUJk6cyPDhw+nUqRPDhw8nJCSErl274uvrS7du3Th9+jQAI0eO5IknnqB9+/Y0atSIjRs38sgjj9C8eXNGjhyZ6zoJCQl8/vnnTJs2jUqVKgHg5eXF4MGDAfj111/p0KEDAQEB3HfffcTFxQHWlXImTJhAQEAArVq1Ijg4mJCQEGbOnMmUKVPw9/dn8+bNREREMGjQIAIDAwkMDGTr1q0AuZ5PSTRv3pymTZvme8yOHTto3LgxjRo1wsnJiQceeICVK1eW6LqlTkSu2a82bdpIWUoMDpagps0kevXqMr2OUkpdj4KCgio6BHF1dc21rWrVqnLu3DnZsGGD9OnTR0RE+vbtK1u2bBERkdjYWElNTc2xX0QkPj5eEhMTRUTkyJEjkvkZtGHDBqlSpYqcOXNG0tPTpX379rJ582ZJTk6Whg0byo4dO0REJDo6WlJTU2XWrFkyadIkERFJSkqSNm3ayIkTJ3LFWb9+fYmIiBARkQkTJkhAQIAkJCRkxTtnzhwREfnyyy9lwIABIiIyYsQIuf/++8VisciKFSvE3d1dDhw4IOnp6RIQECB79+7NcY39+/eLv7+/zdcuIiJCOnfuLHFxcSIiMnnyZHn99dezYps6daqIiHz66acyatSorDjff//9rDaGDBkimzdvFhGRU6dOSbNmzWw+n+xiYmLEz8/P5tehQ4dsxioicvvtt8vOnTtt7vvuu++yYhQRmTdvnowZMybPtkqDrfc/sEvyyGl0yDIfDp6eAKSdP1/BkSil1LXt9R8OERQWU6pttqhThQn9WpZKW506deL5559n2LBhDBw4MNcwIVjnWo0dO5Z9+/Zhb2/PkSNHsva1a9cu6xx/f39CQkKoWrUq3t7eBAYGAlClShXA2ut04MABli5dCkB0dDRHjx4tsERC//79cXFxAWDbtm0sW7YMgOHDh/Piiy9mHdevXz+MMbRq1QovLy9atWoFQMuWLQkJCcHf379Qr8n27dsJCgqiU6dOAKSkpNChQ4es/QMHDgSgTZs2WbFcad26dQQFBWU9jomJyeply/58snN3d88aZv430YQsH/bVqmGcnEg9f6GiQ1FKKVUKTpw4gb29PZ6enhw+fDhr+/jx4+nTpw8///wznTp14pdffsl17pQpU/Dy8mL//v1YLBacnZ2z9mUO94H1RoK0tLQ8YxARpk2bRs+ePYsUu6ura6GOy4zFzs4uR1x2dna54mrcuDGnT58mJiYmK2HMHmf37t1ZtGhRvtfJ7/laLBa2b9+e47Uq6PnExsbSuXNnm/sWLlxYrHlfdevW5cyZM1mPz549S926dYvcTlnShCwfxhgcvLy0h0wppUqotHqySiIiIoLRo0czduzYXGUJjh8/TqtWrWjVqhU7d+4kODiYG264gdjY2KxjoqOjqVevHnZ2dsydO5f09PR8r9e0aVPCw8PZuXMngYGBxMbG4uLiQs+ePfnss8/o2rUrjo6OHDlyhLp16xY64QLo2LEjixcvZvjw4SxYsCDPBKYglStXZtSoUTzzzDPMmjULJycnIiIisubFjRkzhmPHjtG4cWPi4+MJDQ3l5ptvzrM9d3d3YmL+6Qnt0aMH06ZNY9y4cQDs27evwB66sughCwwM5OjRo5w8eZK6deuyePHiCr2D1had1F8ABy9PTciUUuoalZiYmFX24s4776RHjx5MmDAh13Eff/wxPj4++Pr64ujoSO/evfH19cXe3h4/Pz+mTJnCk08+ydy5c/Hz8yM4OLjABMrJyYklS5bw1FNP4efnR/fu3UlKSuLRRx+lRYsWBAQE4OPjw+OPP55vj5ot06ZN4+uvv8bX15f58+fzySefFOn87N588008PDxo0aIFPj4+9O3blypVquDh4cGcOXMYMmQIvr6+dOjQgeDg4Hzb6tevH8uXL8+a1D916lR27dqFr68vLVq0YObMmcWOMy/Lly+nXr16bNu2jT59+mT1PIaFhXHXXXcB4ODgwPTp0+nZsyfNmzdn8ODBtGxZ8X8kZGck406Qa1Hbtm0lv5ojpSH0+f+SePAgjX/N3X2tlFIqb4cPH6Z58+YVHYZSFcLW+98Ys1tEbNZa0R6yAmQOWV7LiatSSimlrm5llpAZY74yxlwwxhzMtu19Y0ywMeaAMWa5MaZatn0vG2OOGWP+NsYUbaZjGXLw8kSSk7FER1d0KEoppZS6TpVlD9kcoNcV29YCPiLiCxwBXgYwxrQAHgBaZpwzwxhjX4axFZqjlxeA3mmplFJKqTJTZgmZiPwORF2x7VcRyZy5uB3ILPQyAFgsIskichI4BrQrq9iKwiEjIUu7oBP7lVJKKVU2KnIO2SNA5uqldYEz2fadzdhW4Rw8MxIyvdNSKaWUUmWkQhIyY8z/gDRgQTHOfcwYs8sYsysiIqL0g7uCo6cHAKmakCmllFKqjJR7QmaMGQn0BYbJP7cuhgI3ZDusXsa2XERktoi0FZG2Hh4eZRorgHFywr5GDdJ0DplSSl1z7O3ts+qQ+fn58eGHH2KxWADYtWsXTz/9dJ7nhoSEVGjx0KlTp9K8eXOGDRtWptdJTU1l/PjxNGnShICAADp06MDq1asLPtGGjRs3Zi26Xl5effVVfH198ff3p0ePHoSFhQGwcuXKrO1t27Zly5YtOc6LiYmhXr16jB071ma7UVFRdO/enSZNmtC9e3cuXbpUps+jXBMyY0wv4EWgv4gkZNu1CnjAGFPJGNMQaALsKM/Y8qPV+pVS6trk4uLCvn37OHToEGvXrmX16tW8/vrrALRt25apU6fmeW5FJ2QzZsxg7dq1LFiQczCpqEVkC/Lqq68SHh7OwYMH2bNnDytWrMixQkFRFCchK+nzGTduHAcOHGDfvn307duXN954A4Bu3bqxf/9+9u3bx1dffcWjjz6a47xXX32V2267Lc92J0+eTLdu3Th69CjdunVj8uTJJYqzIGVZ9mIRsA1oaow5a4wZBUwH3IG1xph9xpiZACJyCPgWCALWAGNEJP81KcqRo6cnqRe0h0wppa5lnp6ezJ49m+nTpyMibNy4kb59+wKwadMm/P398ff3p3Xr1sTGxjJ+/Hg2b96Mv78/U6ZMISQkhM6dOxMQEEBAQEBW4pG5zNC9995Ls2bNGDZsWFbtyp07d9KxY0f8/Pxo164dsbGxpKenM27cOAIDA/H19WXWrFm5Yh09ejQnTpygd+/eTJkyhYkTJzJ8+HA6derE8OHDCQkJoWvXrvj6+tKtWzdOnz4NwMiRI3niiSdo3749jRo1YuPGjTzyyCM0b96ckSNH5rpOQkICn3/+OdOmTctam9LLy4vBgwcD1oXQO3ToQEBAAPfdd1/WwuANGjRgwoQJBAQE0KpVK4KDgwkJCWHmzJlMmTIlq1J/REQEgwYNIjAwkMDAQLZu3QqQ6/mURPY1OOPj47OWxXJzc8v6Pvt2gN27d3P+/Hl69OiRZ7srV65kxIgRAIwYMYIVK1aUKM4Cicg1+9WmTRspD2GvviZ/d+hYLtdSSqnrRVBQUEWHIK6urrm2Va1aVc6dOycbNmyQPn36iIhI3759ZcuWLSIiEhsbK6mpqTn2i4jEx8dLYmKiiIgcOXJEMj+DNmzYIFWqVJEzZ85Ienq6tG/fXjZv3izJycnSsGFD2bFjh4iIREdHS2pqqsyaNUsmTZokIiJJSUnSpk0bOXHiRK4469evLxERESIiMmHCBAkICJCEhISseOfMmSMiIl9++aUMGDBARERGjBgh999/v1gsFlmxYoW4u7vLgQMHJD09XQICAmTv3r05rrF//37x9/e3+dpFRERI586dJS4uTkREJk+eLK+//npWbFOnThURkU8//VRGjRqVFef777+f1caQIUNk8+bNIiJy6tQpadasmc3nk11MTIz4+fnZ/Dp06JDNWP/v//5P6tWrJy1btpQLFy5kbV+2bJk0bdpUqlevLn/88YeIiKSnp8vtt98uZ86cka+//lrGjBljs82qVatmfW+xWHI8Lgxb739gl+SR0+ji4oXg4OVJelQUlpQU7JycKjocpZS69qweD+f+Kt02a7eC3qUzjNSpUyeef/55hg0bxsCBA6lXr16uY1JTUxk7diz79u3D3t6eI0eOZO1r165d1jn+/v6EhIRQtWpVvL29CQwMBP7pyfn11185cOAAS5cuBayLlh89epSGDRvmG2P//v1xcXEBYNu2bSxbtgyA4cOH8+KLL2Yd169fP4wxtGrVCi8vL1q1agVAy5YtCQkJKXBx70zbt28nKCiITp06AZCSkkKHDh2y9g8cOBCANm3aZMVypXXr1hEUFJT1OCYmJquXLfvzya44i4u/9dZbvPXWW7zzzjtMnz49a1j6nnvu4Z577uH333/n1VdfZd26dcyYMYO77rrL5s84L8aYXAvSlzZNyArBMasWWQRO9a6KahxKKaWK4cSJE9jb2+Pp6cnhw4ezto8fP54+ffrw888/06lTJ375Jff6xVOmTMHLy4v9+/djsVhwdnbO2pc53AfWGwnymxclIkybNi1rEezCKmgx8ytjsbOzyxGXnZ1drrgaN27M6dOniYmJyTH0lxln9+7dWbRoUb7Xye/5WiwWtm/fnuO1Kuj5xMbG0rlzZ5v7Fi5cSIsWLWzuAxg2bBh33XVXVkKW6bbbbuPEiRNcvHiRbdu2sXnzZmbMmEFcXBwpKSm4ubnlmiPm5eVFeHg43t7ehIeH4+npmed1S4MmZIWQvTisJmRKKVUMpdSTVRIRERGMHj2asWPH5urtOH78OK1ataJVq1bs3LmT4OBgbrjhhhyT26Ojo6lXrx52dnbMnTuX9PT8pzo3bdqU8PBwdu7cSWBgILGxsbi4uNCzZ08+++wzunbtiqOjI0eOHKFu3bqFTrgAOnbsyOLFixk+fDgLFizIM4EpSOXKlRk1ahTPPPMMs2bNwsnJiYiIiKx5cWPGjOHYsWM0btyY+Ph4QkNDufnmm/Nsz93dnZiYmKzHPXr0YNq0aYwbNw6Affv2FdhDV9QesqNHj9KkSRPAOu+rWbNmABw7doybbroJYwx79uwhOTmZmjVr5rhJYs6cOezatcvmhP3+/fszd+5cxo8fz9y5cxkwYEChYyoOXVy8ELQ4rFJKXZsSExOzyl7ceeed9OjRgwkTJuQ67uOPP8bHxwdfX18cHR3p3bs3vr6+2Nvb4+fnx5QpU3jyySeZO3cufn5+BAcHF5hAOTk5sWTJEp566in8/Pzo3r07SUlJPProo7Ro0YKAgAB8fHx4/PHHi3yn4bRp0/j666/x9fVl/vz5fPLJJ0U6P7s333wTDw8PWrRogY+PD3379qVKlSp4eHgwZ84chgwZgq+vLx06dCA4ODjftvr168fy5cuzJvVPnTqVXbt24evrS4sWLZg5c2ax48zL+PHjs352v/76a9Zr8f333+Pj44O/vz9jxoxhyZIlBQ47Pvroo+zatSur3bVr19KkSRPWrVvH+PHjSz327IxklQK79rRt21YyX7iylH75Mkfad8Bz/EvUtHGXilJKqdwOHz5M8+bNKzoMpSqErfe/MWa3iLS1dbz2kBWCXdWqmEqVtDisUkoppcqEJmSFYIzR4rBKKaWUKjOakBWStTisJmRKKaWUKn2akBWStYdMhyyVUkopVfo0ISukzCHLa/kmCKWUUkpdnTQhKyRHL08kJYX0y5crOhSllFJKXWc0ISukf4rD6rClUkpdK+zt7bPqkPn5+fHhhx9isVgA2LVrF08//XSe54aEhLBw4cLyCjWXqVOn0rx5c4YNG1am10lNTWX8+PE0adKEgIAAOnTowOrVq4vV1saNG7MWXS9P06ZNo1mzZrRs2TLHMlIHDhygQ4cOtGzZklatWpGUlERsbGzWQvL+/v7UqlWLZ5991ma777zzDo0bN6Zp06Y2V28oTVqpv5ByFIdt2rSCo1FKKVUYLi4uWVXfL1y4wNChQ4mJieH111+nbdu2tG1rsyQU8E9CNnTo0HKKNqcZM2awbt26XGsupqWl4eBQeh/fr776KuHh4Rw8eJBKlSpx/vx5Nm3aVKy2Nm7ciJubGx07diz0OSV9Phs2bGDlypXs37+fSpUqcSGj4yQtLY0HH3yQ+fPn4+fnR2RkJI6Ojjg7O+dYCaBNmzZZ63JmFxQUxOLFizl06BBhYWHceeedHDlyBHt7+2LHmh/tISskRy/rGlapWvpCKaWuSZ6ensyePZvp06cjImzcuJG+ffsCsGnTpqwek9atWxMbG8v48ePZvHkz/v7+TJkyhZCQEDp37kxAQAABAQFZPUGZywzde++9NGvWjGHDhmXNN965cycdO3bEz8+Pdu3aERsbS3p6OuPGjSMwMBBfX19mzZqVK9bRo0dz4sQJevfuzZQpU5g4cSLDhw+nU6dODB8+nJCQELp27Yqvry/dunXj9OnTAIwcOZInnniC9u3b06hRIzZu3MgjjzxC8+bNGWmjsHlCQgKff/4506ZNy1qb0svLi8GDBwPWhdA7dOhAQEAA9913X9bC4A0aNGDChAkEBATQqlUrgoODCQkJYebMmUyZMiWrUn9ERASDBg0iMDCQwMBAtm7dCpDr+ZTEZ599xvjx47Piz1xz8tdff8XX1xc/Pz8AatasmSuZOnLkCBcuXLC59NTKlSt54IEHqFSpEg0bNqRx48bs2LGjRLHmS0Su2a82bdpIebEkJ0tQ02ZyYdr0crumUkpdy4KCgio6BHF1dc21rWrVqnLu3DnZsGGD9OnTR0RE+vbtK1u2bBERkdjYWElNTc2xX0QkPj5eEhMTRUTkyJEjkvkZtGHDBqlSpYqcOXNG0tPTpX379rJ582ZJTk6Whg0byo4dO0REJDo6WlJTU2XWrFkyadIkERFJSkqSNm3ayIkTJ3LFWb9+fYmIiBARkQkTJkhAQIAkJCRkxTtnzhwREfnyyy9lwIABIiIyYsQIuf/++8VisciKFSvE3d1dDhw4IOnp6RIQECB79+7NcY39+/eLv7+/zdcuIiJCOnfuLHFxcSIiMnnyZHn99dezYps6daqIiHz66acyatSorDjff//9rDaGDBkimzdvFhGRU6dOSbNmzWw+n+xiYmLEz8/P5tehQ4dyHe/n5yevvfaatGvXTm677bas13vKlCny4IMPSo8ePaR169by7rvv5jr39ddfl//+9782n/+YMWNk/vz5WY8feeQR+e6772wea4ut9z+wS/LIaXTIspCMkxP2NWtqcVillCqGd3e8S3BU/usgFlWzGs14qd1LpdJWp06deP755xk2bBgDBw7MNUwI1rlWY8eOZd++fdjb23PkyJGsfe3atcs6x9/fn5CQEKpWrYq3tzeBgYEAVKlSBbD23Bw4cIClS5cC1kXLjx49SsOGDfONsX///ri4uACwbds2li1bBsDw4cNzzJvq168fxhhatWqFl5cXrVq1AqBly5aEhIQUuLh3pu3btxMUFESnTp0ASElJoUOHDln7M4f52rRpkxXLldatW0dQUFDW45iYmKxetuzPJ7uiLi6elpZGVFQU27dvZ+fOnQwePJgTJ06QlpbGli1b2LlzJ5UrV6Zbt260adOGbt26ZZ27ePFi5s+fX+hrlSVNyIrAwUuLwyql1LXsxIkT2Nvb4+npyeHDh7O2jx8/nj59+vDzzz/TqVMnmxO4p0yZgpeXF/v378diseDs7Jy1L3O4DKw3EuS3WLiIMG3aNHr27Fmk2AtazPzKWOzs7HLEZWdnlyuuxo0bc/r0aWJiYrISxuxxdu/enUWLFuV7nfyer8ViYfv27Tleq4KeT2xsrM0hRICFCxfSokWLHNvq1avHwIEDMcbQrl077OzsuHjxIvXq1eO2226jVq1aANx1113s2bMnKyHbv38/aWlptGnTxua16taty5kzZ7Ienz17lrp169o8tjRoQlYEjp5epJ47V9FhKKXUNae0erJKIiIigtGjRzN27FiMMTn2HT9+nFatWtGqVSt27txJcHAwN9xwA7GxsVnHREdHU69ePezs7Jg7dy7p6en5Xq9p06aEh4ezc+dOAgMDiY2NxcXFhZ49e/LZZ5/RtWtXHB0dOXLkCHXr1i10wgXQsWNHFi9ezPDhw1mwYEGeCUxBKleuzKhRo3jmmWeYNWsWTk5OREREZM2LGzNmDMeOHaNx48bEx8cTGhrKzTffnGd77u7uxMTEZD3u0aMH06ZNY9y4cQDs27evwB66ovaQ3X333WzYsIEuXbpw5MgRUlJSqFWrFj179uS9994jISEBJycnNm3axHPPPZd13qJFixgyZEie7fbv35+hQ4fy/PPPExYWxtGj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\n",
"text/plain": [
"<Figure size 720x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"figure_fitting_error_by_measurement_count(\n",
" 'Fig 5. Fitting Error for Confined Measurements',\n",
" theta_range=(-np.pi/10,np.pi/10),\n",
" phi_range=(0,np.pi/5),\n",
" r_max=1000)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Observations**:\n",
"* Confining measurement locations to a small area reduces the _averaging_ effect of the algorithm particularly for\n",
" larger distances from the vector field center.\n",
"* The variance of the calculated center noticeably increases for measurements taken at larger distances."
]
},
{
"cell_type": "markdown",
"metadata": {
"tags": []
},
"source": [
"# Appendix"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## References\n",
"\n",
"* [Pencil of Lines](https://en.wikipedia.org/wiki/Pencil_(mathematics)) (Wikipedia) - A set of lines that pass through a common point.\n",
"* [Distance from a point to a line](https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line) (Wikipedia)\n",
"* [Energy Function](https://en.wikipedia.org/wiki/Energy_functional) (Wikipedia) - a scalar quantity, a function of the state of a system.\n",
"* [EquationRegistry](https://gist.github.com/WetHat/6a8e38fb92ab831d8cdb5d66f2d2e524): Manage and auto-number\n",
" `SymPy` math expressions.\n",
"* [Symbolic Vector Algebra](https://gist.github.com/WetHat/1225a0524a53894353e850d458f73bd1): A `SymPy` extension.\n",
"* [Euclidian distance](https://en.wikipedia.org/wiki/Euclidean_distance) (Wikipedia) - length of a line segment between the two points.\n",
"* [Vector Fields](https://ximera.osu.edu/mooculus/calculus3/vectorFields/digInVectorFields) - Vector field introduction"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## About this JupyterLab Notebook\n",
"\n",
"This Gist was created using the [Jupyter Lab](https://jupyter.org/) computational notebook with\n",
"the python3 kernel and following additional Python modules:"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [],
"source": [
"from jnbBuffs.manifest import notebook_manifest"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"| Component | Version | Description |\n",
"| --------------------------------- | -------------------------- | -------------------- |\n",
"| [Python](https://www.python.org/) | 3.8.6 | Programming Language |\n",
"| [jnbBuffs](https://github.com/WetHat/jupyter-notebooks) | 0.1.8 | Utilities for authoring JupyterLab Python notebooks. |\n",
"| [jupyterlab](http://jupyter.org) | 3.0.12 | The JupyterLab server extension. |\n",
"| [matplotlib](https://matplotlib.org) | 3.4.1 | Python plotting package |\n",
"| [numpy](https://www.numpy.org) | 1.20.2 | NumPy is the fundamental package for array computing with Python. |\n",
"| [scipy](https://www.scipy.org) | 1.5.2 | SciPy: Scientific Library for Python |\n",
"| [sympy](https://sympy.org) | 1.7.1 | Computer algebra system (CAS) in Python |"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"notebook_manifest('jupyterlab', 'matplotlib', 'numpy', 'sympy', 'scipy', 'jnbBuffs')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python (JupyterLab)",
"language": "python",
"name": "jupyterlab"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.6"
},
"toc-autonumbering": true,
"toc-showcode": false,
"toc-showmarkdowntxt": false
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment