OpenLLM-France/wikimedia huggingface dataset:
# LMIs in Control/Click here to continue/LMIs in system and stability Theory/Modified Exterior Conic Sector Lemma
## The Concept

The conic sector theorem is a powerful input-output stability analysis tool, providing a fine balance between generality and simplicity of system characterisations that is conducive to practical stability analysis and robust controller synthesis.

## The System

Consider a square, contiuous-time linear time-invariant (LTI) system, ${\mathcal {G}}:{\mathcal {L}}_{2e}\rightarrow {\mathcal {L}}_{2e}$, with minimal state-space relization (A, B, C, D), where ${\mathcal {E,A}}\in {\mathcal {R}}^{n\times n},{\mathcal {B}}\in {\mathcal {R}}^{n\times m},{\mathcal {C}}\in {\mathcal {R}}^{p\times n},$ and ${\mathcal {D}}\in {\mathcal {R}}^{p\times m}$.
    ${\begin{aligned}{\dot {x}}(t)&=Ax(t)+Bu(t),\\y(t)&=Cx(t)+Du(t)\\\end{aligned}}$

## The Data

The matrices The matrices $A,B,C$ and $D$

## LMI : Exterior Conic Sector Lemma

The system ${\mathcal {G}}$ is in the exterior cone of radius r centered at c (i.e. ${\mathcal {G}}\in$excone$_r$(c)), where $r\in {\mathcal {R}}_{>0}$ and $\in {\mathcal {R}}$, under either of the following equivalent necessary and sufficient conditions.
    1. There exists P $\in {\mathcal {S}}^{n}$, where P $\geq 0$, such that
       ${\begin{bmatrix}PA+A^{T}P-C^{T}C&PB-C^{T}(D-CI)\\(PB-C^{T}(D-CI))^{T}&r^{2}I-(D-cI)^{T}(D-cI)\end{bmatrix}}\leq 0.$
    2. There exists P $\in {\mathcal {S}}^{n}$, where P $\geq 0$, such that
       ${\begin{bmatrix}PA+A^{T}P-C^{T}C&PB-C^{T}(D-CI)&0\\(PB-C^{T}(D-CI))^{T}&-(D-cI)^{T}(D-cI)&rI\\0&(rI)^{T}&-I\end{bmatrix}}\leq 0.$
Proof, Applying the Schur complement lemma to the $r^{2}I$ terms in (1) gives (2).

## Conclusion:

If there exist a positive definite $P$ matrix satisfying above LMIs then the system ${\mathcal {G}}$ is in the exterior cone of radius r centered at c.

## Implementation

Code for implementation of this LMI using MATLAB. https://github.com/VJanand25/LMI

## Related LMIs

KYP Lemma
State Space Stability

## References

1. J. C. Willems, “Dissipative dynamical systems - part I: General theory,” Archive Rational Mechanics and Analysis, vol. 45, no. 5, pp. 321–351, 1972.
2. D. J. Hill and P. J. Moylan, “The stability of nonlinear dissipative systems,” IEEE Transactions on Automatic Control, vol. 21, no. 5, pp. 708–711, 1976.
3. LMI Properties and Applications in Systems, Stability, and Control Theory, by Ryan James Caverly1 and James Richard Forbes2
4. Bridgeman, Leila Jasmine, and James Richard Forbes. "The exterior conic sector lemma." International Journal of Control 88.11 (2015): 2250-2263.
# LMIs in Control/Click here to continue/LMIs in system and stability Theory/L2-Gain of Systems with Multiplicative noise
## The System

    ${\begin{aligned}x(k+1)&=Ax(k)+B_{w}w(k)+\sum _{i=1}^{L}(A_{i}x(k)+B_{w,i}w(k))p_{i}(k),\quad x(0)=0,\\z(k)&=C_{z}x(k)+D_{zw}w(k)+\sum _{i=1}^{L}(C_{z,i}x(k)+D_{zw,i}w(k))p_{i}(k),\end{aligned}}$
