OpenLLM-France/wikimedia huggingface dataset:
# LMIs in Control/Click here to continue/Controller synthesis/LQ Regulation via H2 control
## LQ Regulation via $H_{2}$ Control

The LQR design problem is to build an optimal state feedback controller $u=Kx$ for the system ${\dot {x}}=Ax+Bu,x(0)=x_{0}$ such that the following quadratic performance index.
    ${\begin{aligned}J(x,u)=\int _{0}^{\infty }(x^{T}Qx+u^{T}Ru)dt\end{aligned}}$
is minimized, where
    ${\begin{aligned}Q=Q^{T}\geq 0,R=R^{T}>0\end{aligned}}$
The following assumptions should hold for a traditional solution.
${\boldsymbol {A1}}.(A,B)$ is stabilizable.
${\boldsymbol {A2}}.(A,L)$ is observable, with $L=Q^{1/2}$.

## Relation to $H_{2}$ performance

For the system given above an auxiliary system is constructed
    ${\begin{aligned}{\dot {x}}=Ax+Bu+x_{0}\omega ,y=Cx+Du\end{aligned}}$
where
    ${\begin{aligned}C={\begin{bmatrix}Q^{1/2}\\0\end{bmatrix}},D={\begin{bmatrix}0\\R^{1/2}\end{bmatrix}}\end{aligned}}$
Where $\omega$ represents an impulse disturbance. Then with state feedback controller $u=Kx$ the closed loop transfer function from disturbance $\omega$ to output $y$ is
    ${\begin{aligned}G_{y\omega }(s)=(C+DK)[sI-(A+BK)]^{-1}x_{0}\end{aligned}}$
Then the LQ problem and the $H_{2}$ norm of $G_{y\omega }$ are related as
    ${\begin{aligned}J(x,u)=||G_{y\omega }(s)||_{2}^{2}\end{aligned}}$
Then $H_{2}$ norm minimization leads minimization of $J$.

## Data

The state-representation of the system is given and matrices $Q,R$ are chosen for the optimal LQ problem.

## The Problem Formulation:

Let assumptions $A1$ and $A2$ hold, then the state feedback control of the form $u=Kx$ exists such that $J(x,u)<\gamma$ if and only if there exist $X\in \mathbb {S} ^{n}$, $Y\in \mathbb {S} ^{r}$ and $W\in \mathbb {R} ^{rxn}$. Then $K$ can be obtained by the following LMI.

## The LMI:

$\min \gamma ::$
    ${\begin{aligned}(AX+BW)+(AX+BW)^{T}+x_{0}x_{0}^{T}<0\end{aligned}}$
    ${\begin{aligned}trace(Q^{1/2}X(Q^{1/2}))+trace(Y)<\gamma \end{aligned}}$
    ${\begin{aligned}{\begin{bmatrix}-Y&R^{1/2}W\\(R^{1/2}W)^{T}&-X\end{bmatrix}}<0\end{aligned}}$

## Conclusion:

In this case, a feedback control law is given as $K=WX^{-1}$.

## External Links

* LMIs in Control Systems Analysis, Design and Applications - Duan and Yu
* A course on LMIs in Control by Matthew Peet.
* LMIs in Systems and Control Theory - A downloadable book on LMIs by Stephen Boyd.
# LMIs in Control/Click here to continue/Controller synthesis/LMI for the Controllability Grammian

LMI to Find the Controllability Grammian
Being able to adjust a system in a desired manor using feedback and sensors is a very important part of control engineering. However, not all systems are able to be adjusted. This ability to be adjusted refers to the idea of a "controllable" system and motivates the necessity of determining the "controllability" of the system. Controllability refers to the ability to accurately and precisely manipulate the state of a system using inputs. Essentially if a system is controllable then it implies that there is a control law that will transfer a given initial state $x(t_{0})=x_{0}$ and transfer it to a desired final state $x(t_{f})=x_{f}$. There are multiple ways to determine if a system is controllable, one of which is to compute the rank "controllability grammian". If the grammian is full rank, the system is controllable and a state transferring control law exists.

## The System

    ${\begin{aligned}{\dot {x}}(t)&=Ax(t)+Bu(t),\\x(0)&=x_{0},\end{aligned}}$
where $x(t)\in \mathbb {R} ^{n}$, $u(t)\in \mathbb {R} ^{m}$, at any $t\in \mathbb {R}$.

