プログラミング

python

単層パーセプトロンを使ってANDを作る

単層パーセプトロンを使ってANDを作る。ANDは ABX000010100111 となるような演算である。一方で単層パーセプトロンとはそれぞれの入力\(x\)に重み \( w \) を乗じて和をとったもので \begin{align}y=\...
C/C++/C#

C言語でFizz Buzz

これの続き。 #include<stdio.h> int main() { int i, N = 36; for (i = 1; i <= N; i++) { if ((i % 3 == 0) && (i % 5 == 0)) { prin...
MATLAB/simulink

MATLAB2021aにおけるfor文の計算速度

MATLABを使うときよく言われるのは「for文は遅い」だと思う。今回は2021aでその速度を調べた。 使用したソースコード N=100000000; A1=1:1:N; A2=1:1:N; B1=zeros(1,N); tic for i...
MATLAB/simulink

MATLABでFizz Buzz

Fizz Buzzとは ・3の倍数→Fizz ・5の倍数→Buzz ・15の倍数→Fizz Buzz つまり 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, Fi...
プログラミング

gitで直前のコミットを打ち消す

直前のコミットを打ち消すには git reset --hard HEAD^
C/C++/C#

if文で予期しないエラーを出さないために

定数比較するときif文を使う場合が多い。一般的なif文の構文は if (num == 3) { //処理 } である。もしこの文を書き間違え if (num = 3) { //処理 } としたとき、numの値に関係なく処理が行われてしまう。...
C/C++/C#

正多角形の外角の和と一つの角度の値を返すプログラムを作る

正多角形の内角の一つ分の大きさは \begin{align}\theta_{n} = \frac{180(n-2)}{n}\end{align} なので一つ分の外角は \begin{align}\theta_{n} = 180 -\frac...
C/C++/C#

正多角形の内角の和と一つの角度の値を返すプログラムを作る

正多角形の内角の和は \begin{align}\theta_o = 180(n-2)\end{align} 一つ分は \begin{align}\theta_{n} = \frac{180(n-2)}{n}\end{align} 大きくす...
MATLAB/simulink

離散システムのボード線図を書く

\begin{align}G=\frac{1}{s+1}\end{align} を離散化する。c2dで離散化すると伝達関数は \begin{align}G=\frac{0.00995}{z-0.99}\end{align} となる。離散シス...
C/C++/C#

コラッツ予想を拡張する

前回の記事で触れたコラッツ予想を負の数を扱えるよう拡張する。 負の数でやろうとすると循環してしまい無限ループとなるので上限繰り返し数を設けた。上限繰り返し数は #define MAX 10 で定めている。たとえばこのプログラムに\(-5\)...
C/C++/C#

コラッツ予想を試す

コラッツ予想は初めに任意の正の整数\(n\)を定めこれを \(n\)が偶数の時 \begin{align}n=\frac{n}{2}\end{align} \(n\) が奇数の場合、 \begin{align}n=3n+1\end{alig...
MATLAB/simulink

フェルマーの小定理をMATLABで計算してみる

フェルマーの小定理は\(p\)が素数、\(a\)を\(p\)の倍数でない整数とすると \begin{align}a^{p-1} \equiv 1 \pmod{p}\end{align} が成り立つというものである。\(\mathrm{mod...
MATLAB/simulink

フェルマーの最終定理をMATLABで計算してみる

フェルマーの最終定理とは \begin{align}z^n=x^n+y^n (n>2)\end{align} を満たす自然数の組は存在しないというものである。\(n=2\)の場合はピタゴラスの定理となり解が存在する。この場合の解は直角三角形...
C/C++/C#

C言語で順列と組合せを計算する

これのつづき。階乗を定義したので、順列と組み合わせを計算する。順列と組合せは \begin{align}\mathrm{{}_{n} C_r} &= \frac{n!}{ r!(n - r)!} \\\mathrm{{}_{n}P_r} &...
C/C++/C#

C言語で階乗を計算する

関数を定義して階乗を計算する。numに計算したい階乗\(n!\)の \(n\) を設定する。大きな数を使う場合はlong intなどを使えばいい。 int factorial(int num) { int i, fact = 1; for ...
MATLAB/simulink

MATLABを使って完全数を探す

完全数とは自身の約数の和が自身の二倍になるような整数のことである。例えば\(6\)は \begin{align}1+2+3+6=2\times 6\end{align} となり完全数である。今回はこれをMATKLABを使って探索する。 コー...
MATLAB/simulink

Sherman–Morrison–Woodburyの公式をMATLABで計算する

Sherman–Morrison–Woodburyの公式とは \begin{align}(A+BDC)^{−1}=A^{−1}−A^{−1} B (D^{−1}+CA^{−1}B)^{−1} CA^{−1}\end{align} である。今...
MATLAB/simulink

Ziegler-Nicholsの限界感度法を用いたPIDゲインを調整法

PID制御器をZiegler-Nicholsの限界感度法を用いて調整する。限界感度法は1時遅れ系+むだ時間もしくは積分系むだ時間の時有効となる手法である。 まず、simulinkで次のような 1時遅れ系+むだ時間のPID制御モデルを作成する...
MATLAB/simulink

MATLABを使って行列の指数関数を計算

MATLABを使って前回の記事で考察した行列の指数関数を計算する。簡単に復習をすると行列の指数関数は \begin{align} e^A=\sum_{k=0}^{\infty}\frac{(P^{-1} A P)^k}{k!}=P^{-1}...
MATLAB/simulink

simulinkでシミュレーションした結果をワークスペースに書き出してグラフを作成する

simulinkでシミュレーションした結果のグラフをMATLABを使って出力する。 前回の記事のモデルにTo Workspaceブロックを次のように追加する。 このようにすればワークスペースにoutの構造体として格納されるので、MATLAB...