All Projects → andreasvarga → MatrixEquations.jl

andreasvarga / MatrixEquations.jl

Licence: MIT License
Solution of Lyapunov, Sylvester and Riccati matrix equations using Julia

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to MatrixEquations.jl

Model-Predictive-Control
Udacity Self-Driving Car Engineer Nanodegree. Project: Model Predictive Control
Stars: ✭ 50 (+61.29%)
Mutual labels:  control-systems
control
Control in C++
Stars: ✭ 17 (-45.16%)
Mutual labels:  control-systems
ParallelCollectionMonitoring
使用数十个.NET客户端控制硬件设备进行工作,采集数据并进行处理,管理人员通过 Android 应用实时控制各设备的工作。本作品获得第十二届中国研究生电子设计竞赛华南赛区一等奖。
Stars: ✭ 21 (-32.26%)
Mutual labels:  control-systems
CRAWLAB-Code-Snippets
Small pieces of code for use in CRAWLAB research
Stars: ✭ 12 (-61.29%)
Mutual labels:  control-systems
FARNN
Code that trains cancer soft-robot networks
Stars: ✭ 15 (-51.61%)
Mutual labels:  control-systems
signalo
A DSP toolbox with focus on embedded environments written in Rust.
Stars: ✭ 71 (+129.03%)
Mutual labels:  control-systems
cocp
Source code for the examples accompanying the paper "Learning convex optimization control policies."
Stars: ✭ 61 (+96.77%)
Mutual labels:  control-systems
EL6483 EmbeddedSystems
All course materials, build systems, etc. for the graduate Real-Time Embedded Systems Course, Spring 2017
Stars: ✭ 14 (-54.84%)
Mutual labels:  control-systems
smartsilo
Hardware-integrated system composed by a desktop app and a Node.js server able to control an Arduino and manipulate the temperature of grains within storage silos
Stars: ✭ 33 (+6.45%)
Mutual labels:  control-systems
LibDS
Library for controling FRC robots
Stars: ✭ 29 (-6.45%)
Mutual labels:  control-systems
PyConSys
Python Control System : Create control loops and let the AI set the PID parameters
Stars: ✭ 21 (-32.26%)
Mutual labels:  control-systems
AutomationShield
Arduino library and MATLAB/Simulink API for the AutomationShield Arduino expansion boards for control engineering education.
Stars: ✭ 22 (-29.03%)
Mutual labels:  control-systems
LTVModels.jl
Tools to estimate Linear Time-Varying models in Julia
Stars: ✭ 14 (-54.84%)
Mutual labels:  control-systems
mpc
A software pipeline using the Model Predictive Control method to drive a car around a virtual track.
Stars: ✭ 119 (+283.87%)
Mutual labels:  control-systems
bht-ams-playerstage
Player/Stage SLAM
Stars: ✭ 35 (+12.9%)
Mutual labels:  control-systems
NeuralNetworkAnalysis.jl
Reachability analysis for closed-loop control systems
Stars: ✭ 37 (+19.35%)
Mutual labels:  control-systems
Google-Summer-of-Code-with-SymPy
This repository showcases my proposal, final report, and the work done during Google Summer of Code 2020 with the SymPy project.
Stars: ✭ 12 (-61.29%)
Mutual labels:  control-systems
nn robustness analysis
Python tools for analyzing the robustness properties of neural networks (NNs) from MIT ACL
Stars: ✭ 36 (+16.13%)
Mutual labels:  control-systems
Director
Director is a facility scale broadcast orchestration and control suite. Not actively maintained
Stars: ✭ 35 (+12.9%)
Mutual labels:  control-systems
SymbolicControlSystems.jl
An interface between ControlSystems.jl and SymPy.jl
Stars: ✭ 20 (-35.48%)
Mutual labels:  control-systems

MatrixEquations.jl

DOI DocBuild codecov.io Latest The MIT License

Solution of Lyapunov, Sylvester and Riccati matrix equations using Julia

Compatibility

Julia 1.3 and higher.

How to Install

pkg> add MatrixEquations
pkg> test MatrixEquations

About