## The Data

The matrices necessary for this LMI are $A$ and $B$. $A$ must be stable for the problem to be feasible.

## The LMI: LMI to Determine the Controllability Grammian

$(A,B)$ is controllable if and only if $W>0$ is the unique solution to
       $AW+WA^{T}-BB^{T}<0$,
where $W$ is the Controllability Grammian.

## Conclusion:

The LMI above finds the controllability grammian $W$of the system $(A,B)$. If the problem is feasible and a unique $W$ can be found, then we also will be able to say the system is controllable. The controllability grammian of the system $(A,B)$ can also be computed as: $W=\int _{0}^{\infty }e^{As}BB^{T}e^{A^{T}s}ds$, with control law $u(t)=B^{T}W^{-1}x(t)$ that will transfer the given initial state $x(t_{0})=x_{0}$ to a desired final state $x(t_{f})=x_{f}$.

## Implementation

This implementation requires Yalmip and Sedumi.
https://github.com/eoskowro/LMI/blob/master/Controllability_Gram_LMI.m

## Related LMIs

Stabilizability LMI
Hurwitz Stability LMI
Detectability LMI
Observability Grammian LMI

## External Links

A list of references documenting and validating the LMI.
* 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 Systems: Analysis, Design and Applications - by Guang-Ren Duan and Hai-Hua Yu, CRC Press, Taylor & amp; Francis Group, 2013, Section 6.1.1 and Table 6.1 pp. 166–170, 192.
* A Course in Robust Control Theory: a Convex Approach, - by Geir E. Dullerud and Fernando G. Paganini, Springer, 2011, Section 2.2.3, pp. 71-73.
# History of wireless telegraphy and broadcasting in Australia/Editing/Overview
## Overview

This page is for use as a ready reference for Wikibooks Editing Overview matters.

### Wikibooks pages

* Editing Wikitext - Basic overview of many aspects of editing in Wikibooks (in Wikibooks presentation style)
* Help:Editing - Comprehensive overview of all aspects of editing in Wikibooks (in plain text style)
# History of wireless telegraphy and broadcasting in Australia/Editing/Tables
## Wiki tables help pages

This page is for use as a ready reference for all things table related, especially the various help guides in Wikimedia, Wikipedia and Wikibooks

### Wiki Table Editing Pages

* Wikibooks - Editing Wikitext Tables
* Wikibooks - Tables Ready to Use
# History of wireless telegraphy and broadcasting in Australia/Regulatory Chronology

* 1880s
* 1890s
* 1900s
* 1910s
* 1920s
* 1930s
* 1940s
* 1950s
* 1960s
* 1970s
* 1980s
* 1990s
* 2000s
* 2010s
# History of wireless telegraphy and broadcasting in Australia/Editing/Research

To date all research has been very largely limited to NLA's Trove, and further to Trove, Newspapers & Gazettes
In the National Library of Australia's Trove website, 217 articles (Newspapers & Gazettes) as at 6 April 2021 have been tagged as "4BB - Robert John Beatson" (search publictag:4BB - Robert John Beatson)
The main searches used to identify articles for tagging are as follows:
* With word "VK4BB" (about 50 hits)
* With word "Beatson", category "Family Notices" (not yet fully researched)
* With phrase "Robert John Beatson" and without "Publictag:4BB" (less than 10 hits)
* With phrase "R. J. Beatson", State "Queensland" (about 100 hits)
* With phrase "Bob Beatson", State "Queensland", from 1920 (about 80 hits)
* With words "Beatson" and "Wireless", State "Queensland", from 1920 (about 200 hits)
Key articles relating to Watkins and wireless, also Watkins' family history, have been identified for text correcting and inclusion in Transcriptions and Notes - Robert John Beatson. Articles transcribed for Notes are tagged: "!Wikibooks Beatson" (10+ articles). Articles reviewed and considered either duplicates of other articles or not of sufficient importance for inclusion are tagged: "!Wikibooks Beatson Not" (10+ articles).
# History of wireless telegraphy and broadcasting in Australia/Editing/TOC
## Overview

This page is for use as a ready reference for Wikibooks Table of Contents matters.

## Wikibooks Table of Contents help pages

The following is a guide to the various Table of Contents help guides in Wikibooks.

### Wikibooks pages

