MATLAB/simulink

MATLAB/simulink

MATLABを使って伝達関数を部分分数分解する

制御工学ではよく伝達関数の性質を調べるために部分分数分解をすることがある。部分分数分解とは分数の分母を因数分解し、それらをいくつかの分数の和に分解することを指す。例えば \begin{align}\frac{1}{(x+p_{1})(x+p...
MATLAB/simulink

ガウスニュートン法による関数フィッティング

いくつかのデータ群から関数フィッティングを行う手法はいくつかあり、ガウスニュートン法はその一つである。 今回は調べていたら偶然見つけたガウスニュートン法のMATLABスクリプトを修正、関数化して使いやすくてみた。 プログラムは以下の通り。 ...
MATLAB/simulink

モンテカルロ法を使って円周率を計算する

円周率を計算する方法にモンテカルロ法というものがある。 モンテカルロ法は次の手順で円周率を求める。 円と、円が内接するような正方形を用意する正方形内にランダムな点を打つ全点と円内の点との数の比を求める すなわち \begin{align}\...
MATLAB/simulink

MATLAB/simulinkを使って簡単な適応制御を試す

一次遅れ系を例にMIT方式に基づくモデル規範型適応制御を試してみる。 今、制御対象を \begin{align}y(s)=\frac{b}{s+a}\end{align} で表す。これは微分方程式で書き直せば、 \begin{align}\...
MATLAB/simulink

エラトステネスのふるいを約数の関係を使って改良する

前回実装したエラトステネスのふるいを約数の関係を使って高速化する。 例えば次の数の約数は \begin{align}12=1,2,3,4,6,12\end{align} となる。ここである約数\(n\)の掛け算の組を\(m_{1},m_{2...
MATLAB/simulink

エラトステネスのふるいを実装する

素数とは1と自身以外に約数を持たない正の整数のことである。この素数には今のところ法則性が見つかっておらず、探すにはエラトステネスのふるい等を用いる必要がある。 エラトステネスのふるいは次のステップで素数の探索を行う。 2を素数にする2の倍数...
MATLAB/simulink

MATLABで伝達関数を定義する

matlabでの伝達関数の定義は単純で、例えば次のような伝達関数\(G(s)\) \begin{align}G(s)=\dfrac{1}{s^{2}+2s+3}\end{align} であれば Np = Dp = P = tf(Np, Dp...
MATLAB/simulink

ゼータ関数の特殊値を計算する

ゼータ関数\begin{align}\zeta(s) = \sum_{n=1}^{\infty} \dfrac{1}{n^s} =\dfrac{1}{1^s}+\dfrac{1}{2^s}+\dfrac{1}{3^s}+\dfrac{1}{...
MATLAB/simulink

ウォリスの公式と円周率

次の無限積をウォリスの公式という。 \begin{align}\lim_{m \to \infty} \large \prod_{n=1}^m \frac{4n^2}{4n^2-1}=\frac{\pi}{2}\end{align} ウォリ...
MATLAB/simulink

全探索したデータから重複分を取り除く

前回(n個の組み合わせを全部列挙してみる)で作ったプログラムを改造して巡回セールスマン問題用のプログラムを作ってみる。 まず巡回セールスマン問題とは、あるセールスマンが複数の都市を訪れるとき、どのような順番で巡回すれば最も効果的(時間、移動...
MATLAB/simulink

n個の組み合わせを全部列挙してみる

\( n \)個の組み合わせは\( n^n \)で表される。例え2桁の2進数は 2進数10進数000011102113 の組み合わせがある。ここでは\( n \)個の組み合わせをmatlabで全列挙してみようと思う。プログラムは以下の形で実...
MATLAB/simulink

二次元平面上に置かれた二点間の距離を求める

二次元平面上に置かれた二点 \(p_{1}(x_{1},y_{1}),p_{2}(x_{2},y_{2})\) 間の距離\(d(p_{1},p_{2})\)は\begin{align}d(p_{1},p_{2})=\sqrt{(x_{2}-...