where $p(0),p(1),\dots$, are independent, identically distributed random variables with $Ep(k)=0,Ep(k)p^{\top }(k)=\Sigma =diag(\sigma _{1},\dots ,\sigma _{L})$ and $x(0)$ is independent of the process $p$.

## The Data

The matrices $A,B_{w},\{A_{i}.B_{w,i}\}_{i=1}^{L},C_{z},D_{zw},\{C_{z,i},D_{zw,i}\}_{i=1}^{L},\{\sigma _{i}\}_{i=1}^{L}$.

## The LMI:

       ${\begin{aligned}&\min _{\{P\succ 0,\gamma ^{2}\}}\gamma ^{2}\\&\quad s.t.{\begin{bmatrix}A&B_{w}\\C_{z}&D_{zw}\end{bmatrix}}^{\top }{\begin{bmatrix}P&0\\0&I\end{bmatrix}}{\begin{bmatrix}A&B_{w}\\C_{z}&D_{zw}\end{bmatrix}}-{\begin{bmatrix}P&0\\0&\gamma ^{2}I\end{bmatrix}}+\sum _{i=1}^{L}\sigma _{i}^{2}{\begin{bmatrix}A_{i}&B_{w,i}\\C_{z,i}&D_{zw,i}\end{bmatrix}}^{\top }{\begin{bmatrix}P&0\\0&I\end{bmatrix}}{\begin{bmatrix}A_{i}&B_{w,i}\\C_{z,i}&D_{zw,i}\end{bmatrix}}^{\top }\preceq 0\end{aligned}}$

## Implementation

https://github.com/mkhajenejad/Mohammad-Khajenejad/commit/a34713575cd8ae9831cb5b7eb759d0fd45a8c37f

## Conclusion

The optimal $\gamma$ returns an upper bound on the ${\mathcal {L}}_{2}$ gain of the system. .

## Remark

It is straightforward to apply scaling method [Boyd, sec.6.3.4] to obtain component-wise results.

## External Links

* LMI Methods in Optimal and Robust Control - A course on LMIs in Control by Matthew Peet.
* LMI Properties and Applications in Systems, Stability, and Control Theory - A List of LMIs by Ryan Caverly and James Forbes.
* LMIs in Systems and Control Theory - A downloadable book on LMIs by Stephen Boyd.
# LMIs in Control/Click here to continue/LMIs in system and stability Theory/L2 Gain of Lure's Systems
## The System

    ${\begin{aligned}{\dot {x}}(t)&=Ax(t)+B_{p}p(t)+B_{w}w(t),\\z(t)&=C_{z}x(t)\\p_{i}(t)&=\phi _{i}(q_{i}(t)),i=1,\dots ,n_{p}\\q&=C_{q}x,\\0&\leq \sigma \phi _{i}(\sigma )\leq \sigma ^{2}\ \forall \sigma \in \mathbb {R} \end{aligned}}$

## The Data

The matrices $A,B_{p},B_{w},C_{q},C_{z}$.

## The Optimization Problem:

The following semi-definite problem should be solved.
       ${\begin{aligned}&\min _{\{P\succ 0,\Lambda =diag(\lambda _{1},\dots ,\lambda _{n_{p}})\succeq 0,T=diag(\tau _{1},\dots ,\tau _{n_{p}})\succeq 0\}}\gamma ^{2}\;\\&\quad \quad \quad \quad \quad \quad \quad \quad s.t.\quad {\begin{bmatrix}A^{\top }P+PA+C_{z}^{\top }C_{z}&PB_{p}+A^{\top }C_{q}^{\top }\Lambda +C_{q}^{\top }T&PB_{w}\\B_{p}^{\top }P+\Lambda C_{q}A+TC_{q}&\Lambda C_{q}B_{p}+B_{p}^{\top }C_{q}^{\top }\Lambda -2T&\Lambda C_{q}B_{w}\\B_{w}^{\top }P&B_{w}^{\top }C_{q}^{\top }\Lambda &-\gamma ^{2}I\end{bmatrix}}\preceq 0\\\end{aligned}}$

## Implementation

https://github.com/mkhajenejad/Mohammad-Khajenejad/commit/12a7039f9e3d966e24b43fd58a3cce3725282ed2