* Editing Wikitext - Excellent overview of all aspects of editing in Wikibooks, including Table of Contents under Text Formatting - Headings
* All pages relating to Table of Contents -
* Citing in Wikipedia
* Category:Citation templates Page listing a large number of Wikipedia pages about templates by category
* Citation templates List of both simple and complex examples of use of citation templates

### Specific template description pages

* Template:Citation - A complete description of the Citation template
* Template:Cite web - A complete description of the Cite_web template (for website articles)
# History of wireless telegraphy and broadcasting in Australia/Editing/Infobox

Infobox overview
List of all Infobox templates
Infobox person
# History of wireless telegraphy and broadcasting in Australia/Editing/Notes Link
## Transcriptions and Notes
### Stations

More than 50 key articles relevant to VIB Brisbane, mainly from the NLA's Trove Digitised Newspapers have been transcribed for ease of reference here: VIB Brisbane - Transcriptions and Notes

### Amateur Stations

Station 4AW was an amateur broadcasting station at Brisbane operated by Arthur Edwyn Walz in the late 1920s and early 1930s. At this stage, in this Wikibook, the activities of the station have not been separately recorded, but rather included in the biography of Arthur Edwyn Walz. Specific resources available are as follows:
* Biography - Arthur Edwyn Walz
* Transcriptions and Notes - Arthur Edwyn Walz
* Photos, QSL cards and other graphics - Arthur Edwyn Walz

### Biographies Summary (1)

More than 50 key articles relevant to Alfred Thomas Bauer, mainly from the NLA's Trove Digitised Newspapers have been transcribed for ease of reference here: Alfred Thomas Bauer - Transcriptions and Notes

### Biographies Summary (2)

Arthur Edwyn Walz was a prominent amateur operator, amateur broadcaster, amateur club administrator in the late 1920s and early 1930s, and ultimately senior state public servant. His station callsign was 4AW (4=Queensland, A=Arthur, W=Walz) and he operated from Brisbane, Queensland. A summary biography has not yet been prepared however the following resources have been assembled in preparation:
* Transcriptions and Notes - Arthur Edwyn Walz - More than 50 transcriptions and notes
* Photos, QSL cards and other graphics - Arthur Edwyn Walz - Nothing uploaded as yet

### Biographies Summary (3)

George Henry Boundy was a well known early wireless experimenter in the period before WW1. He was a member of the brief lived Wireless Institute of Queensland, but does not appear to have continued his interest through the Queensland Wireless Institute post WW1. He was a contemporary of Edward Gustavus Campbell Barton and was a member of the Queensland Electrical Association with Barton in the 1890s. He was originally a testing officer with the Department of Posts and Telegraphs in Victoria from 1882 and accepted a similar position in the Queensland department. He retired in 1931 and passed suddenly in 1932 while visiting relations in Victoria. The Boundy family was known in Victoria through their association with the earliest discoveries of gold in Victoria in 1851. A summary biography has not yet been prepared however the following resources have been assembled in preparation:
* Transcriptions and Notes - George Henry Boundy - More than 50 transcriptions and notes
* Photos, QSL cards and other graphics - George Henry Boundy - Nothing uploaded as yet
# History of wireless telegraphy and broadcasting in Australia/Introduction

This history of wireless telegraphy and broadcasting in Australia will focus upon the individual persons, businesses and government agencies that gave effect to the two technologies. Similar focus will be placed on the specific regulations and policies which enabled (or hindered) particular implementations.
It can at times be difficult to appreciate that the warmth and humanity of broadcasting has its historical roots entirely within the cold and harsh technology of wireless telegraphy. But the path to broadcasting in Australia could not have been found without the efforts of our earliest wireless experimenters and then the various wireless businesses and Government agencies seeking to gain a foothold in Australia.
In the earliest years, adoption of broadcasting in Australia using AM radio spectrum was a few years behind most other nations in the developed world. Certainly the technology needed to be adapted and developed a little for Australian conditions. But more importantly, Australia looked for regulatory policy settings that balanced and supported the often competing needs for quality content and quality carriage (which at the time could only be provided by a well-funded Government entity) against the needs for diverse and agile content and carriage (at which private enterprise invariably excelled). In what came to be known in Australia as national and commercial broadcasting, the nation established a broadcasting system distinct from those of the two nations one would have expected Australia to blindly follow: Great Britain (solely Government funded services) or the United States (solely private enterprise services). By the early 1930s, Australian content and carriage was arguably on par with anything worldwide and the system proved effective in meeting the broadcasting needs of the Australian people for the next half century. Eventually demand from numerous niche interests could not be met within the existing policy settings. But after much Sturm und Drang, a new category of broadcasting delivering community radio was forged from the 1980s aided by the fresh spectrum opportunities delivered by our late adoption of FM radio. Again in the lead up to a new broadcasting act of 1992, new players emerged which eventually became categorised a narrowcasters and they too were eventually formally accommodated in the broadcast mix.
# Making a Programming Language From Scratch/Line by Line Input System
## Processing the File

