プログラミング

C/C++/C#

【C言語】漸化式でフィボナッチ数列を定義する

フィボナッチ数列は漸化式を使って次のように与えられる。\begin{align}F_0&=0\\F_1&=1\\F_{n+2}&=F_{n+1}+F_{n} (n \geq 0)\end{align}以下のコードで確かめられる。#inclu...
C/C++/C#

【C言語】フィボナッチ数列の10個の和と7番目の数との関係

連続するフィボナッチ数列の\(10\)個の和は\(7\)番目の数を\(11\)倍した数と一致する。\begin{align}\sum_{i=1}^{10} F_{n+i} = 11 \times F_{n+7}\end{align}以下のコ...
C/C++/C#

【C言語】フィボナッチ数列の性質

フィボナッチ数列には次の性質がある\begin{align}\sum_{i=1}^\infty \frac{F_i}{10^{i+1}} = \frac{1}{89}\end{align}以下のコードで確かめられる。#include <st...
C/C++/C#

【C言語】フィボナッチ数列の逆数和

フィボナッチ数列の逆数和を\begin{align}\psi=\sum_{i=1}^\infty \frac{1}{F_i} = 3.3498 \cdots\end{align}以下のコードで確かめられる。#include <stdio.h...
C/C++/C#

【C言語】フィボナッチ数列の性質を確かめる

フィボナッチ数列には次のような特性がある。\begin{align}\lim_{n \to \infty } \frac{F_{n+1}}{F_n}= \phi = \frac{1 + \sqrt{5}}{2}\end{align}以下のコ...
C/C++/C#

【C言語】フィボナッチ数列を計算する

フィボナッチ数列は\begin{align}F(n)&=\frac{\phi^n - (-\phi)^{-n}}{\sqrt{5}} \\\phi&=\frac{1+\sqrt{5}}{2}\end{align}で与えられる数列で、\beg...
C/C++/C#

【C言語】gnuplotでグラフを描く

gnuplotを使ってグラフを描く。gnuplotはここからダウンロードすればいい。インストール先をC直下以外にする場合、GNUPLOT_PATHを変更する。以下サンプル#include <stdio.h>#include <stdlib....
C/C++/C#

【C言語】Radian-Degree相互変換

C言語で自作関数を作りRadian-Degree相互変換を行う。Radian-Degreeの相互関係は\begin{align}\theta = \frac{\theta }{180} \pi\end{align}を使えばいい。#defin...
MATLAB/simulink

【MATLAB】ヘロンの公式を実装する

ヘロンの公式は三角形の三辺と面積とを結ぶ関係式で\begin{align}S=\sqrt{s(s-a)(s-b)(s-c)} \hspace{10mm} s=\frac{a+b+c}{2}\end{align}MATLABではfunctio...
MATLAB/simulink

【MATLAB】2つの座標間の角速度ベクトルの関係をクォータニオンを使って定義する

2つの座標間の角速度ベクトルをクォータニオンを使って表すと\begin{align}\dot{\boldsymbol{q}} = \boldsymbol{T}_q (\boldsymbol{q}) \boldsymbol{\omega}\e...
MATLAB/simulink

【MATLAB】クォータニオンと回転行列の相互変換を定義する

回転行列とクォータニオンは相互に変換することができる。いまクォータニオンが\(\boldsymbol{q} \in \mathbb{Q}\)と定義されているとすると回転行列とクォータニオンは\begin{align}\boldsymbol{...
C/C++/C#

C言語で配列の長さを取得する

sizeofを使えば配列の長さを自動取得できるようになる。 int A = { 1,2,3,4 }; int size = sizeof(A) / sizeof(int); printf("%d", size);
C/C++/C#

C言語で配列の中身を表示する

lenは配列の長さ、listを配列のポインタとすれば次のようにすれば表示できるようになる。void showVector( int len, int* list) { int i, index = 0; for (i = 0; i < le...
MATLAB/simulink

回転行列を微分する

回転行列の微分は外積因子を用いて\begin{align}\dot{\boldsymbol{R}}=\boldsymbol{R} \boldsymbol{S}(\boldsymbol{\omega})\end{align}ここで\(\ome...
MATLAB/simulink

MATLABで定義したヤコビアンを計算する関数を改造して逆回転を扱えるようにする

あるベクトル2つのベクトルの関係がヤコビアンによって次のように与えられているとする。\begin{align}\boldsymbol{y}= \boldsymbol{J} \boldsymbol{x}\end{align}この時逆問題は\b...
MATLAB/simulink

MATLABで定義した回転行列を計算する関数を改造して逆回転を扱えるようにする

あるベクトル2つのベクトルの関係が回転行列によって次のように与えられているとする。\begin{align}\boldsymbol{y}= \boldsymbol{R} \boldsymbol{x}\end{align}この時逆問題は\be...
MATLAB/simulink

MATLABで状態空間モデルを離散化してシミュレーションする

MATLABで状態空間モデルを離散化し、シミュレーションする。シミュレーションするモデルはバネマスダンパを用いる。連続時間モデル\begin{align}\dot{x}(t)&=Ax(t)+Bu(t)\\y&=Cx(t)\end{align...
MATLAB/simulink

MATLABで回転行列を定義してオイラー角が複数あることを調べる

回転行列\begin{align} \boldsymbol{R}_{x}(\boldsymbol{η}) = \begin{pmatrix} 1 & 0 & 0\\ 0 & \cos \phi & - \sin \phi \\0 & \si...
MATLAB/simulink

MATLABで外積因子を定義する

外積は\begin{align}\boldsymbol{A} \times \boldsymbol{B}=\begin{vmatrix}\boldsymbol{i} & \boldsymbol{j} & \boldsymbol{k} \\A...
MATLAB/simulink

MATLABで回転行列とヤコビアンを一つの行列で表現して6自由度を扱えるようにする

剛体に固定された剛体座標系と地球上に固定されたグローバル座標系を考える。いまグローバル座標系上で定義される位置ベクトル\begin{align}\boldsymbol{\eta}=\begin{pmatrix}\boldsymbol{\et...