## Conclusion

The value function returns the square of the smallest provable upper bound on the ${\mathcal {L}}_{2}$ gain of the Lure's system.

## Remark

The Lyapunov function which is used to proof is similar to the one for the systems with unknown parameters.

## External Links

* LMI Methods in Optimal and Robust Control - A course on LMIs in Control by Matthew Peet.
* LMI Properties and Applications in Systems, Stability, and Control Theory - A List of LMIs by Ryan Caverly and James Forbes.
* LMIs in Systems and Control Theory - A downloadable book on LMIs by Stephen Boyd.
# Java Programming/Libraries, extensions and frameworks

* Navigate Advanced topic: ( v • d • e )
* Networking
* Database programming
* Regular Expressions
* Libraries, extensions and frameworks
* 3D programming
* Java Native Interface
* Invoking C
* Byte Code

## Libraries, Extensions, and Frameworks

* Math and Geometry
* Regular Expressions
* Security
* Input and Output
** Logging
** Database Connectivity
** Zip and Other Archives
* XML
* Graphical User Interfaces
* Open Source
** Struts
** Spring framework
# Java Programming/Literals/Boolean Literals/false

false is a boolean literal representing the false value. See also true.
# Java Programming/Lambda expressions
## Introduction

Lambda expressions were introduced in Java 8 as a concise way to describe a piece of functionality as a first class member of the language. While the principle is similar to the use of anonymous inner classes to satisfy interfaces, lambda expressions make the code much more legible.
I.e., instead of
we can say simply:

## Syntax

A lambda expression consists of two parts separated by the -> characters, referred to as an "arrow":

### Parameters

The Parameters define the inputs to the expression. Generally, the Parameters are a comma-separated list of types and identifiers surrounded by parentheses:
However, the types are often inferable from the context and can be omitted:
And also, if there is exactly one input and its type is inferable, the parentheses can be omitted:

### Body

The body of the lambda expression describes what should be done with those inputs (if any). In general, the body is a block like any other:
The return statement can be omitted for expressions that simply operate on the inputs.
If the body consists only of a single statement, the braces and terminal semi-colon can be omitted:
If the expression consists of a single return statement, the braces, return keyword, and terminal semi-colon can all be omitted:

## Terminology

The java.util.function namespace contains many structures out-of-the-box, introducing some standard terminology falling under 3 broad types:
* "Functions": real functions in the mathematical sense, taking exactly one input and providing exactly one output;
* "Consumers": entities that accept inputs but do not provide any output (in the conventional sense); and
* "Suppliers": entities that provide a value every time it is invoked without requiring any input.
| Interface | Inputs | Result | Signature | |
| Function<T, R> | T | R | T -> R | Accepts one input of type T and returns something of type R |
| Consumer<T> | T | | T -> | Accepts one input of type T and does not return anything (void) |
| Supplier<R> | | R | -> R | Does not accept any inputs and returns objects of type R |
Function and Consumer also have "Bi" variants accepting two inputs:
| Interface | Inputs | Result | Signature | |
| BiFunction<S, T, R> | S, T | R | (S, T) -> R | Accepts two inputs, one of type S and another of type T, and returns something of type R |
| BiConsumer<S, T> | S, T | | (S, T) -> | Accepts two inputs, one of type S and another of type T and does not return anything (void) |

## Further Reading

* Streams/Collections
* Functional Interfaces
* Method references
# Java Programming/Large numbers

* Navigate Language Fundamentals topic: ( v • d • e )
* Statements
* Conditional blocks
* Loop blocks
* Boolean expressions
* Variables
* Primitive Types
* Arithmetic expressions
* Literals
* Methods
* String
* Objects
* Packages
* Arrays
* Mathematical functions
* Large numbers
* Random numbers
* Unicode
* Comments
* Keywords
* Coding conventions
* Lambda expressions
The integer primitive type with the largest range of value is the long, from -2$^{63}$ to 2$^{63}$-1. If you need greater or lesser values, you have to use the BigInteger class in the package java.math. A BigInteger object can represent any integer (as large as the RAM on the computer can hold) as it is not mapped on a primitive type. Respectively, you need to use the BigDecimal class for great decimal numbers.
However, as these perform much slower than primitive types, it is recommended to use primitive types when it is possible.

