{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Example 3: Minimum Frobenius Norm Static Output Feedback" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The example system has been taken from \\[1, Example 3\\]. The eigenvalue placement with minimum Frobenium norm is discussed in \\[2, 3\\]. The poles should be placed at $-3,-4,-5,-2\\pm2j$, i.e., we want to have a conjugate complex pair.\n", "\n", "1. Lee, T. H.,; Wang, Q. G.; Koh, E. K. (1994). *An iterative algorithm for pole placement by output feedback*. IEEE Transactions on Automatic Control, 39(3), 565-568.\n", "2. Röbenack, K.: Voßwinkell, R.: Franke, M. (2018). *On the eigenvalue placement by static output feedback via quantifier elimination*. In 26th Mediterranean Conference on Control and Automation (MED), pp. 133-138. DOI: <https://doi.org/10.1109/MED.2018.8442817>\n", "3. Röbenack, K.; Gerbet, D.: *Minimum Norm Partial Eigenvalue Placement for Static Output Feedback Control*.\n", "[International Conference on System Theory, Control and Computing (ICSTCC)](https://icstcc2021.ac.tuiasi.ro/), \n", "October 20-23, 2021, Iași, Romania" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Polynomial ring" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\Bold{Q}[k_{11}, k_{12}, k_{21}, k_{22}, k_{31}, k_{32}, s, l_{0}, l_{1}, l_{2}, l_{3}, l_{4}, l_{5}, q]</script></html>" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\Bold{Q}[k_{11}, k_{12}, k_{21}, k_{22}, k_{31}, k_{32}, s, l_{0}, l_{1}, l_{2}, l_{3}, l_{4}, l_{5}, q]$$" ], "text/plain": [ "Multivariate Polynomial Ring in k11, k12, k21, k22, k31, k32, s, l0, l1, l2, l3, l4, l5, q over Rational Field" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%display latex\n", "R.<k11,k12,k21,k22,k31,k32,s,l0,l1,l2,l3,l4,l5,q> = PolynomialRing(QQ, order='lex')\n", "R" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "State space system" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\left(\\begin{array}{rrrrr}\n", "0 & 1 & 0 & 0 & 0 \\\\\n", "0 & 0 & 1 & 0 & 0 \\\\\n", "0 & 0 & 0 & 1 & 0 \\\\\n", "0 & 0 & 0 & 0 & 1 \\\\\n", "0 & 0 & 0 & 0 & 0\n", "\\end{array}\\right), \\left(\\begin{array}{rrr}\n", "1 & 0 & 0 \\\\\n", "1 & 0 & 0 \\\\\n", "0 & 1 & 0 \\\\\n", "0 & 1 & 0 \\\\\n", "0 & 0 & 1\n", "\\end{array}\\right), \\left(\\begin{array}{rrrrr}\n", "1 & 0 & 0 & 0 & 0 \\\\\n", "0 & 1 & 0 & 0 & 0\n", "\\end{array}\\right)\\right)</script></html>" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\left(\\begin{array}{rrrrr}\n", "0 & 1 & 0 & 0 & 0 \\\\\n", "0 & 0 & 1 & 0 & 0 \\\\\n", "0 & 0 & 0 & 1 & 0 \\\\\n", "0 & 0 & 0 & 0 & 1 \\\\\n", "0 & 0 & 0 & 0 & 0\n", "\\end{array}\\right), \\left(\\begin{array}{rrr}\n", "1 & 0 & 0 \\\\\n", "1 & 0 & 0 \\\\\n", "0 & 1 & 0 \\\\\n", "0 & 1 & 0 \\\\\n", "0 & 0 & 1\n", "\\end{array}\\right), \\left(\\begin{array}{rrrrr}\n", "1 & 0 & 0 & 0 & 0 \\\\\n", "0 & 1 & 0 & 0 & 0\n", "\\end{array}\\right)\\right)$$" ], "text/plain": [ "(\n", "[0 1 0 0 0] [1 0 0] \n", "[0 0 1 0 0] [1 0 0] \n", "[0 0 0 1 0] [0 1 0] \n", "[0 0 0 0 1] [0 1 0] [1 0 0 0 0]\n", "[0 0 0 0 0], [0 0 1], [0 1 0 0 0]\n", ")" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A = matrix(R,[[0,1,0,0,0],\n", " [0,0,1,0,0],\n", " [0,0,0,1,0],\n", " [0,0,0,0,1],\n", " [0,0,0,0,0]])\n", "B = matrix(R,[[1,0,0],[1,0,0],[0,1,0],[0,1,0],[0,0,1]])\n", "C = matrix(R,[[1,0,0,0,0],[0,1,0,0,0]])\n", "(A,B,C)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Symbolic feedback matrix" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rr}\n", "k_{11} & k_{12} \\\\\n", "k_{21} & k_{22} \\\\\n", "k_{31} & k_{32}\n", "\\end{array}\\right)</script></html>" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rr}\n", "k_{11} & k_{12} \\\\\n", "k_{21} & k_{22} \\\\\n", "k_{31} & k_{32}\n", "\\end{array}\\right)$$" ], "text/plain": [ "[k11 k12]\n", "[k21 k22]\n", "[k31 k32]" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "K = matrix(R,[[k11,k12],[k21,k22],[k31,k32]])\n", "K" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Closed-loop characteristic polynomial" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}k_{11} s^{4} + k_{12} s^{4} + s^{5} - k_{12} k_{21} s^{2} + k_{11} k_{22} s^{2} + k_{11} s^{3} + k_{22} s^{3} - k_{12} k_{21} s + k_{11} k_{22} s + k_{21} s^{2} + k_{22} s^{2} - k_{12} k_{31} + k_{11} k_{32} + k_{21} s + k_{32} s + k_{31}</script></html>" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}k_{11} s^{4} + k_{12} s^{4} + s^{5} - k_{12} k_{21} s^{2} + k_{11} k_{22} s^{2} + k_{11} s^{3} + k_{22} s^{3} - k_{12} k_{21} s + k_{11} k_{22} s + k_{21} s^{2} + k_{22} s^{2} - k_{12} k_{31} + k_{11} k_{32} + k_{21} s + k_{32} s + k_{31}$$" ], "text/plain": [ "k11*s^4 + k12*s^4 + s^5 - k12*k21*s^2 + k11*k22*s^2 + k11*s^3 + k22*s^3 - k12*k21*s + k11*k22*s + k21*s^2 + k22*s^2 - k12*k31 + k11*k32 + k21*s + k32*s + k31" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "CP = det(s*matrix.identity(5)-(A-B*K*C))\n", "CP" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Remainders of polynomial division for an eigenvalue placement at $-3,-4,-5,-2\\pm2j$" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "q1,r1 = CP.quo_rem(s+5)\n", "q2,r2 = q1.quo_rem(s+4)\n", "q3,r3 = q2.quo_rem(s+3)\n", "q4,r4 = q3.quo_rem(s^2 + 4*s + 8)\n", "r4a = r4.coefficient({s:0})\n", "r4b = r4.coefficient({s:1})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lagrangian function" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}k_{11}^{2} l_{0} + 20 k_{11} k_{22} l_{1} - 8 k_{11} k_{22} l_{2} + k_{11} k_{22} l_{3} + k_{11} k_{32} l_{1} + 500 k_{11} l_{1} - 308 k_{11} l_{2} + 85 k_{11} l_{3} - 11 k_{11} l_{4} + k_{11} l_{5} + k_{12}^{2} l_{0} - 20 k_{12} k_{21} l_{1} + 8 k_{12} k_{21} l_{2} - k_{12} k_{21} l_{3} - k_{12} k_{31} l_{1} + 625 k_{12} l_{1} - 369 k_{12} l_{2} + 97 k_{12} l_{3} - 12 k_{12} l_{4} + k_{12} l_{5} + k_{21}^{2} l_{0} + 20 k_{21} l_{1} - 8 k_{21} l_{2} + k_{21} l_{3} + k_{22}^{2} l_{0} - 100 k_{22} l_{1} + 52 k_{22} l_{2} - 11 k_{22} l_{3} + k_{22} l_{4} + k_{31}^{2} l_{0} + k_{31} l_{1} + k_{32}^{2} l_{0} - 5 k_{32} l_{1} + k_{32} l_{2} - l_{0} q - 3125 l_{1} + 2101 l_{2} - 660 l_{3} + 89 l_{4} - 16 l_{5} + q</script></html>" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}k_{11}^{2} l_{0} + 20 k_{11} k_{22} l_{1} - 8 k_{11} k_{22} l_{2} + k_{11} k_{22} l_{3} + k_{11} k_{32} l_{1} + 500 k_{11} l_{1} - 308 k_{11} l_{2} + 85 k_{11} l_{3} - 11 k_{11} l_{4} + k_{11} l_{5} + k_{12}^{2} l_{0} - 20 k_{12} k_{21} l_{1} + 8 k_{12} k_{21} l_{2} - k_{12} k_{21} l_{3} - k_{12} k_{31} l_{1} + 625 k_{12} l_{1} - 369 k_{12} l_{2} + 97 k_{12} l_{3} - 12 k_{12} l_{4} + k_{12} l_{5} + k_{21}^{2} l_{0} + 20 k_{21} l_{1} - 8 k_{21} l_{2} + k_{21} l_{3} + k_{22}^{2} l_{0} - 100 k_{22} l_{1} + 52 k_{22} l_{2} - 11 k_{22} l_{3} + k_{22} l_{4} + k_{31}^{2} l_{0} + k_{31} l_{1} + k_{32}^{2} l_{0} - 5 k_{32} l_{1} + k_{32} l_{2} - l_{0} q - 3125 l_{1} + 2101 l_{2} - 660 l_{3} + 89 l_{4} - 16 l_{5} + q$$" ], "text/plain": [ "k11^2*l0 + 20*k11*k22*l1 - 8*k11*k22*l2 + k11*k22*l3 + k11*k32*l1 + 500*k11*l1 - 308*k11*l2 + 85*k11*l3 - 11*k11*l4 + k11*l5 + k12^2*l0 - 20*k12*k21*l1 + 8*k12*k21*l2 - k12*k21*l3 - k12*k31*l1 + 625*k12*l1 - 369*k12*l2 + 97*k12*l3 - 12*k12*l4 + k12*l5 + k21^2*l0 + 20*k21*l1 - 8*k21*l2 + k21*l3 + k22^2*l0 - 100*k22*l1 + 52*k22*l2 - 11*k22*l3 + k22*l4 + k31^2*l0 + k31*l1 + k32^2*l0 - 5*k32*l1 + k32*l2 - l0*q - 3125*l1 + 2101*l2 - 660*l3 + 89*l4 - 16*l5 + q" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "L = q + l0*(k11^2+k12^2+k21^2+k22^2+k31^2+k32^2-q) + l1*r1 + l2*r2 + l3*r3 + l4*r4a + l5*r4b\n", "L" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Neccessary optimility condition and associated polynomial ideal" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 : k11 : 2*k11*l0 + 20*k22*l1 - 8*k22*l2 + k22*l3 + k32*l1 + 500*l1 - 308*l2 + 85*l3 - 11*l4 + l5\n", "1 : k12 : 2*k12*l0 - 20*k21*l1 + 8*k21*l2 - k21*l3 - k31*l1 + 625*l1 - 369*l2 + 97*l3 - 12*l4 + l5\n", "2 : k21 : -20*k12*l1 + 8*k12*l2 - k12*l3 + 2*k21*l0 + 20*l1 - 8*l2 + l3\n", "3 : k22 : 20*k11*l1 - 8*k11*l2 + k11*l3 + 2*k22*l0 - 100*l1 + 52*l2 - 11*l3 + l4\n", "4 : k31 : -k12*l1 + 2*k31*l0 + l1\n", "5 : k32 : k11*l1 + 2*k32*l0 - 5*l1 + l2\n", "6 : l0 : k11^2 + k12^2 + k21^2 + k22^2 + k31^2 + k32^2 - q\n", "7 : l1 : 20*k11*k22 + k11*k32 + 500*k11 - 20*k12*k21 - k12*k31 + 625*k12 + 20*k21 - 100*k22 + k31 - 5*k32 - 3125\n", "8 : l2 : -8*k11*k22 - 308*k11 + 8*k12*k21 - 369*k12 - 8*k21 + 52*k22 + k32 + 2101\n", "9 : l3 : k11*k22 + 85*k11 - k12*k21 + 97*k12 + k21 - 11*k22 - 660\n", "10 : l4 : -11*k11 - 12*k12 + k22 + 89\n", "11 : l5 : k11 + k12 - 16\n", "12 : q : -l0 + 1\n" ] }, { "data": { "text/html": [ "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(2 k_{11} l_{0} + 20 k_{22} l_{1} - 8 k_{22} l_{2} + k_{22} l_{3} + k_{32} l_{1} + 500 l_{1} - 308 l_{2} + 85 l_{3} - 11 l_{4} + l_{5}, 2 k_{12} l_{0} - 20 k_{21} l_{1} + 8 k_{21} l_{2} - k_{21} l_{3} - k_{31} l_{1} + 625 l_{1} - 369 l_{2} + 97 l_{3} - 12 l_{4} + l_{5}, -20 k_{12} l_{1} + 8 k_{12} l_{2} - k_{12} l_{3} + 2 k_{21} l_{0} + 20 l_{1} - 8 l_{2} + l_{3}, 20 k_{11} l_{1} - 8 k_{11} l_{2} + k_{11} l_{3} + 2 k_{22} l_{0} - 100 l_{1} + 52 l_{2} - 11 l_{3} + l_{4}, -k_{12} l_{1} + 2 k_{31} l_{0} + l_{1}, k_{11} l_{1} + 2 k_{32} l_{0} - 5 l_{1} + l_{2}, k_{11}^{2} + k_{12}^{2} + k_{21}^{2} + k_{22}^{2} + k_{31}^{2} + k_{32}^{2} - q, 20 k_{11} k_{22} + k_{11} k_{32} + 500 k_{11} - 20 k_{12} k_{21} - k_{12} k_{31} + 625 k_{12} + 20 k_{21} - 100 k_{22} + k_{31} - 5 k_{32} - 3125, -8 k_{11} k_{22} - 308 k_{11} + 8 k_{12} k_{21} - 369 k_{12} - 8 k_{21} + 52 k_{22} + k_{32} + 2101, k_{11} k_{22} + 85 k_{11} - k_{12} k_{21} + 97 k_{12} + k_{21} - 11 k_{22} - 660, -11 k_{11} - 12 k_{12} + k_{22} + 89, k_{11} + k_{12} - 16, -l_{0} + 1\\right)\\Bold{Q}[k_{11}, k_{12}, k_{21}, k_{22}, k_{31}, k_{32}, s, l_{0}, l_{1}, l_{2}, l_{3}, l_{4}, l_{5}, q]</script></html>" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(2 k_{11} l_{0} + 20 k_{22} l_{1} - 8 k_{22} l_{2} + k_{22} l_{3} + k_{32} l_{1} + 500 l_{1} - 308 l_{2} + 85 l_{3} - 11 l_{4} + l_{5}, 2 k_{12} l_{0} - 20 k_{21} l_{1} + 8 k_{21} l_{2} - k_{21} l_{3} - k_{31} l_{1} + 625 l_{1} - 369 l_{2} + 97 l_{3} - 12 l_{4} + l_{5}, -20 k_{12} l_{1} + 8 k_{12} l_{2} - k_{12} l_{3} + 2 k_{21} l_{0} + 20 l_{1} - 8 l_{2} + l_{3}, 20 k_{11} l_{1} - 8 k_{11} l_{2} + k_{11} l_{3} + 2 k_{22} l_{0} - 100 l_{1} + 52 l_{2} - 11 l_{3} + l_{4}, -k_{12} l_{1} + 2 k_{31} l_{0} + l_{1}, k_{11} l_{1} + 2 k_{32} l_{0} - 5 l_{1} + l_{2}, k_{11}^{2} + k_{12}^{2} + k_{21}^{2} + k_{22}^{2} + k_{31}^{2} + k_{32}^{2} - q, 20 k_{11} k_{22} + k_{11} k_{32} + 500 k_{11} - 20 k_{12} k_{21} - k_{12} k_{31} + 625 k_{12} + 20 k_{21} - 100 k_{22} + k_{31} - 5 k_{32} - 3125, -8 k_{11} k_{22} - 308 k_{11} + 8 k_{12} k_{21} - 369 k_{12} - 8 k_{21} + 52 k_{22} + k_{32} + 2101, k_{11} k_{22} + 85 k_{11} - k_{12} k_{21} + 97 k_{12} + k_{21} - 11 k_{22} - 660, -11 k_{11} - 12 k_{12} + k_{22} + 89, k_{11} + k_{12} - 16, -l_{0} + 1\\right)\\Bold{Q}[k_{11}, k_{12}, k_{21}, k_{22}, k_{31}, k_{32}, s, l_{0}, l_{1}, l_{2}, l_{3}, l_{4}, l_{5}, q]$$" ], "text/plain": [ "Ideal (2*k11*l0 + 20*k22*l1 - 8*k22*l2 + k22*l3 + k32*l1 + 500*l1 - 308*l2 + 85*l3 - 11*l4 + l5, 2*k12*l0 - 20*k21*l1 + 8*k21*l2 - k21*l3 - k31*l1 + 625*l1 - 369*l2 + 97*l3 - 12*l4 + l5, -20*k12*l1 + 8*k12*l2 - k12*l3 + 2*k21*l0 + 20*l1 - 8*l2 + l3, 20*k11*l1 - 8*k11*l2 + k11*l3 + 2*k22*l0 - 100*l1 + 52*l2 - 11*l3 + l4, -k12*l1 + 2*k31*l0 + l1, k11*l1 + 2*k32*l0 - 5*l1 + l2, k11^2 + k12^2 + k21^2 + k22^2 + k31^2 + k32^2 - q, 20*k11*k22 + k11*k32 + 500*k11 - 20*k12*k21 - k12*k31 + 625*k12 + 20*k21 - 100*k22 + k31 - 5*k32 - 3125, -8*k11*k22 - 308*k11 + 8*k12*k21 - 369*k12 - 8*k21 + 52*k22 + k32 + 2101, k11*k22 + 85*k11 - k12*k21 + 97*k12 + k21 - 11*k22 - 660, -11*k11 - 12*k12 + k22 + 89, k11 + k12 - 16, -l0 + 1) of Multivariate Polynomial Ring in k11, k12, k21, k22, k31, k32, s, l0, l1, l2, l3, l4, l5, q over Rational Field" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vars = [k11,k12,k21,k22,k31,k32,l0,l1,l2,l3,l4,l5,q]\n", "PLIST = []\n", "for ii in range(len(vars)):\n", " print(ii,\" : \",vars[ii],\" : \",diff(L,vars[ii]))\n", " PLIST.append(diff(L,vars[ii]))\n", "I = Ideal(PLIST)\n", "I" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dimension of the ideal" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}1</script></html>" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}1$$" ], "text/plain": [ "1" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "I.dimension()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Change of the ring (without the variable s), dimension of the new ideal over the new ring" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}0</script></html>" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}0$$" ], "text/plain": [ "0" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "J = I.change_ring(PolynomialRing(QQ, 'k11,k12,k21,k22,k31,k32,l0,l1,l2,l3,l4,l5,q'))\n", "J.dimension()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Algebraic variety, computation of possible solutions w.r.t. q" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left[\\verb|{q:|\\phantom{\\verb!x!}\\verb|149947.5561771188?,|\\phantom{\\verb!x!}\\verb|l5:|\\phantom{\\verb!x!}\\verb|-21194.45750708729?,|\\phantom{\\verb!x!}\\verb|l4:|\\phantom{\\verb!x!}\\verb|-27092.99027708953?,|\\phantom{\\verb!x!}\\verb|l3:|\\phantom{\\verb!x!}\\verb|-5957.462984593230?,|\\phantom{\\verb!x!}\\verb|l2:|\\phantom{\\verb!x!}\\verb|-737.9872520913827?,|\\phantom{\\verb!x!}\\verb|l1:|\\phantom{\\verb!x!}\\verb|2.648427531308446?,|\\phantom{\\verb!x!}\\verb|l0:|\\phantom{\\verb!x!}\\verb|1,|\\phantom{\\verb!x!}\\verb|k32:|\\phantom{\\verb!x!}\\verb|373.1040444944647?,|\\phantom{\\verb!x!}\\verb|k31:|\\phantom{\\verb!x!}\\verb|17.35255610531564?,|\\phantom{\\verb!x!}\\verb|k22:|\\phantom{\\verb!x!}\\verb|101.10404449446474?,|\\phantom{\\verb!x!}\\verb|k21:|\\phantom{\\verb!x!}\\verb|-3.907738998902481?,|\\phantom{\\verb!x!}\\verb|k12:|\\phantom{\\verb!x!}\\verb|14.104044494464742?,|\\phantom{\\verb!x!}\\verb|k11:|\\phantom{\\verb!x!}\\verb|1.895955505535258?}|, \\verb|{q:|\\phantom{\\verb!x!}\\verb|154095.7160695417?,|\\phantom{\\verb!x!}\\verb|l5:|\\phantom{\\verb!x!}\\verb|-19190.75511277376?,|\\phantom{\\verb!x!}\\verb|l4:|\\phantom{\\verb!x!}\\verb|-31766.99313915121?,|\\phantom{\\verb!x!}\\verb|l3:|\\phantom{\\verb!x!}\\verb|-7105.995278228797?,|\\phantom{\\verb!x!}\\verb|l2:|\\phantom{\\verb!x!}\\verb|-880.9931460774156?,|\\phantom{\\verb!x!}\\verb|l1:|\\phantom{\\verb!x!}\\verb|2.853303091171581?,|\\phantom{\\verb!x!}\\verb|l0:|\\phantom{\\verb!x!}\\verb|1,|\\phantom{\\verb!x!}\\verb|k32:|\\phantom{\\verb!x!}\\verb|204.7678011058971?,|\\phantom{\\verb!x!}\\verb|k31:|\\phantom{\\verb!x!}\\verb|-221.4622564769529?,|\\phantom{\\verb!x!}\\verb|k22:|\\phantom{\\verb!x!}\\verb|-67.23219889410296?,|\\phantom{\\verb!x!}\\verb|k21:|\\phantom{\\verb!x!}\\verb|76.3779508219885?,|\\phantom{\\verb!x!}\\verb|k12:|\\phantom{\\verb!x!}\\verb|-154.2321988941030?,|\\phantom{\\verb!x!}\\verb|k11:|\\phantom{\\verb!x!}\\verb|170.2321988941030?}|, \\verb|{q:|\\phantom{\\verb!x!}\\verb|225149.0338066715?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|155419.5856845946?*I,|\\phantom{\\verb!x!}\\verb|l5:|\\phantom{\\verb!x!}\\verb|-31011.72845957045?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|23105.21464151249?*I,|\\phantom{\\verb!x!}\\verb|l4:|\\phantom{\\verb!x!}\\verb|-47805.83748537921?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|21831.42312177592?*I,|\\phantom{\\verb!x!}\\verb|l3:|\\phantom{\\verb!x!}\\verb|-10603.30148707911?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|4693.838637620011?*I,|\\phantom{\\verb!x!}\\verb|l2:|\\phantom{\\verb!x!}\\verb|-1342.004818623881?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|549.3420250633582?*I,|\\phantom{\\verb!x!}\\verb|l1:|\\phantom{\\verb!x!}\\verb|-6.788613886025828?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|15.11280913409759?*I,|\\phantom{\\verb!x!}\\verb|l0:|\\phantom{\\verb!x!}\\verb|1,|\\phantom{\\verb!x!}\\verb|k32:|\\phantom{\\verb!x!}\\verb|360.1474105331525?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|45.56369481778983?*I,|\\phantom{\\verb!x!}\\verb|k31:|\\phantom{\\verb!x!}\\verb|-344.7980682089170?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|153.5432720434014?*I,|\\phantom{\\verb!x!}\\verb|k22:|\\phantom{\\verb!x!}\\verb|88.1474105331525?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|45.56369481778983?*I,|\\phantom{\\verb!x!}\\verb|k21:|\\phantom{\\verb!x!}\\verb|-72.07186170530965?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|68.91537574625540?*I,|\\phantom{\\verb!x!}\\verb|k12:|\\phantom{\\verb!x!}\\verb|1.147410533152441?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|45.56369481778983?*I,|\\phantom{\\verb!x!}\\verb|k11:|\\phantom{\\verb!x!}\\verb|14.85258946684756?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|45.56369481778983?*I}|, \\verb|{q:|\\phantom{\\verb!x!}\\verb|225149.0338066715?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|155419.5856845946?*I,|\\phantom{\\verb!x!}\\verb|l5:|\\phantom{\\verb!x!}\\verb|-31011.72845957045?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|23105.21464151249?*I,|\\phantom{\\verb!x!}\\verb|l4:|\\phantom{\\verb!x!}\\verb|-47805.83748537921?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|21831.42312177592?*I,|\\phantom{\\verb!x!}\\verb|l3:|\\phantom{\\verb!x!}\\verb|-10603.30148707911?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|4693.838637620011?*I,|\\phantom{\\verb!x!}\\verb|l2:|\\phantom{\\verb!x!}\\verb|-1342.004818623881?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|549.3420250633582?*I,|\\phantom{\\verb!x!}\\verb|l1:|\\phantom{\\verb!x!}\\verb|-6.788613886025828?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|15.11280913409759?*I,|\\phantom{\\verb!x!}\\verb|l0:|\\phantom{\\verb!x!}\\verb|1,|\\phantom{\\verb!x!}\\verb|k32:|\\phantom{\\verb!x!}\\verb|360.1474105331525?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|45.56369481778983?*I,|\\phantom{\\verb!x!}\\verb|k31:|\\phantom{\\verb!x!}\\verb|-344.7980682089170?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|153.5432720434014?*I,|\\phantom{\\verb!x!}\\verb|k22:|\\phantom{\\verb!x!}\\verb|88.1474105331525?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|45.56369481778983?*I,|\\phantom{\\verb!x!}\\verb|k21:|\\phantom{\\verb!x!}\\verb|-72.07186170530965?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|68.91537574625540?*I,|\\phantom{\\verb!x!}\\verb|k12:|\\phantom{\\verb!x!}\\verb|1.147410533152441?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|45.56369481778983?*I,|\\phantom{\\verb!x!}\\verb|k11:|\\phantom{\\verb!x!}\\verb|14.85258946684756?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|45.56369481778983?*I}|\\right]</script></html>" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left[\\verb|{q:|\\phantom{\\verb!x!}\\verb|149947.5561771188?,|\\phantom{\\verb!x!}\\verb|l5:|\\phantom{\\verb!x!}\\verb|-21194.45750708729?,|\\phantom{\\verb!x!}\\verb|l4:|\\phantom{\\verb!x!}\\verb|-27092.99027708953?,|\\phantom{\\verb!x!}\\verb|l3:|\\phantom{\\verb!x!}\\verb|-5957.462984593230?,|\\phantom{\\verb!x!}\\verb|l2:|\\phantom{\\verb!x!}\\verb|-737.9872520913827?,|\\phantom{\\verb!x!}\\verb|l1:|\\phantom{\\verb!x!}\\verb|2.648427531308446?,|\\phantom{\\verb!x!}\\verb|l0:|\\phantom{\\verb!x!}\\verb|1,|\\phantom{\\verb!x!}\\verb|k32:|\\phantom{\\verb!x!}\\verb|373.1040444944647?,|\\phantom{\\verb!x!}\\verb|k31:|\\phantom{\\verb!x!}\\verb|17.35255610531564?,|\\phantom{\\verb!x!}\\verb|k22:|\\phantom{\\verb!x!}\\verb|101.10404449446474?,|\\phantom{\\verb!x!}\\verb|k21:|\\phantom{\\verb!x!}\\verb|-3.907738998902481?,|\\phantom{\\verb!x!}\\verb|k12:|\\phantom{\\verb!x!}\\verb|14.104044494464742?,|\\phantom{\\verb!x!}\\verb|k11:|\\phantom{\\verb!x!}\\verb|1.895955505535258?}|, \\verb|{q:|\\phantom{\\verb!x!}\\verb|154095.7160695417?,|\\phantom{\\verb!x!}\\verb|l5:|\\phantom{\\verb!x!}\\verb|-19190.75511277376?,|\\phantom{\\verb!x!}\\verb|l4:|\\phantom{\\verb!x!}\\verb|-31766.99313915121?,|\\phantom{\\verb!x!}\\verb|l3:|\\phantom{\\verb!x!}\\verb|-7105.995278228797?,|\\phantom{\\verb!x!}\\verb|l2:|\\phantom{\\verb!x!}\\verb|-880.9931460774156?,|\\phantom{\\verb!x!}\\verb|l1:|\\phantom{\\verb!x!}\\verb|2.853303091171581?,|\\phantom{\\verb!x!}\\verb|l0:|\\phantom{\\verb!x!}\\verb|1,|\\phantom{\\verb!x!}\\verb|k32:|\\phantom{\\verb!x!}\\verb|204.7678011058971?,|\\phantom{\\verb!x!}\\verb|k31:|\\phantom{\\verb!x!}\\verb|-221.4622564769529?,|\\phantom{\\verb!x!}\\verb|k22:|\\phantom{\\verb!x!}\\verb|-67.23219889410296?,|\\phantom{\\verb!x!}\\verb|k21:|\\phantom{\\verb!x!}\\verb|76.3779508219885?,|\\phantom{\\verb!x!}\\verb|k12:|\\phantom{\\verb!x!}\\verb|-154.2321988941030?,|\\phantom{\\verb!x!}\\verb|k11:|\\phantom{\\verb!x!}\\verb|170.2321988941030?}|, \\verb|{q:|\\phantom{\\verb!x!}\\verb|225149.0338066715?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|155419.5856845946?*I,|\\phantom{\\verb!x!}\\verb|l5:|\\phantom{\\verb!x!}\\verb|-31011.72845957045?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|23105.21464151249?*I,|\\phantom{\\verb!x!}\\verb|l4:|\\phantom{\\verb!x!}\\verb|-47805.83748537921?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|21831.42312177592?*I,|\\phantom{\\verb!x!}\\verb|l3:|\\phantom{\\verb!x!}\\verb|-10603.30148707911?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|4693.838637620011?*I,|\\phantom{\\verb!x!}\\verb|l2:|\\phantom{\\verb!x!}\\verb|-1342.004818623881?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|549.3420250633582?*I,|\\phantom{\\verb!x!}\\verb|l1:|\\phantom{\\verb!x!}\\verb|-6.788613886025828?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|15.11280913409759?*I,|\\phantom{\\verb!x!}\\verb|l0:|\\phantom{\\verb!x!}\\verb|1,|\\phantom{\\verb!x!}\\verb|k32:|\\phantom{\\verb!x!}\\verb|360.1474105331525?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|45.56369481778983?*I,|\\phantom{\\verb!x!}\\verb|k31:|\\phantom{\\verb!x!}\\verb|-344.7980682089170?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|153.5432720434014?*I,|\\phantom{\\verb!x!}\\verb|k22:|\\phantom{\\verb!x!}\\verb|88.1474105331525?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|45.56369481778983?*I,|\\phantom{\\verb!x!}\\verb|k21:|\\phantom{\\verb!x!}\\verb|-72.07186170530965?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|68.91537574625540?*I,|\\phantom{\\verb!x!}\\verb|k12:|\\phantom{\\verb!x!}\\verb|1.147410533152441?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|45.56369481778983?*I,|\\phantom{\\verb!x!}\\verb|k11:|\\phantom{\\verb!x!}\\verb|14.85258946684756?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|45.56369481778983?*I}|, \\verb|{q:|\\phantom{\\verb!x!}\\verb|225149.0338066715?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|155419.5856845946?*I,|\\phantom{\\verb!x!}\\verb|l5:|\\phantom{\\verb!x!}\\verb|-31011.72845957045?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|23105.21464151249?*I,|\\phantom{\\verb!x!}\\verb|l4:|\\phantom{\\verb!x!}\\verb|-47805.83748537921?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|21831.42312177592?*I,|\\phantom{\\verb!x!}\\verb|l3:|\\phantom{\\verb!x!}\\verb|-10603.30148707911?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|4693.838637620011?*I,|\\phantom{\\verb!x!}\\verb|l2:|\\phantom{\\verb!x!}\\verb|-1342.004818623881?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|549.3420250633582?*I,|\\phantom{\\verb!x!}\\verb|l1:|\\phantom{\\verb!x!}\\verb|-6.788613886025828?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|15.11280913409759?*I,|\\phantom{\\verb!x!}\\verb|l0:|\\phantom{\\verb!x!}\\verb|1,|\\phantom{\\verb!x!}\\verb|k32:|\\phantom{\\verb!x!}\\verb|360.1474105331525?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|45.56369481778983?*I,|\\phantom{\\verb!x!}\\verb|k31:|\\phantom{\\verb!x!}\\verb|-344.7980682089170?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|153.5432720434014?*I,|\\phantom{\\verb!x!}\\verb|k22:|\\phantom{\\verb!x!}\\verb|88.1474105331525?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|45.56369481778983?*I,|\\phantom{\\verb!x!}\\verb|k21:|\\phantom{\\verb!x!}\\verb|-72.07186170530965?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|68.91537574625540?*I,|\\phantom{\\verb!x!}\\verb|k12:|\\phantom{\\verb!x!}\\verb|1.147410533152441?|\\phantom{\\verb!x!}\\verb|+|\\phantom{\\verb!x!}\\verb|45.56369481778983?*I,|\\phantom{\\verb!x!}\\verb|k11:|\\phantom{\\verb!x!}\\verb|14.85258946684756?|\\phantom{\\verb!x!}\\verb|-|\\phantom{\\verb!x!}\\verb|45.56369481778983?*I}|\\right]$$" ], "text/plain": [ "[{q: 149947.5561771188?, l5: -21194.45750708729?, l4: -27092.99027708953?, l3: -5957.462984593230?, l2: -737.9872520913827?, l1: 2.648427531308446?, l0: 1, k32: 373.1040444944647?, k31: 17.35255610531564?, k22: 101.10404449446474?, k21: -3.907738998902481?, k12: 14.104044494464742?, k11: 1.895955505535258?},\n", " {q: 154095.7160695417?, l5: -19190.75511277376?, l4: -31766.99313915121?, l3: -7105.995278228797?, l2: -880.9931460774156?, l1: 2.853303091171581?, l0: 1, k32: 204.7678011058971?, k31: -221.4622564769529?, k22: -67.23219889410296?, k21: 76.3779508219885?, k12: -154.2321988941030?, k11: 170.2321988941030?},\n", " {q: 225149.0338066715? - 155419.5856845946?*I, l5: -31011.72845957045? + 23105.21464151249?*I, l4: -47805.83748537921? + 21831.42312177592?*I, l3: -10603.30148707911? + 4693.838637620011?*I, l2: -1342.004818623881? + 549.3420250633582?*I, l1: -6.788613886025828? - 15.11280913409759?*I, l0: 1, k32: 360.1474105331525? - 45.56369481778983?*I, k31: -344.7980682089170? + 153.5432720434014?*I, k22: 88.1474105331525? - 45.56369481778983?*I, k21: -72.07186170530965? + 68.91537574625540?*I, k12: 1.147410533152441? - 45.56369481778983?*I, k11: 14.85258946684756? + 45.56369481778983?*I},\n", " {q: 225149.0338066715? + 155419.5856845946?*I, l5: -31011.72845957045? - 23105.21464151249?*I, l4: -47805.83748537921? - 21831.42312177592?*I, l3: -10603.30148707911? - 4693.838637620011?*I, l2: -1342.004818623881? - 549.3420250633582?*I, l1: -6.788613886025828? + 15.11280913409759?*I, l0: 1, k32: 360.1474105331525? + 45.56369481778983?*I, k31: -344.7980682089170? - 153.5432720434014?*I, k22: 88.1474105331525? + 45.56369481778983?*I, k21: -72.07186170530965? - 68.91537574625540?*I, k12: 1.147410533152441? + 45.56369481778983?*I, k11: 14.85258946684756? - 45.56369481778983?*I}]" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lsg = J.variety(QQbar)\n", "lsg" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Selection of the minimum solution q" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\verb|{q:|\\phantom{\\verb!x!}\\verb|149947.5561771188?,|\\phantom{\\verb!x!}\\verb|l5:|\\phantom{\\verb!x!}\\verb|-21194.45750708729?,|\\phantom{\\verb!x!}\\verb|l4:|\\phantom{\\verb!x!}\\verb|-27092.99027708953?,|\\phantom{\\verb!x!}\\verb|l3:|\\phantom{\\verb!x!}\\verb|-5957.462984593230?,|\\phantom{\\verb!x!}\\verb|l2:|\\phantom{\\verb!x!}\\verb|-737.9872520913827?,|\\phantom{\\verb!x!}\\verb|l1:|\\phantom{\\verb!x!}\\verb|2.648427531308446?,|\\phantom{\\verb!x!}\\verb|l0:|\\phantom{\\verb!x!}\\verb|1,|\\phantom{\\verb!x!}\\verb|k32:|\\phantom{\\verb!x!}\\verb|373.1040444944647?,|\\phantom{\\verb!x!}\\verb|k31:|\\phantom{\\verb!x!}\\verb|17.35255610531564?,|\\phantom{\\verb!x!}\\verb|k22:|\\phantom{\\verb!x!}\\verb|101.10404449446474?,|\\phantom{\\verb!x!}\\verb|k21:|\\phantom{\\verb!x!}\\verb|-3.907738998902481?,|\\phantom{\\verb!x!}\\verb|k12:|\\phantom{\\verb!x!}\\verb|14.104044494464742?,|\\phantom{\\verb!x!}\\verb|k11:|\\phantom{\\verb!x!}\\verb|1.895955505535258?}|</script></html>" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\verb|{q:|\\phantom{\\verb!x!}\\verb|149947.5561771188?,|\\phantom{\\verb!x!}\\verb|l5:|\\phantom{\\verb!x!}\\verb|-21194.45750708729?,|\\phantom{\\verb!x!}\\verb|l4:|\\phantom{\\verb!x!}\\verb|-27092.99027708953?,|\\phantom{\\verb!x!}\\verb|l3:|\\phantom{\\verb!x!}\\verb|-5957.462984593230?,|\\phantom{\\verb!x!}\\verb|l2:|\\phantom{\\verb!x!}\\verb|-737.9872520913827?,|\\phantom{\\verb!x!}\\verb|l1:|\\phantom{\\verb!x!}\\verb|2.648427531308446?,|\\phantom{\\verb!x!}\\verb|l0:|\\phantom{\\verb!x!}\\verb|1,|\\phantom{\\verb!x!}\\verb|k32:|\\phantom{\\verb!x!}\\verb|373.1040444944647?,|\\phantom{\\verb!x!}\\verb|k31:|\\phantom{\\verb!x!}\\verb|17.35255610531564?,|\\phantom{\\verb!x!}\\verb|k22:|\\phantom{\\verb!x!}\\verb|101.10404449446474?,|\\phantom{\\verb!x!}\\verb|k21:|\\phantom{\\verb!x!}\\verb|-3.907738998902481?,|\\phantom{\\verb!x!}\\verb|k12:|\\phantom{\\verb!x!}\\verb|14.104044494464742?,|\\phantom{\\verb!x!}\\verb|k11:|\\phantom{\\verb!x!}\\verb|1.895955505535258?}|$$" ], "text/plain": [ "{q: 149947.5561771188?, l5: -21194.45750708729?, l4: -27092.99027708953?, l3: -5957.462984593230?, l2: -737.9872520913827?, l1: 2.648427531308446?, l0: 1, k32: 373.1040444944647?, k31: 17.35255610531564?, k22: 101.10404449446474?, k21: -3.907738998902481?, k12: 14.104044494464742?, k11: 1.895955505535258?}" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lx = lsg[0]\n", "lx" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Numerical feedback gain matrix" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rr}\n", "1.89595550553526 & 14.1040444944647 \\\\\n", "-3.90773899890248 & 101.104044494465 \\\\\n", "17.3525561053156 & 373.104044494465\n", "\\end{array}\\right)</script></html>" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rr}\n", "1.89595550553526 & 14.1040444944647 \\\\\n", "-3.90773899890248 & 101.104044494465 \\\\\n", "17.3525561053156 & 373.104044494465\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ 1.89595550553526 14.1040444944647]\n", "[-3.90773899890248 101.104044494465]\n", "[ 17.3525561053156 373.104044494465]" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "K0 = K.subs(k11=RR(lx['k11']),k12=RR(lx['k12']),\n", " k21=RR(lx['k21']),k22=RR(lx['k22']),\n", " k31=RR(lx['k31']),k32=RR(lx['k32']))\n", "K0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Frobenius norm of the computed feedback matrix" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}387.2306240176759</script></html>" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}387.2306240176759$$" ], "text/plain": [ "387.2306240176759" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "K0.norm('frob')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Verification of the closed-loop eigenvalues (over the rational field)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left[-4.999999999999944?, -4.000000000000080?, -2.999999999999979?, -1.999999999999999? - 1.999999999999999? \\sqrt{-1}, -1.999999999999999? + 1.999999999999999? \\sqrt{-1}\\right]</script></html>" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left[-4.999999999999944?, -4.000000000000080?, -2.999999999999979?, -1.999999999999999? - 1.999999999999999? \\sqrt{-1}, -1.999999999999999? + 1.999999999999999? \\sqrt{-1}\\right]$$" ], "text/plain": [ "[-4.999999999999944?, -4.000000000000080?, -2.999999999999979?, -1.999999999999999? - 1.999999999999999?*I, -1.999999999999999? + 1.999999999999999?*I]" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A0 = matrix(QQ,A-B*K0*C)\n", "A0.eigenvalues()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Verification of the closed-loop eigenvalues (as floating point numbers)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left[-5.0000000000000435, -2.0000000000000067 + 2.0000000000000058i, -2.0000000000000067 - 2.0000000000000058i, -3.99999999999994, -2.9999999999999916\\right]</script></html>" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left[-5.0000000000000435, -2.0000000000000067 + 2.0000000000000058i, -2.0000000000000067 - 2.0000000000000058i, -3.99999999999994, -2.9999999999999916\\right]$$" ], "text/plain": [ "[-5.0000000000000435,\n", " -2.0000000000000067 + 2.0000000000000058*I,\n", " -2.0000000000000067 - 2.0000000000000058*I,\n", " -3.99999999999994,\n", " -2.9999999999999916]" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A0 = matrix(RDF,A-B*K0*C)\n", "A0.eigenvalues()" ] } ], "metadata": { "kernelspec": { "display_name": "SageMath 9.3", "language": "sage", "name": "sagemath" }, "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.9.6" } }, "nbformat": 4, "nbformat_minor": 4 }