{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "4a17018a-d6a3-449b-a02e-2b21fe91dabf",
      "metadata": {},
      "source": [
        "# BVP Green's Functions\n",
        "\n",
        "Copyright (C) 2026 Andreas Kloeckner\n",
        "\n",
        "<details>\n",
        "<summary>MIT License</summary>\n",
        "Permission is hereby granted, free of charge, to any person obtaining a copy\n",
        "of this software and associated documentation files (the \"Software\"), to deal\n",
        "in the Software without restriction, including without limitation the rights\n",
        "to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n",
        "copies of the Software, and to permit persons to whom the Software is\n",
        "furnished to do so, subject to the following conditions:\n",
        "\n",
        "The above copyright notice and this permission notice shall be included in\n",
        "all copies or substantial portions of the Software.\n",
        "\n",
        "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n",
        "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n",
        "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n",
        "AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n",
        "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n",
        "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n",
        "THE SOFTWARE.\n",
        "</details>"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "metadata": {},
      "outputs": [],
      "source": [
        "import numpy as np\n",
        "import numpy.linalg as la\n",
        "import sympy as sp\n",
        "import matplotlib.pyplot as plt"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "metadata": {},
      "outputs": [],
      "source": [
        "x = sp.Symbol(\"x\")\n",
        "z = sp.Symbol(\"z\")"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "95d3e61b-66ce-4c42-b2aa-c02cd87f28e3",
      "metadata": {},
      "source": [
        "Let's consider the ODE system\n",
        "$$\n",
        "\\boldsymbol y'(x) = \\begin{bmatrix}\n",
        "0 & 1\\\\\n",
        "-1 & 0\n",
        "\\end{bmatrix}\n",
        "\\boldsymbol y(x) + \\begin{bmatrix}\n",
        "3\\\\\n",
        "1\n",
        "\\end{bmatrix}\n",
        "$$\n",
        "i.e. the harmonic oscillator with boundary conditions\n",
        "$$\n",
        "\\begin{align*}\n",
        "y_1(0) &= 2\\\\\n",
        "y_1'(\\pi/2) - 3 y_1(\\pi/2) &= -4\\\\\n",
        "\\end{align*}\n",
        "$$"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "cf48dd5d-48bf-4b41-8d16-28ef244f2981",
      "metadata": {},
      "source": [
        "Set up system data and the fundamental solution matrix $\\boldsymbol Y$:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}\\sin{\\left(x \\right)} & \\cos{\\left(x \\right)}\\\\\\cos{\\left(x \\right)} & - \\sin{\\left(x \\right)}\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[sin(x),  cos(x)],\n",
              "[cos(x), -sin(x)]])"
            ]
          },
          "execution_count": 4,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "A = sp.Matrix([[0, 1], [-1, 0]])\n",
        "rhs = sp.Matrix([[3, 1]]).T\n",
        "a = sp.sympify(0)\n",
        "b = sp.pi/2\n",
        "B_a = sp.Matrix([[1, 0], [0, 0]])\n",
        "B_b = sp.Matrix([[0, 0], [-3, 1]])\n",
        "c = sp.Matrix([[2, -4]]).T\n",
        "\n",
        "xmesh = np.linspace(float(a), float(b), 1000)\n",
        "\n",
        "solutions = [sp.sin(x), sp.cos(x)]\n",
        "Y = sp.Matrix([\n",
        "   [sol.diff(x, num_derivs) for sol in solutions]\n",
        "   for num_derivs in [0, 1]\n",
        "])\n",
        "Y"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "1ae7b403-d4f1-40c3-9cc5-4722b92df8dd",
      "metadata": {},
      "source": [
        "Check that the columns satisfies the homogeneous ODE:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}0 & 0\\\\0 & 0\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[0, 0],\n",
              "[0, 0]])"
            ]
          },
          "execution_count": 5,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "Y.diff(x) - A @ Y"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "21d2e7bc-8e91-4e6d-a693-27c62e76d838",
      "metadata": {},
      "source": [
        "## Solving the volume-homogeneous/\"boundary-only\" BVP \n",
        "\n",
        "Plug in the BCs. "
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}0 & 1\\\\0 & 0\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[0, 1],\n",
              "[0, 0]])"
            ]
          },
          "execution_count": 6,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "B_a @ Y.subs(x, a) "
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}0 & 0\\\\-3 & -1\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[ 0,  0],\n",
              "[-3, -1]])"
            ]
          },
          "execution_count": 7,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "B_b @ Y.subs(x, b)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "5d6135d4-039f-4e01-9b83-d684ba522ab6",
      "metadata": {},
      "source": [
        "What do the matrix entries of $\\boldsymbol Q$ mean?"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}0 & 1\\\\-3 & -1\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[ 0,  1],\n",
              "[-3, -1]])"
            ]
          },
          "execution_count": 8,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "Q = B_a @ Y.subs(x, a) + B_b @ Y.subs(x, b)\n",
        "Q"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "4c63f4e3-0004-45d2-8425-a9da34422834",
      "metadata": {},
      "source": [
        "What does $\\boldsymbol Q^{-1} \\boldsymbol c$ mean?"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 9,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}\\frac{2}{3}\\\\2\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[2/3],\n",
              "[  2]])"
            ]
          },
          "execution_count": 9,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "Q.inv() @ c"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 10,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}- \\frac{\\sin{\\left(x \\right)}}{3} + \\cos{\\left(x \\right)} & - \\frac{\\sin{\\left(x \\right)}}{3}\\\\- \\sin{\\left(x \\right)} - \\frac{\\cos{\\left(x \\right)}}{3} & - \\frac{\\cos{\\left(x \\right)}}{3}\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[-sin(x)/3 + cos(x), -sin(x)/3],\n",
              "[-sin(x) - cos(x)/3, -cos(x)/3]])"
            ]
          },
          "execution_count": 10,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "Phi = Y @ Q.inv()\n",
        "Phi"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "7149edb6-ed8d-4026-95f1-e46d394c4016",
      "metadata": {},
      "source": [
        "Observe:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 112,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}1 & 0\\\\0 & 1\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[1, 0],\n",
              "[0, 1]])"
            ]
          },
          "execution_count": 112,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "B_a @ Phi.subs(x, a) + B_b @ Phi.subs(x, b)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "5a0aabd8-d519-4f8b-97f3-079df95af996",
      "metadata": {},
      "source": [
        "Specifically:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 115,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}1 & 0\\\\0 & 0\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[1, 0],\n",
              "[0, 0]])"
            ]
          },
          "execution_count": 115,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "B_a @ Phi.subs(x, a)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 114,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}0 & 0\\\\0 & 1\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[0, 0],\n",
              "[0, 1]])"
            ]
          },
          "execution_count": 114,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "B_b @ Phi.subs(x, b)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "efdc4513-47d8-49fd-8241-8bf83a002de7",
      "metadata": {},
      "source": [
        "Check $\\boldsymbol y_B = \\boldsymbol \\Phi \\boldsymbol c$ satisfies the BCs:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 11,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}\\frac{2 \\sin{\\left(x \\right)}}{3} + 2 \\cos{\\left(x \\right)}\\\\- 2 \\sin{\\left(x \\right)} + \\frac{2 \\cos{\\left(x \\right)}}{3}\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[ 2*sin(x)/3 + 2*cos(x)],\n",
              "[-2*sin(x) + 2*cos(x)/3]])"
            ]
          },
          "execution_count": 11,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "yB = Phi @ c\n",
        "yB"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 12,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}2\\\\0\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[2],\n",
              "[0]])"
            ]
          },
          "execution_count": 12,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "B_a @ yB.subs(x, a)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 13,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}0\\\\-4\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[ 0],\n",
              "[-4]])"
            ]
          },
          "execution_count": 13,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "B_b @ yB.subs(x, b)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "c272d983-e0cc-4206-a979-015ec26d314f",
      "metadata": {},
      "source": [
        "Plot it:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 14,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7feee2576ba0>]"
            ]
          },
          "execution_count": 14,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "plt.plot(xmesh, sp.lambdify(x, yB[0], \"numpy\")(xmesh))"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "4b5b23a2-5065-4244-a735-8980f63b17cc",
      "metadata": {},
      "source": [
        "## Solving the boundary-homogeneous/\"volume-only\" BVP "
      ]
    },
    {
      "cell_type": "markdown",
      "id": "62dc3706-a660-46e5-ac6e-47e18f2db3e0",
      "metadata": {},
      "source": [
        "Set up the two pieces of the Green's function:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 104,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}\\frac{\\left(- \\frac{\\sin{\\left(x \\right)}}{3} + \\cos{\\left(x \\right)}\\right) \\left(- 3 \\sin^{2}{\\left(z \\right)} - \\sin{\\left(z \\right)} \\cos{\\left(z \\right)} + 3\\right)}{- \\sin{\\left(z \\right)} + 3 \\cos{\\left(z \\right)}} & - \\left(- \\frac{\\sin{\\left(x \\right)}}{3} + \\cos{\\left(x \\right)}\\right) \\sin{\\left(z \\right)}\\\\\\frac{\\left(- \\sin{\\left(x \\right)} - \\frac{\\cos{\\left(x \\right)}}{3}\\right) \\left(- 3 \\sin^{2}{\\left(z \\right)} - \\sin{\\left(z \\right)} \\cos{\\left(z \\right)} + 3\\right)}{- \\sin{\\left(z \\right)} + 3 \\cos{\\left(z \\right)}} & - \\left(- \\sin{\\left(x \\right)} - \\frac{\\cos{\\left(x \\right)}}{3}\\right) \\sin{\\left(z \\right)}\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[(-sin(x)/3 + cos(x))*(-3*sin(z)**2 - sin(z)*cos(z) + 3)/(-sin(z) + 3*cos(z)), -(-sin(x)/3 + cos(x))*sin(z)],\n",
              "[(-sin(x) - cos(x)/3)*(-3*sin(z)**2 - sin(z)*cos(z) + 3)/(-sin(z) + 3*cos(z)), -(-sin(x) - cos(x)/3)*sin(z)]])"
            ]
          },
          "execution_count": 104,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "Gleft = Phi @ B_a @ Phi.subs(x, a) @ Phi.subs(x, z).inv()\n",
        "Gright = - Phi @ B_b @ Phi.subs(x, b) @ Phi.subs(x, z).inv()\n",
        "Gleft"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "e9f93a1d-e5e4-4891-83b4-1ef35c76beab",
      "metadata": {},
      "source": [
        "Define an overall function and plot:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 105,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\begin{cases} \\frac{\\left(- \\frac{\\sin{\\left(x \\right)}}{3} + \\cos{\\left(x \\right)}\\right) \\left(- 3 \\sin^{2}{\\left(z \\right)} - \\sin{\\left(z \\right)} \\cos{\\left(z \\right)} + 3\\right)}{- \\sin{\\left(z \\right)} + 3 \\cos{\\left(z \\right)}} & \\text{for}\\: x > z \\\\\\frac{\\left(- 3 \\sin{\\left(z \\right)} - \\cos{\\left(z \\right)}\\right) \\sin{\\left(x \\right)}}{3} & \\text{for}\\: x < z \\end{cases}$"
            ],
            "text/plain": [
              "Piecewise(((-sin(x)/3 + cos(x))*(-3*sin(z)**2 - sin(z)*cos(z) + 3)/(-sin(z) + 3*cos(z)), x > z), ((-3*sin(z) - cos(z))*sin(x)/3, x < z))"
            ]
          },
          "execution_count": 105,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "G0 = sp.Piecewise(\n",
        "    (Gleft[0, 0], z < x),\n",
        "    (Gright[0, 0], z > x),\n",
        ")\n",
        "plt.plot(xmesh, sp.lambdify(x, G0.subs(z, 0.9), \"numpy\")(xmesh))\n",
        "G0"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "73df66a8-a7a6-41f7-8ca0-7ca5d49ea60b",
      "metadata": {},
      "source": [
        "Verify that G satisfies the volume-homogeneous ODE:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 106,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}0 & 0\\\\0 & 0\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[0, 0],\n",
              "[0, 0]])"
            ]
          },
          "execution_count": 106,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "sp.simplify(Gleft.diff(x) - A @ Gleft)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 107,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}0 & 0\\\\0 & 0\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[0, 0],\n",
              "[0, 0]])"
            ]
          },
          "execution_count": 107,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "sp.simplify(Gright.diff(x) - A @ Gright)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "435ffad8-6e15-4b25-a2b2-9dc312402a36",
      "metadata": {},
      "source": [
        "Verify that G satisfies the boundary conditions.\n",
        "\n",
        "- Note that $x= a<z$, so that we use the $x < z$ `Gright` branch.\n",
        "- "
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 108,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}0 & 0\\\\0 & 0\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[0, 0],\n",
              "[0, 0]])"
            ]
          },
          "execution_count": 108,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "B_a @ Gright.subs(x, a)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 109,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}0 & 0\\\\0 & 0\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[0, 0],\n",
              "[0, 0]])"
            ]
          },
          "execution_count": 109,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "B_b @ Gleft.subs(x, b)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "f38a7ea6-b384-4dbe-8537-8cdaa59eb6ef",
      "metadata": {},
      "source": [
        "Verify the jump condition:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 101,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}1 & 0\\\\0 & 1\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[1, 0],\n",
              "[0, 1]])"
            ]
          },
          "execution_count": 101,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "sp.simplify(Gleft.subs(x, z) - Gright.subs(x, z))"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "25ed74d7-3e0e-4ece-b483-880884bb6ccc",
      "metadata": {},
      "source": [
        "Put together the volume solution:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 86,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}- \\frac{\\left(- 3 \\sin{\\left(x \\right)} - \\cos{\\left(x \\right)}\\right) \\sin{\\left(x \\right)}}{3} - \\left(- \\sin{\\left(x \\right)} + 3 \\cos{\\left(x \\right)}\\right) \\sin{\\left(x \\right)} + \\frac{2 \\left(- \\sin{\\left(x \\right)} + 3 \\cos{\\left(x \\right)}\\right) \\tan{\\left(\\frac{x}{2} \\right)}}{\\tan^{2}{\\left(\\frac{x}{2} \\right)} + 1} - \\left(\\frac{\\sin{\\left(x \\right)}}{3} - \\cos{\\left(x \\right)}\\right) \\cos{\\left(x \\right)} - \\frac{5 \\sin{\\left(x \\right)}}{3} - \\cos{\\left(x \\right)}\\\\- \\frac{\\left(- 3 \\sin{\\left(x \\right)} - \\cos{\\left(x \\right)}\\right) \\cos{\\left(x \\right)}}{3} + \\frac{2 \\left(- 3 \\sin{\\left(x \\right)} - \\cos{\\left(x \\right)}\\right) \\tan{\\left(\\frac{x}{2} \\right)}}{\\tan^{2}{\\left(\\frac{x}{2} \\right)} + 1} - \\left(- \\sin{\\left(x \\right)} + 3 \\cos{\\left(x \\right)}\\right) \\cos{\\left(x \\right)} - \\left(\\sin{\\left(x \\right)} + \\frac{\\cos{\\left(x \\right)}}{3}\\right) \\cos{\\left(x \\right)} + \\sin{\\left(x \\right)} - \\frac{5 \\cos{\\left(x \\right)}}{3}\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[-(-3*sin(x) - cos(x))*sin(x)/3 - (-sin(x) + 3*cos(x))*sin(x) + 2*(-sin(x) + 3*cos(x))*tan(x/2)/(tan(x/2)**2 + 1) - (sin(x)/3 - cos(x))*cos(x) - 5*sin(x)/3 - cos(x)],\n",
              "[-(-3*sin(x) - cos(x))*cos(x)/3 + 2*(-3*sin(x) - cos(x))*tan(x/2)/(tan(x/2)**2 + 1) - (-sin(x) + 3*cos(x))*cos(x) - (sin(x) + cos(x)/3)*cos(x) + sin(x) - 5*cos(x)/3]])"
            ]
          },
          "execution_count": 86,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "yV =  (\n",
        "    sp.integrate(Gleft @ rhs.subs(x, z), (z, a, x))\n",
        "    + sp.integrate(Gright @ rhs.subs(x, z), (z, x, b))\n",
        ")\n",
        "yV"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "863f1619-921d-4ef5-be8d-53e88bb8e986",
      "metadata": {},
      "source": [
        "Verify the ODE:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 87,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}\\left(2 \\left(\\sin{\\left(x \\right)} - 3 \\cos{\\left(x \\right)}\\right) \\tan^{2}{\\left(\\frac{x}{2} \\right)} + \\frac{- 2 \\sin{\\left(x \\right)} + \\sin{\\left(2 x \\right)} + 6 \\cos{\\left(x \\right)} - 3 \\cos{\\left(2 x \\right)} - 3}{\\cos{\\left(x \\right)} + 1}\\right) \\cos^{2}{\\left(\\frac{x}{2} \\right)}\\\\\\left(2 \\left(3 \\sin{\\left(x \\right)} + \\cos{\\left(x \\right)}\\right) \\tan^{2}{\\left(\\frac{x}{2} \\right)} + \\frac{- 6 \\sin{\\left(x \\right)} + 3 \\sin{\\left(2 x \\right)} - 2 \\cos{\\left(x \\right)} + \\cos{\\left(2 x \\right)} + 1}{\\cos{\\left(x \\right)} + 1}\\right) \\cos^{2}{\\left(\\frac{x}{2} \\right)}\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[(2*(sin(x) - 3*cos(x))*tan(x/2)**2 + (-2*sin(x) + sin(2*x) + 6*cos(x) - 3*cos(2*x) - 3)/(cos(x) + 1))*cos(x/2)**2],\n",
              "[(2*(3*sin(x) + cos(x))*tan(x/2)**2 + (-6*sin(x) + 3*sin(2*x) - 2*cos(x) + cos(2*x) + 1)/(cos(x) + 1))*cos(x/2)**2]])"
            ]
          },
          "execution_count": 87,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "sp.simplify(yV.diff(x) - A @ yV - rhs)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "2dd3855a-358a-4913-a4c1-97d25c742166",
      "metadata": {},
      "source": [
        "OK then...\n",
        "Verify the ODE numerically:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 88,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/latex": [
              "$\\displaystyle \\left[\\begin{matrix}6.86973595315652 \\cdot 10^{-17}\\\\-7.55670954847217 \\cdot 10^{-17}\\end{matrix}\\right]$"
            ],
            "text/plain": [
              "Matrix([\n",
              "[ 6.86973595315652e-17],\n",
              "[-7.55670954847217e-17]])"
            ]
          },
          "execution_count": 88,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "sp.simplify(yV.diff(x) - A @ yV - rhs).subs(x, 0.2).evalf()"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "01294f68-8786-47e4-a0ba-ac712aaf0ea4",
      "metadata": {},
      "source": [
        "Plot it:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 89,
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7feee13f0ad0>]"
            ]
          },
          "execution_count": 89,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "plt.plot(xmesh, sp.lambdify(x, yV[0], \"numpy\")(xmesh))"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "4232cbfc-bcc8-4b6b-a864-10ee62de0f42",
      "metadata": {},
      "source": []
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3 (ipykernel)",
      "language": "python",
      "name": "python3"
    },
    "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.14.3"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 5
}