## BigInteger

The BigInteger class represents integers of almost any size. As with other objects, they need to be constructed. Unlike regular numbers, the BigInteger represents an immutable object - methods in use by the BigInteger class will return a new copy of a BigInteger.
To instantiate a BigInteger, you can create it from either byte array, or from a string. For example:
* Code section 3.23: 1 quintillion, or 10^18. Too large to fit in a long.
* BigInteger i = new BigInteger("1000000000000000000");
BigInteger cannot use the normal Java operators. They use the methods provided by the class.
* Code section 3.24: Multiplications and an addition.
* BigInteger a = new BigInteger("3");
* BigInteger b = new BigInteger("4");
* // c = a^2 + b^2
* BigInteger c = a.multiply(a).add(b.multiply(b));
It is possible to convert to a long, but the long may not be large enough.
* Code section 3.25: Conversion.
* BigInteger aBigInteger = new BigInteger("3");
* long aLong = aBigInteger.longValue;

## BigDecimal

The BigInteger class cannot handle decimal numbers. The BigDecimal class represents a floating point value of arbitrary precision. It is composed of both a BigInteger, and a scale value (represented by a 32-bit integer).
# Java Programming/Links
## External References

* Java Certification Preparation Guides
* Java Certification Mock Exams 500+ questions with exam simulator (this is the older 1.4 version of the exam)
* Java Language Specification.
* Thinking in Java
* Java 8 SDK Documentation
* Java 5 SDK Documentation in CHM Format
* Java 8 API Documentation
* The Java Tutorial
* Sun Developer Network New to Java Center
* A simple Java Tutorial
* Two Semesters of College-Level Java Lectures--Free
* Java Lessons - Interactive Java programming tutorials based on examples
* Java Tutorials for Kids and Adults

## External links