To make a compiler obviously you have to take input from a file.Thus you need to be familiar with File I/O in at least one language you are comfortable in. Now how do you get the statements? Each line in a programming language is terminated by a very specific character which is NOT a newline. Most generally it is a semi-colon(;) or an opening brace(. So to get a complete line we only need to input up till the terminating character. Note that this approach means that you cannot have the terminating characters within even a string or a character, but that they have to be represented by their ASCII code.

## Algorithm For Input

This algorithm will take input from the file and then store it in the character array assigned to it.

## Processing Keyword

Now, once you have the complete logical line, what are you going to do with it? Obviously you are going to process it. But how? There are two methods to it.
1. Lexing and Parsing the line 2.Getting keyword and taking appropriate action thereafter
In method 1 we take the line, run it through what is known as a 'Lexer' which breaks it down into tokens a 'Parser' which analyses it. Based on this it makes a wise decision and sends it to be processed accordingly.However this approach needs a very sophisticated system.
This book seeks to skip the processes of Parsing and Lexing and go straight into processing. Thus this book uses the Pseudo-Parser and Pseudo-Lexer approach (Method 2) which Lexes and Parses the statement differently for each type of statement, which allows for simpler compilers and lot of grammatical freedom.
The algorithm for this approach is rather simple:
After this process is over, check for flags set by the line-input system, if the flag is set, terminate program.
# Making a Programming Language From Scratch/Localizing
## Functions and scope

Before we do anything with functions we must localize the variables. Note that in case of procedures variables are not local but are global.

## Scope

Anything that is declared within a function remains within the function. This essential rule called the Scope rule has governed the creation of programming languages since the time of C.
In the case of automatic or local variables it is easy . All variables that are declared with the LOCAL keyword are by default limited to the procedure only. Thus parameters are also to be declared as LOCAL however this is already done by the PROC keyword
For static variables there is no such facility and thus the localizing must be done manually. One cheap and easy method is to simply append the name of the function to the variable. But this method requires that you must convert the name of each and every static variable every where it is used. The final algorithm totally depends on you.
# Making a Programming Language From Scratch/Simple Data Types
## Simple Data Types

What does 'Simple Data Types' mean? The term refers to data types such as float, int and char declared in single format. Thus this type of data declarations exclude arrays and structures which are covered later.
Format for Simple Data Declarations

## Assembly equivalents for common data types

Assembly language , however does not recognize these data types. In fact, there is no distinction between an int and a char, or even between an int and a float (just that float variables are stored in a different format).
Assembly language does not recognize static, local or extern variables. All variables declared in the BSS or DATA section are static and all variables declared with Macro LOCAL are local. Local variables are declared in CODE sections
Also you cannot declare more than one variable in one logical line. Assembly language recognizes the following type of variables:
The first group is the integer group which store non-fractional data The second group is the fractional group which stores fractional data

## Sample Conversions

Original Code:
Resultant Code:
Original Code:
Resultant Code:
Note: All uninitialized variables are to be declared in the .BSS or .DATA? section while all initialized variables are to be stored in .DATA section. All local variables are to be declared in .CODE section in the following format
# Making a Programming Language From Scratch/Pointers
## Introduction to pointers

Pointers are variables that store the addresses of other variables. This variable is generally a DWORD or a 32-bit integer, however the variable the address of which the pointer is storing can be of any type. Pointers are used extensively to pass static or local variables to be edited and are the major type of arguments provided to a void function.

## Pointer Format

The following is the traditional C and C++ format to declare pointer variables.
[type of variable of which the pointer is storing value of][*(represents pointer)][variable name][initialization of pointer][,|;]
Note that pointer variables can be declared among the variable type of which it is storing the value. Example:
The & operator provides the address of the variable rather than the value stored in it.

## Algorithm for declaration

The algorithm for this is as follows:
# Making a Programming Language From Scratch/The Braces Problem
## The big bad braces problem

One of the most fundamental problems that I faced during the creation of my language was the braces problem. Thus I devoted this chapter to this problem and it's solution.
In most modern languages block statements are terminated by the braces. However, multiple statements share the braces, such as if,while,else,elseif,functions,e.t.c.
Thus the problem I faced was this: How do you recognize the end brace } as belonging to which statement. Remember that in the line by line input method we will only get "}" as our line. After thinking for many days I finally came upon a solution.