This collection of Julia functions is an attemp to implement high performance numerical software to solve several classes of Lyapunov, Sylvester and Riccati matrix equations at a performance level comparable with efficient structure exploiting Fortran implementations, as those available in the Systems and Control Library SLICOT. This goal has been fully achieved for Lyapunov and Sylvester equation solvers, for which the codes for both real and complex data perform at practically same performance level as similar functions available in the MATLAB Control System Toolbox (which rely on SLICOT).

The available functions in the MatrixEquation.jl package cover both standard and generalized continuous and discrete Lyapunov, Sylvester and Riccati equations for both real and complex data. The functions for the solution of Lyapunov and Sylvester equations rely on efficient structure exploiting solvers for which the input data are in Schur or generalized Schur forms. A comprehensive set of Lyapunov and Sylvester operators has been implemented, which allow the estimation of condition numbers of these operators. The implementation of Riccati equation solvers employ orthogonal Schur vectors based methods and their extensions to linear matrix pencil based reduction approaches. The calls of all functions with adjoint (in complex case) or transposed (in real case) arguments are fully supported by appropriate computational algorithms, thus the matrix copying operations are mostly avoided.

The current version of the package includes the following functions:

Solution of Lyapunov equations

  • lyapc Solution of the continuous Lyapunov equations AX+XA'+C = 0 and AXE'+EXA'+C = 0.
  • lyapd Solution of discrete Lyapunov equations AXA'-X +C = 0 and AXA'-EXE'+C = 0.
  • plyapc Solution of the positive continuous Lyapunov equations AX+XA'+BB' = 0 and AXE'+EXA'+BB' = 0.
  • plyapd Solution of the positive discrete Lyapunov equations AXA'-X +C = 0 and AXA'-EXE'+C = 0.

Solution of algebraic Riccati equations

  • arec Solution of the continuous Riccati equations A'X+XA-XRX+Q = 0 and A'X+XA-(XB+S)R^(-1)(B'X+S')+Q = 0.
  • garec Solution of the generalized continuous Riccati equation A'XE+E'XA-(A'XB+S)R^(-1)(B'XA+S')+Q = 0.
  • ared Solution of the discrete Riccati equation A'XA - X - (A'XB+S)(R+B'XB)^(-1)(B'XA+S') + Q = 0.
  • gared Solution of the generalized discrete Riccati equation A'XA - E'XE - (A'XB+S)(R+B'XB)^(-1)(B'XA+S') + Q = 0.

Solution of Sylvester equations and systems

  • sylvc Solution of the (continuous) Sylvester equation AX+XB = C.
  • sylvd Solution of the (discrete) Sylvester equation AXB+X = C.
  • gsylv Solution of the generalized Sylvester equation AXB+CXD = E.
  • sylvsys Solution of the Sylvester system of matrix equations AX+YB = C, DX+YE = F.
  • dsylvsys Solution of the dual Sylvester system of matrix equations AX+DY = C, XB+YE = F.

Norm, condition and separation estimation

  • opnorm1 Computation of the 1-norm of a linear operator.
  • opnorm1est Estimation of 1-norm of a linear operator.
  • oprcondest Estimation of the reciprocal 1-norm condition number of a linear operator.
  • opsepest Estimation of the 1-norm separation a linear operator.

The general solvers of Lyapunov and Sylvester equations rely on a set of specialized solvers for real or complex matrices in appropriate Schur forms. For testing purposes, a set of solvers for Sylvester equations has been implemented, which employ the Kronecker-product expansion of the equations. These solvers are not recommended for large order matrices. The norms, reciprocal condition numbers and separations can be estimated for a comprehensive set of predefined Lyapunov and Sylvester operators. A complete list of implemented functions is available here.

Future plans

The collection of tools can be extended by adding new functionality, such as expert solvers, which additionally compute error bounds and condition estimates, or solvers for new classes of Riccati equations, as those arising in game-theoretic optimization problems. Further performance improvements are still possible (e.g., in some positive Lyapunov solvers by employing specially taylored solvers for the underlying particular Sylvester equations) or by employing blocking based variants of solvers for Lyapunov and Sylvester equations.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].