二次元平面上に置かれた二点間の距離を求める
二次元平面上に置かれた二点間の距離は
\begin{align}
d(p_{1},p_{2})=\sqrt{(x_{2}-x_{1})^2+(y_{2}-y_{1})^2}
\end{align}
で与えられる。カレントディレクトリに
function d =distance(P1,P2) d=sqrt((P2(1,1)-P1(1,1))^2+P2(1,2)-P1(1,2)^2); end
P1=[1,1]; P2=[2,2]; distance(P1,P2)
巡回セールスマン問題がおもしろそうなのでmatlabでシミュレーションしてみる #1
巡回セールスマン問題とは、あるセールスマンが複数の都市を訪れるとき、どのような順番で巡回すれば最も効果的(時間、移動距離、交通費等)かを解くグラフ理論の有名な問題の一つである。
この問題の難しい点は巡回する都市の数が多くなると計算量が爆発的に増えてしまい、コンピュータを用いての解析でさえ困難にしてしまう点にある。
今回は少ない有限の都市(以降ノード)を定義し、その点列について巡回セールスマン問題を考えていきたいと思う。
とりあえず次のプログラムでノードを設定することにする。
min=3; max=10; num=[min,max]; X=[-10,10]; Y=[-10,10]; A=randi(num); point=zeros(A,2); for i=1:1:length(point) point(i,:)=[randi(X),randi(Y)]; end B=randi([1,A]); startpoint=point(B,:);
都市といっても座標さえ与えてあればいいと思うのでこれで。
このプログラムは3~10個の整数の乱数を生成する。巡回セールスマン問題を解く上で都市(point)が10個もポイントがあれば十分だろう。
始点(startpoint)も乱数で与えられる。次回は組み合わせの個数を計算してみようと思う。
位相空間の定義を眺める
集合に対し,部分集合の族が次の条件
\begin{align}
S \in \mathcal{O} ,\phi \in \mathcal{O}\\
U_{1} , \cdots , U_{m} \in \mathcal{O} \Rightarrow \bigcap_{k=1}^{m} U_{k} \in \mathcal{O}\\
U_{\lambda} \in \mathcal{O} (\forall \lambda \in \Lambda) \Rightarrow \bigcup_{\lambda \in \Lambda} U_{\lambda} \in \mathcal{O}
\end{align}
を満たしているとき、をの位相という。 また、位相の定められた集合の組みを位相空間という。
さて・・・これが何に使えるか・・・
プラトンの多面体定理をオイラーの多面体定理を使わずに証明する
正角形の内角の和は
\begin{align}
\pi (n-2)
\end{align}
より、一つの角は
\begin{align}
\frac{\pi (n-2)}{n}
\end{align}
となる。
ここで、正多角形をいくつか張り合わせ立体を作ることを考える。いくつか張り合わせ立体にするためには平面にならないようより小さくしなければならないので
\begin{align}
\frac{ \pi (n-2)}{n} x < 2 \pi
\end{align}
これを整理すれば
\begin{align}
(n-2)(x-2) < 4
\end{align}
よりこれを満たすものは
\begin{align}
(n,x)=(3,3),(3,4),(3,5),(4,3),(5,3)
\end{align}
これらはそれぞれ、正四面体、正八面体、正二十面体、正六面体、正十二面体に対応している。
pythonで記述した関数を別ファイルに記述し直してimportする
いつも忘れるのでまとめておく。
pythonのバージョンはpython3.7を利用している。
始めに次のようなコードを考える。
print('Hello! python')
import greeting
greeting.helloworld()
def helloworld(): print('Hello! python')
ここで、greeting.pyを
def helloworld(): print('Hello! python') def hey(): print('hey') def hello(): print('hello')
from greeting import hey hey()
異なるブロック線図で表されるシステム同士を等価変換する条件を求める
下図で示すようなシステムの伝達関数を考える。
まず、このシステムの伝達関数は
\begin{align}
W_{1}(s)=\dfrac{G(s)}{1+G(s)H(s)}
\end{align}
で表すことができる。
ここで次のような別のシステムについて考える。
\begin{align}
W_{2}(s)=\dfrac{G_{1}(s) G_{2}(s)}{1+G_{2}(s)H'(s)+G_{1}(s)G_{2}(s) }
\end{align}
ここでが
\begin{align}
G(s)&=G_{1}(s) G_{2}(s)\\
H(s)&=1+\dfrac{H'(s)}{G_{1}(s)}
\end{align}
であれば伝達関数は
\begin{align}
W_{2}(s)=\dfrac{G(s)}{1+G(s)H(s)}
\end{align}
となり、は等価となる。
ルービックキューブの自由度
の立方体で作られるルービックキューブの回転は、重複と逆回転を考えなければ
\begin{align}
24n
\end{align}
となるが、最小の回転軸数は
\begin{align}
3(n-1)
\end{align}