Macaulay2 » Documentation
Packages » Oscillators :: oscJacobian
next | previous | forward | backward | up | index | toc

oscJacobian -- create the Jacobian for the oscillator system associated to a graph

Description

The matrix is a symmetric $n \times n$ matrix (with determinant zero).

i1 : G = graph({0,1,2,3}, {{0,1},{1,2},{2,3},{0,3}})

o1 = Graph{0 => {1, 3}}
           1 => {0, 2}
           2 => {1, 3}
           3 => {0, 2}

o1 : Graph
i2 : oscRing(G, CoefficientRing => CC)

o2 = CC  [x ..y ]
       53  0   3

o2 : PolynomialRing
i3 : S = oo

o3 = S

o3 : PolynomialRing
i4 : I = oscSystem(G,S)

                                                                            
o4 = ideal (x y  + x y  - x y  - x y , - x y  + x y  + x y  - x y , - x y  +
             1 0    3 0    0 1    0 3     1 0    0 1    2 1    1 2     2 1  
     ------------------------------------------------------------------------
                                                       2    2       2    2  
     x y  + x y  - x y , - x y  - x y  + x y  + x y , x  + y  - 1, x  + y  -
      1 2    3 2    2 3     3 0    3 2    0 3    2 3   0    0       1    1  
     ------------------------------------------------------------------------
         2    2       2    2
     1, x  + y  - 1, x  + y  - 1)
         2    2       3    3

o4 : Ideal of S
i5 : Jac = oscJacobian(G,S)

o5 = | -x_0x_1-x_0x_3-y_0y_1-y_0y_3 x_0x_1+y_0y_1               
     | x_0x_1+y_0y_1                -x_0x_1-x_1x_2-y_0y_1-y_1y_2
     | 0                            x_1x_2+y_1y_2               
     | x_0x_3+y_0y_3                0                           
     ------------------------------------------------------------------------
     0                            x_0x_3+y_0y_3                |
     x_1x_2+y_1y_2                0                            |
     -x_1x_2-x_2x_3-y_1y_2-y_2y_3 x_2x_3+y_2y_3                |
     x_2x_3+y_2y_3                -x_0x_3-x_2x_3-y_0y_3-y_2y_3 |

             4      4
o5 : Matrix S  <-- S
i6 : assert(det Jac == 0)
i7 : assert(Jac - transpose Jac == 0)

We can find the eigenvalues of the Jacobian at approximate points, and see if they are stable (all eigenvalues negative, except for the one required 0), unstable (a positive eigenvalue), or semistable (no positive eigenvalues, up to a certain tolerance).

i8 : realsols = findRealSolutions I
warning: some solutions are not regular: {4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29, 30, 31, 32, 39, 40, 41, 42, 43, 44, 45, 46, 53, 54, 55, 56, 57, 58, 59, 60}

o8 = {{1, -1, -1, -1, 0, 0, 0, 0}, {-1, 1, 1, 1, 0, 0, 0, 0}, {1, 1, -1, 1,
     ------------------------------------------------------------------------
     0, 0, 0, 0}, {1, -1, 1, 1, 0, 0, 0, 0}, {1, 1, 1, -1, 0, 0, 0, 0}, {1,
     ------------------------------------------------------------------------
     1, -1, 1, 0, 0, 0, 0}, {-1, -1, -1, 1, 0, 0, 0, 0}, {-1, 1, 1, 1, 0, 0,
     ------------------------------------------------------------------------
     0, 0}, {1, -1, 1, 1, 0, 0, 0, 0}, {1, 1, 1, -1, 0, 0, 0, 0}, {-1, -1, 1,
     ------------------------------------------------------------------------
     -1, 0, 0, 0, 0}, {-1, 1, -1, -1, 0, 0, 0, 0}, {1, -1, -1, -1, 0, 0, 0,
     ------------------------------------------------------------------------
     0}, {1, -1, -1, -1, 0, 0, 0, 0}, {-1, -1, -1, 1, 0, 0, 0, 0}, {-1, -1,
     ------------------------------------------------------------------------
     1, -1, 0, 0, 0, 0}, {-1, 1, -1, -1, 0, 0, 0, 0}, {-1, 1, 1, 1, 0, 0, 0,
     ------------------------------------------------------------------------
     0}, {-1, -1, -1, 1, 0, 0, 0, 0}, {1, 1, -1, 1, 0, 0, 0, 0}, {1, 1, 1,
     ------------------------------------------------------------------------
     -1, 0, 0, 0, 0}, {-1, 1, -1, 1, 0, 0, 0, 0}, {-1, 1, 1, -1, 0, 0, 0, 0},
     ------------------------------------------------------------------------
     {1, -1, -1, 1, 0, 0, 0, 0}, {-1, 1, -1, -1, 0, 0, 0, 0}, {1, -1, -1, -1,
     ------------------------------------------------------------------------
     0, 0, 0, 0}, {-1, -1, 1, -1, 0, 0, 0, 0}, {-1, 1, 1, -1, 0, 0, 0, 0},
     ------------------------------------------------------------------------
     {1, 1, 1, 1, 0, 0, 0, 0}, {-1, -1, 1, 1, 0, 0, 0, 0}, {1, -1, -1, 1, 0,
     ------------------------------------------------------------------------
     0, 0, 0}, {-1, -1, -1, -1, 0, 0, 0, 0}, {1, 1, -1, -1, 0, 0, 0, 0}, {1,
     ------------------------------------------------------------------------
     1, -1, 1, 0, 0, 0, 0}, {-1, 1, -1, -1, 0, 0, 0, 0}, {-1, 1, 1, 1, 0, 0,
     ------------------------------------------------------------------------
     0, 0}, {1, -1, 1, 1, 0, 0, 0, 0}, {1, 1, -1, -1, 0, 0, 0, 0}, {1, -1, 1,
     ------------------------------------------------------------------------
     -1, 0, 0, 0, 0}, {-1, -1, 1, -1, 0, 0, 0, 0}, {-1, -1, -1, 1, 0, 0, 0,
     ------------------------------------------------------------------------
     0}, {1, 1, 1, -1, 0, 0, 0, 0}}