## Solution

We need to open the generated output file in read more. We then search for a comment of format !!? [Block statement name]
And if that statement is not terminated by ??! [Block statement name]
Then it is our required statement. Note that the required statement is the last open statement.
We close this statement by the above mentioned format and also include in the code the necessary instructions.
# Making a Programming Language From Scratch/Function Definitions
## Function definitions

There is nothing called functions in assembly. However, there is a mildly resembling counterpart called procedures. However procedures do not return any values. This critical problem will be discussed later on.

## Syntax of function definition using PROC

It is not a necessity to use the PROC keyword for all your function declarations. However it is much easier to do it this way instead of its counterpart method involving code segment pointers. The syntax for function definitions using PROC is as follows:
All functions have to be declared this way.
# Making a Programming Language From Scratch/Structures
## Structural declarations

Structures are groups of different types of data in continuous locations. It is necessarily the grouping of different types of data together.

## Format of structural declarations

Format of assembly:

## Algorithm to process

[note that choice of keyword is totally up to you.]

## Structure variable declarations

All structures are useless unless they have some representatives in the physical memory. This is called a structure variable. A structure variable is defined along with other variables with the important difference that structure variables are not defined during initializing (at least in assembly). Thus we will deal with only uninitialized structure variables.
Format as of assembly:
The <?> is the structure dup operator which sets value 0 or 0.0 to all sub-components

## Sample Conversion

In HLL
In Assembly
# Making a Programming Language From Scratch/Simple Expressions
## Expressions

An expression includes all forms of commands that require usage of the ALU excepting logic functions . They also include function calls but these will be covered later. In this chapter we deal with the conversion of simple expressions or expressions excluding parenthesis and function calls or any sort of referencing.

## Basic Operations

We all know the four basic arithmetic operations that is +,-,*,/. Together they combine to form expressions such as : a*b+c
However assembly language does not recognize such expressions, but it only recognizes binary commands such as: add a,b mul b,c
Also it does not recognize precedence. It just executes commands as they are presented in a sequential order. Thus we have to order theses commands by ourselves.
Also the results are always stored in a certain location known as a register. More specifically it is stored in the Eax register.

## Instructions

There are the following instructions for each operation on integers. For operations on char replace eax by al:
Assignment
Add
Subtract
Multiplication
Division
Modulus
Increment
Following are the corresponding instructions for floats.
Assignment
Addition
Subtraction
Multiplication
Division
There is no modulus for float variables.

## Algorithm For Conversion

Part1 Multiplication,division,modulus
For char replace eax by al and for float assign st(1) to var[NUM].
Part2 Addition,subtraction
# Mechanical Vibration/Units
## Units

Before you begin the second chapter of this book be sure to refamiliarize yourself with the following physical measurements. In the typical fashion of working almost exclusively in SI units as part of an effort to remove the engineering profession from outdated unitary systems, this text will present all problems in SI. You should be familiar with their English equivalents; afterall, if you plan on working in the United States you will be using English Units. The table below should cover all the units we will use throughout the text.
| Parameter | SI |
| Mass | $\!\mathrm {kg}$ |
| Angle | $\!\mathrm {rad}$ |
| Acceleration | ${\frac {\mathrm {m} }{\mathrm {s} ^{2}}}$ |
| Length | $\!\mathrm {m}$ |
| Force | $\!\mathrm {N}$ |
| Spring constant | ${\frac {\mathrm {N} }{\mathrm {m} }}$ |
| Torsional Spring constant | ${\frac {\mathrm {Nm} }{\mathrm {rad} }}$ |
| Damping constant | ${\frac {\mathrm {Nsec} }{\mathrm {m} }}$ |
| Mass moment of inertia | $\!\mathrm {kgm} ^{2}$ |
← Second Law of Motion · Deterministic Modeling →