* Introduction to Programming Using Java by David J. Eck
* Think Java by Allen Downey and Chris Mayfield
* Introduction to Computer Science using Java by Bradley Kjell
* Learn Java - ad-supported site with tutorials for many languages
* Java Certification Mock Exams 500+ questions with exam simulator
* SwingWiki - Open documentation project containing tips, tricks and best practices for Java Swing development
* JavaTips - Blog project containing best JAVA tips and tricks
* Free Java/ Advanced Java Books
* Free Java and J2EE eBooks
* Java books available for free downloads
* Roedy Green's Java & Internet Glossary A comprehensive reference that's also an excellent starting point for beginners
* C2: Java Language
* NetBeans IDE
* Eclipse IDE
* Zeus for Windows IDE
* Official Java Home Site
* Original Java Whitepaper
* Complete Java Programming Tutorials
* Javapassion, Java course - The Javapassion Site, Java Course, driven by Sang Shin from Sun
* beanshell Interpreted version
* The Java Language Specification, Third Edition "This book attempts a complete specification of the syntax and semantics of the language."
* The Java Virtual Machine Specification, Second Edition and amendments
* A pure java desktop
* Javapedia project
* Bruce Eckel Thinking in Java Third edition -- (Bruce has a C/C++ free book available on-line too)
* JavaGameDevelopment Daily news and articles on Java Game Development
* Java Certifications Site(SCJP,SCWCD,SCBCD,Java 5.0,SCEA
* Java Programming FAQs and Tutorials
* More resources
* Java lessons
* Online Java Tutorial
* Full Java Tutorial - A collection of free premium programming tutorials
* Java Certification Practice Tests and Articles
* Kode Java - Learn Java Programming by Examples
* Games Programming Wiki - Java tutorials and lessons based on game programming
* WikiJava - Examples and tutorials in Java
* Download Free java ebooks from 83 ebooks collection - Free Java Ebooks to download from ebookslab.info
* Download Free Sun Certified Developer for Java Web Services - Free Java Ebooks to download from ebooks.mzwriter.net
* Code Conventions for the Java Programming Language - At SUN
* Java Lessons at LeoLoL - A collection of introductory lessons to Java
* Java Exercises at LeoLoL - A collection of Java exercises with sample solutions
* Java Best Practices - A collection of Java tutorials, best practices and programming tips
Newsgroups:
* comp.lang.java (Google's web interface)
# Java Programming/Literals/Boolean Literals/true

true is a boolean literal representing the true value. See also false.
# MediaWiki Developer's Handbook/Add Button

To install
* Create a directory mediawiki/extensions/myRedirect
* Save above script as myRedirect.php
* Save the following picture to the directory as myRedirect.png. .
* Append the following line to LocalSettings.php

### Links

http://commons.wikimedia.org/wiki/Category:Button_link
Introduction |Software Architecture |Programming Extensions |Parser Extensions |Adding new tags |Special Pages |Query Pages |HTML Form Pages |Editor Extensions |Add Button |References |Class Reference |Globals Reference |Hooks Reference |Literature
# MediaWiki Administrator's Handbook/Rollback

Rollback quickly reverts all consecutive edits by the most recent contributor to a particular page. The edit summary is automatically set to read "Reverted edit of A, changed back to last version by B", and the edit is marked as "minor".
The rollback tool should only be used to revert blatant vandalism. It should not be used to revert good-faith edits, to resolve content disputes, or to enforce a particular version of an article.
The rollback tool may remove constructive edits, and it may also leave earlier vandalism intact. As a result, after using the rollback tool, sysops should always check recent revisions and ensure that all disruptive edits have been reverted and all constructive edits restored.
Finally, after using the rollback tool, sysops should leave a note on the appropriate User talk: page and explain why rollback was used. Many "vandals" are simply new users who are unfamiliar with the ways of the wiki; by gently correcting them, a good sysop may lead them to contribute positively.
If you are an administrator you can use bot rollback, which will treat rollbacks as bot edits so they don't flood recent changes, good if a vandal bot comes and vandalizes lots of pages. To use this, you need to go to the user's Special:Contributions page and put &bot=1 at the end of the url, like this, http://en.wikipedia.org/w/wiki.phtml?title=Special:Contributions&target=SomePersistentVandal&bot=1. You can then click the rollback buttons on the user's contribution page so that the rollbacks don't flood recent changes.
# MediaWiki Administrator's Handbook/Spam and Spammers

On wikimedia wikis, spamming is the addition of unwelcome commercial links and/or language, either added to already existing pages, or added as an entire page.
The various projects have vast differences in what is defined as spamming, and what to do about it.

## Extension:ConfirmEdit

The most common way to protect your wiki from spam is to use ConfirmEdit extension. Extension:ConfirmEdit offers several variants of capchas:

### SimpleCaptcha

SimpleCaptcha is the default captcha in ConfirmEdit. This captcha prompts user to solve a simple math question to prove that they are not spam bots:
SimpleCaptcha can be easily bypassed by simple script, so it is recommended to use more complex capchas.

### FancyCaptcha

FancyCaptcha is a traditional graphic captcha, that prompts user to type letters that appear in the picture:
To create captcha's images you will need to run a python script. But you will not need python on your web-server to use this captcha, you may create images on your desktop, for example, and just copy them to your wiki web-server.

### MathCaptcha

MathCaptcha is another captcha mechanism for ConfirmEdit. To run it you will require TeX support within your MediaWiki.

### ConfirmEdit Notes

Note that ConfirmEdit is quite sensitive to version mismatch. The last version of ConfirmEdit should work well with the last version of MediaWiki. If you want to use ConfirmEdit with a legacy version of MediaWiki, you might spend a lot of time looking for a matching version of ConfirmEdit in the SVN repository. Some version matches are mentioned on the extension home page but not all of them.

## Extension:ReCAPTCHA

ReCAPTCHA is a captcha extension for Mediawiki. It offers strong visual and audio capchas.

## Using Abusefilters

MediaWiki's abuse filter extension can also be very useful in stopping spammers, in fact, it can outdo the other methods described above if configured properly while being less intrusive to the user. The main challenge is to determine how strict you want to be - you can be too strict but have virtually no spam - or you can be lenient and make do with some spam.
This site (en.wikibooks) mainly combats spam with the help of an abuse filter which blocks users with less than two posts from posting external links. This filter is particularly effective as spambots are focused on including external links and the abuse filter takes care of them, while the threshold is deliberately set low so that genuine users aren't affected.
If you use this method, expect false positives from time to time. You may wish to include a page where users can do that, in Wikibooks this page is used.
# MediaWiki Administrator's Handbook/Special pages

Special pages are available to all Wikimedia users from a link on the sidebar. Administrators can access some special pages not available to non-administrators:
* Block user
* Import pages
* Unwatched pages
* View deleted pages
# MediaWiki Developer's Handbook

This is a developer's handbook to MediaWiki, describing how to extend and tweak MediaWiki--the software that runs Wikipedia, Wikibooks, and other Wikimedia projects.
Introduction |Software Architecture |Programming Extensions |Parser Extensions |Adding new tags |Special Pages |Query Pages |HTML Form Pages |Editor Extensions |Add Button |References |Class Reference |Globals Reference |Hooks Reference |Literature

## Contents

* Preface
* Introduction
* MediaWiki Software
** Software Architecture
** Programming Extensions
* Extending MediaWiki
** Parser Extensions
** Adding new tags
** Special Pages
** Query Pages
** HTML Form Pages
** Editor Extensions
** Add Button
** Skin Extensions
** Add JavaScript
* References
** References
** Class Reference
** Globals Reference
** Hooks Reference
* Resources and Licensing
** Literature
** Resources
** Licensing

## Related wikibooks

* PHP Programming
* SQL
* MediaWiki Administrator's Handbook
* MediaWiki User Guide
# MediaWiki Cookbook/Using FontAwesome Icons
## Font Awesome

So you want a rocket on your page to show how awesome your stuff is. Something like this: http://fontawesome.io/icon/rocket/
If your wiki supports Font Awesome, then it's as easy as <i class="fa fa-pull-left fa-5x fa-rocket" aria-hidden="true"></i>
That is how to show a Font Awesome icon, pulled to the left, 5x bigger than normal, and explicitly telling screen readers to ignore the item as decorative.

## Bootstrap

If your wiki uses a bootstrap compatible theme like Foreground (FontAwesome 4.3) or Chameleon, then you can also mix-in layouts like this (won't work with Vector):

### Bootstrap Example

We specialize in

## How To

The best way I've found is to modify MediaWiki:Common.js
Note that the deprecated $wgUseTidy can interfere with FontAwesome by removing the empty tags.

### Recipe

* Sign up for a unique embed code at the fontawesome website.
* Add the script source to your wiki by editing the MediaWiki:Common.js file where you add a call to 'load' the external script
* Insert the <i> tags where ever you want. Note that there are various sizes pre-defined as fa-1 (smallest) to fa-6 (largest)

## More

* Check http://fontawesome.io/examples/
* http://fontawesome.io/icons/ The icons (Note there is a new kickstarter for a Pro product https://www.kickstarter.com/projects/232193852/font-awesome-5)
* https://cdn.fontawesome.com/help#qa-icons-code
* https://stackoverflow.com/questions/tagged/font-awesome
* https://github.com/FortAwesome/Font-Awesome

## Disclaimer

At the time of writing, this site doesn't support FontAwesome icons, nor Bootstrap layouts. But now that the sample code is in place, we'll try the recipe.
# MediaWiki Developer's Handbook/Add JavaScript

Sometimes features are best coded as client-side JavaScript (js) instead of in the software (either as core, or an extension). This chapter is a guide to developing js solutions. Instead of the bottom-up method of instruction used in JavaScript, this text will use top-down methods, beginning with the examination of methods used in several useful scripts, examining the particular techniques used, and then extending them to another set of useful scripts.
This chapter will teach you only the basics of scripting in a MediaWiki environment; for generic or complex scripting, or use outside MediaWiki, refer to JavaScript.

## Subsections

* Introduction:
** Predefined functions
** Predefined variables
* Case studies:
** Adding a purge tab
** Hiding unwanted information on the deletion form
** Blocking tools