o8 : List
i9 : jacs = for pt in realsols list sub(Jac, matrix{pt})

o9 = {| 2  -1 0  -1 |, | 2  -1 0  -1 |, | -2 1  0  1  |, | 0  -1 0  1  |, |
      | -1 0  1  0  |  | -1 0  1  0  |  | 1  0  -1 0  |  | -1 2  -1 0  |  |
      | 0  1  -2 1  |  | 0  1  -2 1  |  | 0  -1 2  -1 |  | 0  -1 0  1  |  |
      | -1 0  1  0  |  | -1 0  1  0  |  | 1  0  -1 0  |  | 1  0  1  -2 |  |
     ------------------------------------------------------------------------
     0  1  0  -1 |, | -2 1  0  1  |, | 0  1  0  -1 |, | 2  -1 0  -1 |, | 0 
     1  -2 1  0  |  | 1  0  -1 0  |  | 1  -2 1  0  |  | -1 0  1  0  |  | -1
     0  1  0  -1 |  | 0  -1 2  -1 |  | 0  1  0  -1 |  | 0  1  -2 1  |  | 0 
     -1 0  -1 2  |  | 1  0  -1 0  |  | -1 0  -1 2  |  | -1 0  1  0  |  | 1 
     ------------------------------------------------------------------------
     -1 0  1  |, | 0  1  0  -1 |, | -2 1  0  1  |, | 0  -1 0  1  |, | 2  -1
     2  -1 0  |  | 1  -2 1  0  |  | 1  0  -1 0  |  | -1 2  -1 0  |  | -1 0 
     -1 0  1  |  | 0  1  0  -1 |  | 0  -1 2  -1 |  | 0  -1 0  1  |  | 0  1 
     0  1  -2 |  | -1 0  -1 2  |  | 1  0  -1 0  |  | 1  0  1  -2 |  | -1 0 
     ------------------------------------------------------------------------
     0  -1 |, | 2  -1 0  -1 |, | 0  1  0  -1 |, | -2 1  0  1  |, | 0  -1 0 
     1  0  |  | -1 0  1  0  |  | 1  -2 1  0  |  | 1  0  -1 0  |  | -1 2  -1
     -2 1  |  | 0  1  -2 1  |  | 0  1  0  -1 |  | 0  -1 2  -1 |  | 0  -1 0 
     1  0  |  | -1 0  1  0  |  | -1 0  -1 2  |  | 1  0  -1 0  |  | 1  0  1 
     ------------------------------------------------------------------------
     1  |, | 2  -1 0  -1 |, | 0  1  0  -1 |, | -2 1  0  1  |, | 0  1  0  -1
     0  |  | -1 0  1  0  |  | 1  -2 1  0  |  | 1  0  -1 0  |  | 1  -2 1  0 
     1  |  | 0  1  -2 1  |  | 0  1  0  -1 |  | 0  -1 2  -1 |  | 0  1  0  -1
     -2 |  | -1 0  1  0  |  | -1 0  -1 2  |  | 1  0  -1 0  |  | -1 0  -1 2 
     ------------------------------------------------------------------------
     |, | 2  -1 0  -1 |, | 0  -1 0  1  |, | 0  -1 0  1  |, | 0  -1 0  1  |, |
     |  | -1 2  -1 0  |  | -1 0  1  0  |  | -1 0  1  0  |  | -1 2  -1 0  |  |
     |  | 0  -1 2  -1 |  | 0  1  0  -1 |  | 0  1  0  -1 |  | 0  -1 0  1  |  |
     |  | -1 0  -1 2  |  | 1  0  -1 0  |  | 1  0  -1 0  |  | 1  0  1  -2 |  |
     ------------------------------------------------------------------------
     2  -1 0  -1 |, | -2 1  0  1  |, | 0  -1 0  1  |, | -2 1  0  1  |, | 0 
     -1 0  1  0  |  | 1  0  -1 0  |  | -1 0  1  0  |  | 1  -2 1  0  |  | 1 
     0  1  -2 1  |  | 0  -1 2  -1 |  | 0  1  0  -1 |  | 0  1  -2 1  |  | 0 
     -1 0  1  0  |  | 1  0  -1 0  |  | 1  0  -1 0  |  | 1  0  1  -2 |  | -1
     ------------------------------------------------------------------------
     1  0  -1 |, | 0  -1 0  1  |, | -2 1  0  1  |, | 0  1  0  -1 |, | -2 1 
     0  -1 0  |  | -1 0  1  0  |  | 1  -2 1  0  |  | 1  0  -1 0  |  | 1  0 
     -1 0  1  |  | 0  1  0  -1 |  | 0  1  -2 1  |  | 0  -1 0  1  |  | 0  -1
     0  1  0  |  | 1  0  -1 0  |  | 1  0  1  -2 |  | -1 0  1  0  |  | 1  0 
     ------------------------------------------------------------------------
     0  1  |, | 0  -1 0  1  |, | 2  -1 0  -1 |, | 0  -1 0  1  |, | 0  1  0 
     -1 0  |  | -1 2  -1 0  |  | -1 0  1  0  |  | -1 2  -1 0  |  | 1  0  -1
     2  -1 |  | 0  -1 0  1  |  | 0  1  -2 1  |  | 0  -1 0  1  |  | 0  -1 0 
     -1 0  |  | 1  0  1  -2 |  | -1 0  1  0  |  | 1  0  1  -2 |  | -1 0  1 
     ------------------------------------------------------------------------
     -1 |, | 2  -1 0  -1 |, | -2 1  0  1  |, | 0  1  0  -1 |, | 0  1  0  -1
     0  |  | -1 2  -1 0  |  | 1  0  -1 0  |  | 1  -2 1  0  |  | 1  -2 1  0 
     1  |  | 0  -1 2  -1 |  | 0  -1 2  -1 |  | 0  1  0  -1 |  | 0  1  0  -1
     0  |  | -1 0  -1 2  |  | 1  0  -1 0  |  | -1 0  -1 2  |  | -1 0  -1 2 
     ------------------------------------------------------------------------
     |}
     |
     |
     |

