ロコリンの雑記

アニメ大好きニートのロコリンのブログ。2015年卒(修士)の社会人。学生時代(2010年)から続けてるブログなのでエントリによっては学生ブログと社会人ブログになっています。時系列から察して。
 
 
このブログについて
ブログ内検索
カテゴリ
プロフィール

ロコリン

Author:ロコリン
2017年4月から会社員になる予定のニート。2015年3月まで大学院生でした。
趣味:アニメ/Twitter/ゲーム
今(2015年2月更新):プリキュア/プリパラ/アイカツ/ごちうさ/艦これ

外部リンク
Twitter

スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

4元数の乗法逆元って簡単に求まるんだねww (3次元の回転も触れる) 

昔 (2011年),独学 (Wikipedia) で4元数について触れてみたのですが,除算を定義するために乗法逆元を求めようとして,挫折しました。当時やった方法は,複素数みたいに逆数を有理化する方法を取ろうとしたのですが,複雑すぎてできませんでした。

しかし,今日 (2013年7月3日) 授業で 3D の回転を表現するために4元数について軽く触れ,昔の疑問があっという間に解決してしまいましたww

複素数の逆元

4元数の前に複素数をおさらいします。

\(i^{2} = -1\) となる \(i\) を導入して,\(x, y \in \mathbb{R}\) を用いて複素数 \(z \in \mathbb{C}\) を次のように定義できます。

\[z = x+iy\]

これの共役複素数 \(\overline{z}\) を次のように定義します。

\[\overline{z} = x-iy\]

\(z\) のノルム \(\left|z\right|\) を次のように定義します。

\[\left|z\right| = \sqrt{x^{2}+y^{2}}\]

これらから次式が求まります。(証明略。)

\[z\overline{z} = \overline{z}z = \left|z\right|^{2}\]
\[\therefore\ z^{-1} = \frac{1}{z} = \frac{\overline{z}}{\left|z\right|^{2}}\]

4元数の逆元

複素数の次は4元数です(3元数は糞だからイラネ)。次のような \(i, j, k\) を定義します。

\[i^{2} = j^{2} = k^{2} = -1\]
\[ij = k, jk = i, ki = j\]

このような \(i, j, k\) は次のような性質を持ち,乗算に関して可換ではありません。(証明は自分でやれ。)

\[ji = -ij, kj = -jk, ik = -ki, ijk = -1\]

これらの \(i, j, k\) を用いて,4元数 \(q \in \mathbb{H}\) を次のように定義します。(\(w,x,y,z \in \mathbb{R}\))

\[q = w+ix+jy+kz\]

共役4元数 \(\overline{q}\) を次のように定義します。

\[\overline{q} = w-ix-jy-kz\]

\(q\) のノルム \(\left|q\right|\) を次のように定義します。

\[\left|q\right| = \sqrt{w^{2}+x^{2}+y^{2}+z^{2}}\]

これらから次式が求まります。(証明略。)

\[q\overline{q} = \overline{q}q = \left|q\right|^{2}\]
\[\therefore\ q^{-1} = \frac{1}{q} = \frac{\overline{q}}{\left|q\right|^{2}}\]

へぇ。

2次元 (複素数) の回転

ついでなので回転についてもメモします。

2次元の点 \(P(x,y)\) を原点中心に角度 \(\theta\) 回転した点を \(P'(x',y')\) とします。\(P\) を複素数 \(p = x+iy\),\(P'\) を \(p' = x'+iy'\) に対応させ,次の乗算で2次元の回転を表せます。

\[p' = zp\]

ここで

\[z = e^{i\theta} = \cos\theta+i\sin\theta\]

3次元 (4元数) の回転

3次元の回転を表すのに4元数が使えます。(理由は知りたきゃググれ。)

3次元の点 \(P(x,y,z)\) を回転した点を \(P'(x',y',z')\) とします。\(P\) を4元数 \(p = w+ix+jy+kz\),\(P'\) を \(p' = w'+ix'+jy'+kz'\) に対応させます。\(w, w'\) は任意の実数ですが,\(w = w' = 0\) とすると計算が楽です。次の乗算で3次元の回転を表せます。

\[p' = qpq^{-1}\]

ここで

\[q = \cos\frac{\theta}{2}+(ia+jb+kc)\sin\frac{\theta}{2}\]
\[a^{2}+b^{2}+c^{2} = 1\]

\(\boldsymbol{v} = (a,b,c)\) は回転軸で,\(\theta\) は回転角です。なお,\(\left|q\right|^{2} = 1\) なので \(q^{-1} = \overline{q}\) になります。

思ったこと

独学するより授業で習ったほうが早いのウケるww でも社会に出たら授業なんて受けられないんですよね…(◞‸◟)

スポンサーサイト

フーリエ解析 2: C++ で高速フーリエ変換 (FFT) 

1 まえがき

ブログの更新間隔は忙しさに比例する法則 (←経験則)。5月からアルバイトを始め、さらに同じく5月から外国語の文献を講読してスライドにまとめる必修科目に追われ、それ以外のことを何もしていませんでしたorz 久々のブログ更新です。

そろそろ高速フーリエ変換 (FFT) の自前ライブラリを用意しないとなぁ…と思っていました。しかし、FFT の原理は正直言ってまだ完全には理解していません。そのため、「高速フーリエ変換 C++」でググってみたのですが、すぐに理想的な実装が見つかりました。

めでたしめでたし。なのですが、とりあえず私も実装してみたいなぁと思って実装してみました。といっても、ほとんど上記ブログの実装と変わりありません。ついにネタ切れで他者ブログのパクりに走ってしまいましたorz 丸パクりだと意味がないので、自分なりに機能を追加しています。イテレータとコピーコンストラクタに対応しただけですけど。

2 フーリエ変換

2.1 フーリエ変換

フーリエ変換とは、複素関数 (または実関数) から別の複素関数への変換です。関数 \(f: \mathbb{C} \to \mathbb{C}\) のフーリエ変換を \(F: \mathbb{C} \to \mathbb{C}\) とすると、フーリエ変換は次の積分で表されます。ここで \(i^{2}=-1\) です。

\[F\left(\omega\right) = \int_{-\infty}^{\infty}f\left(t\right)e^{-i\omega t}dt\]

フーリエ変換には逆変換 (フーリエ逆変換) が存在し、次の積分によって \(F\left(\omega\right) \) から \(f\left(t\right)\) を得ることができます。 (例外はありますが細かいことは気にしない。)

\[f\left(t\right) = \frac{1}{2\pi}\int_{-\infty}^{\infty}F\left(\omega\right)e^{i\omega t}d\omega\]

この演算にどんな意味があるかというと、例えば \(f\left(t\right)\) が時間 \(t\) の関数 (時系列信号) であれば、\(F\left(\omega\right)\) は角周波数 \(\omega\) の関数 (スペクトル) になります。

2.2 離散フーリエ変換

離散フーリエ変換 (DFT) とは、離散信号に対して行うフーリエ変換みたいなものです。

時系列信号 \(f\left(t\right)\) のある時間区間 (半開区間) \(\left[t_{0}, t_{0}+\Delta t\right) = \left\{t \mid t_{0} \le t < t_{0}+\Delta t\right\}\) 内の \(N\) 点をサンプリングしたものを \(x_{n}\) とします (ここで \(n \in \left\{n \in \mathbb{N} \mid 0 \le n < N\right\}\))。

\[x_{n} = f\left(t_{0}+\frac{n}{N}\Delta t\right)\]

\(x_{n}\) の離散フーリエ変換 \(X_{k}\) は次のようになります (ここで \(k \in \left\{k \in \mathbb{N} \mid 0 \le k < N\right\}\))。

\[X_{k} = \sum_{n=0}^{N-1}x_{n}\exp\left(-i\frac{2\pi}{N}kn\right)\]

離散フーリエ逆変換 (IDFT) は次のようになります (ここで \(n \in \left\{n \in \mathbb{N} \mid 0 \le n < N\right\}\))。

\[x_{n} = \frac{1}{N}\sum_{k=0}^{N-1}X_{k}\exp\left(i\frac{2\pi}{N}kn\right)\]

2.3 高速フーリエ変換

高速フーリエ変換 (FFT) とは、離散フーリエ変換 (DFT) を高速に計算するアルゴリズムです。DFT の計算量は \(O\left(N^{2}\right)\) となり、大きなデータに対しては非常に時間がかかります。FFT は計算手順を工夫することによって計算量を \(O\left(N\log N\right)\) に下げました。ただし、FFT においては、サンプル点数 \(N\) は 2 のべき乗に制限されます (\(N \in \left\{2^{n} \mid n \in \mathbb{N}\right\}\))。

続き →

自作問題1: 扇形 

ケーキ作りの手伝いでボウルを見ていたら幾何学についての自作問題を思いつきました。LaTeX で書いた PDF ファイルをうpしました。

blog_20120328_0.pdf
PDF ファイル
blog_20120328_0.7z
LaTeX ソースファイル (7z アーカイブ)

なお、弧の記号を出す LaTeX コマンドは『弧ABを記号で表すTeXコマンド』 (よしいずの雑記帳さん) からお借りしました。

1 問題

半径 \(r\) の円がある。この円の中心 \(O\) から半直線が 2 本伸びている。それぞれの半直線と円の交点をそれぞれ \(A\), \(B\) とする。鋭角 \(\angle AOB\) を \(\theta\) とする (\(0 < \theta < \pi\))。点 \(O\) から線分 \(\overline{AB}\) に垂線を引き、線分 \(\overline{AB}\) と垂線との交点を \(C\), 弧 \(\stackrel{\Large\mbox{$\frown$}}{AB}\) と垂線との交点を \(D\) とする。 (図1)

扇形
図1 扇形
  1. 半径 \(r\) の円の面積 \(S\) を求めよ。
  2. 半径 \(r\), 中心角 \(\theta\) の扇形の面積 \(S'=S_{1}+S_{2}\) を求めよ。
  3. 三角形 \(AOB\) の面積 \(S_{1}\) を求めよ。
  4. 扇形から三角形 \(AOB\) を除いた面積 \(S_{2}\) を求めよ。
  5. 線分 \(\overline{OC}\) の長さ \(h\) を求めよ。
  6. 線分 \(\overline{CD}\) の長さ \(d\) を求めよ。
  7. 弦 \(\overline{AB}\) の長さ \(c\) を求めよ。
  8. 前問の \(d\), \(c\) を用いて \(r\), \(\theta\) を表せ。
続き →

代数学の初歩を独学: 群、環、体 

私が通っていた高専や、今通っている大学では、微分積分を基礎とした解析学を中心に数学を習います。しかしながら、それ以外の数学、例えば集合論、代数学、論理学、幾何学のような数学についてはほとんど触れません。そこで、私は習っていない数学を独学したいと考えています。

この記事では、代数学の初歩となる代数的構造として、代数系、群、環、体を定義します。

1 代数系

代数系は、集合 \(S\) と二項演算 \(\circ\) の組 \((S,\circ)\) で、次の公理を満たすものです。

  1. \(S\) の任意の元 \(a\), \(b\) について、\(a\circ b\in S\) となる。

これを「演算 \(\circ\) は閉じている」といいます。二項演算 \(\circ\) は写像で、\(\circ:S\times S\to S\) と表されます。

続き →

常微分方程式 1 

久々の数学記事です。学生が適当に書いているので参考文献としての使用は不適です。なぜかというと検閲や審査を受けていないからです。間違いや提案などがあればコメントや Twitter やメールフォームなどでお知らせしていただけると幸いです。

1 微分方程式って?

微分方程式とは、未知関数の導関数を含んだ方程式です。特に、未知関数が 1 変数関数であるものを常微分方程式といいます。未知関数が多変数関数であるものを偏微分方程式といいます。

ところで、方程式と恒等式の違いはわかりますか? 方程式はある条件下でのみ成立する等式です。一方、恒等式は常に成り立つ等式です。恒等式は方程式に含まれます。

微分方程式は自然現象や工学上の多くの法則や問題を記述しています。そのため、これを解くことは科学者や技術者にとっても有益であるといえます。

ところが、この微分方程式というのはそう簡単に解けるとは限りません。解けないか解くのが困難な微分方程式がほとんどです。そんな微分方程式の中でも、特殊な形をしているものは解法があります。そういうのを少しずつまとめていけたらいいなぁと思います。

続き →
最新記事
最新コメント
FC2カウンタ
やりたいゲーム

艦これはやってる

神姫PROJECT かんぱに☆ガールズ オンラインゲーム ロードオブワルキューレ オンラインゲーム
欲しい
最近買ったもの
Amazon 検索
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。