o9 : List
i10 : jacs/eigenvalues

o10 = {{2.82843     }, {2.82843    }, {-2.82843    }, {2.82843     },
       {-2.02439e-16}  {1.2484e-16 }  {-1.2484e-16 }  {-2.82843    } 
       {-2.82843    }  {-2.82843   }  {2.82843     }  {-1.44685e-16} 
       {-6.91373e-34}  {1.59293e-33}  {-1.59293e-33}  {9.06977e-18 } 
      -----------------------------------------------------------------------
      {-2.82843    }, {-2.82843    }, {2.82843    }, {2.82843     },
      {2.82843     }  {-6.57495e-17}  {-2.82843   }  {-9.71557e-17} 
      {-1.17387e-16}  {2.82843     }  {1.00102e-16}  {-2.82843    } 
      {4.34285e-17 }  {-4.14771e-33}  {5.50481e-18}  {7.32065e-33 } 
      -----------------------------------------------------------------------
      {2.82843     }, {2.82843     }, {-2.82843    }, {-2.82843    },
      {-2.82843    }  {-2.82843    }  {9.14415e-17 }  {2.82843     } 
      {-9.24027e-17}  {7.58339e-17 }  {2.82843     }  {-9.07823e-17} 
      {4.85289e-17 }  {-3.05993e-17}  {-8.15529e-34}  {1.21707e-16 } 
      -----------------------------------------------------------------------
      {2.82843     }, {2.82843    }, {-2.82843    }, {-2.82843    },
      {-2.94143e-17}  {1.2484e-16 }  {2.82843     }  {-1.2484e-16 } 
      {-2.82843    }  {-2.82843   }  {-1.17387e-16}  {2.82843     } 
      {1.22371e-32 }  {1.59293e-33}  {4.34285e-17 }  {-1.59293e-33} 
      -----------------------------------------------------------------------
      {2.82843     }, {2.82843    }, {-2.82843   }, {-2.82843    },
      {-2.82843    }  {1.13935e-16}  {2.82843    }  {5.45246e-18 } 
      {1.17387e-16 }  {-2.82843   }  {2.17323e-16}  {2.82843     } 
      {-4.34285e-17}  {1.34215e-32}  {1.4608e-17 }  {-1.00194e-34} 
      -----------------------------------------------------------------------
      {-2.82843    }, {-4.71028e-16}, {2                          },
      {2.82843     }  {4           }  {-2                         } 
      {8.85661e-17 }  {2           }  {-2.66445e-25+1.79147e-26*ii} 
      {-9.28259e-17}  {2           }  {2.66445e-25-1.79147e-26*ii } 
      -----------------------------------------------------------------------
      {2                          }, {2.82843     }, {2.82843     },
      {-2                         }  {-2.82843    }  {-5.45246e-18} 
      {5.05671e-26+4.09034e-25*ii }  {-8.85661e-17}  {-2.82843    } 
      {-5.05672e-26-4.09034e-25*ii}  {9.28259e-17 }  {1.00194e-34 } 
      -----------------------------------------------------------------------
      {-2.82843   }, {2                          }, {3.14018e-16},
      {2.94928e-16}  {-2                         }  {-4         } 
      {2.82843    }  {5.05671e-26+4.09034e-25*ii }  {-2         } 
      {4.81379e-34}  {-5.05672e-26-4.09034e-25*ii}  {-2         } 
      -----------------------------------------------------------------------
      {2                          }, {2                          },
      {-2                         }  {-2                         } 
      {5.05671e-26+4.09034e-25*ii }  {5.05671e-26+4.09034e-25*ii } 
      {-5.05672e-26-4.09034e-25*ii}  {-5.05672e-26-4.09034e-25*ii} 
      -----------------------------------------------------------------------
      {3.14018e-16}, {2                          }, {-2.82843    },
      {-4         }  {-2                         }  {-6.57495e-17} 
      {-2         }  {5.05671e-26+4.09034e-25*ii }  {2.82843     } 
      {-2         }  {-5.05672e-26-4.09034e-25*ii}  {-4.14771e-33} 
      -----------------------------------------------------------------------
      {-2.82843    }, {2.82843    }, {2.82843     }, {2              },
      {2.82843     }  {8.07983e-17}  {-2.82843    }  {-2             } 
      {-1.00102e-16}  {-2.82843   }  {-8.85661e-17}  {7.88837e-25*ii } 
      {-5.50481e-18}  {1.43002e-32}  {9.28259e-17 }  {-7.88837e-25*ii} 
      -----------------------------------------------------------------------
      {-4.71028e-16}, {-2.82843    }, {-2.82843    }, {2.82843    }}
      {4           }  {5.45246e-18 }  {2.82843     }  {-2.82843   }
      {2           }  {2.82843     }  {8.85661e-17 }  {1.00102e-16}
      {2           }  {-1.00194e-34}  {-9.28259e-17}  {5.50481e-18}

o10 : List
i11 : jacs/eigenvalues/identifyStability

o11 = {Unstable, Unstable, Unstable, Unstable, Unstable, Unstable, Unstable,
      -----------------------------------------------------------------------
      Unstable, Unstable, Unstable, Unstable, Unstable, Unstable, Unstable,
      -----------------------------------------------------------------------
      Unstable, Unstable, Unstable, Unstable, Unstable, Unstable, Unstable,
      -----------------------------------------------------------------------
      Unstable, Unstable, Unstable, Unstable, Unstable, Unstable, Unstable,
      -----------------------------------------------------------------------
      Stable, Unstable, Unstable, Stable, Unstable, Unstable, Unstable,
      -----------------------------------------------------------------------
      Unstable, Unstable, Unstable, Unstable, Unstable, Unstable, Unstable}

o11 : List

See also

Ways to use oscJacobian:

  • oscJacobian(Graph)
  • oscJacobian(Graph,Ring)
  • oscJacobian(Ideal)

For the programmer

The object oscJacobian is a method function with options.


The source of this document is in Oscillators/Documentation.m2:318:0.