motchyの備忘録

私にとっては大きな1歩だが、人類にとっては小さな1歩だ。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

Fibonacci数列の一般項をz変換で計算してみる

 高校でやるような数列の漸化式の中には、「定数係数差分方程式」に属するものがある。Fibonacci数列の漸化式はその一例である。今日はこれの一般項をz変換を使ってお手軽に計算してみる。

 Fibonacci数列を離散時間信号として次のように定式化する。
\[ x[0]=0,\;x[1]=x[2]=1,\;x[n+2]=x[n+1]+x[n]\;(n=1,2,\cdots) \]
z変換ではインデックス0も使うから、第0項も0として用意する必要がある。
漸化式は、z変換の言葉ではシステムの信号伝達のダイナミクスであり、初項は初期状態である。

今から漸化式の両辺をz変換するのだが、両側z変換を使うと初期値すなわち初項の影響が消えてしまい、解が0になってしまうから、右側z変換を使う。

$d\in\mathbb{N}$だけ進んだ信号のz変換の計算が必要になるので、先に確認しておく。$x[n]$のz変換を$X(z)$とすると次が成り立つ。
\[ \mathcal{Z}[x[n+d]](z) = \sum_{k=0}^\infty x[k+d]z^{-k} = z^d\sum_{k=d}^\infty x[k]z^{-k} = z^d\left(X(z) - \sum_{k=0}^{d-1}x[k]z^{-k}\right) \]
このことを用いて漸化式の両辺をz変換すると
\begin{align*}
z^2(X(z)-0-1/z) &= z(X(z)-0) + X(z) \\
\therefore\;(z^2-z-1)X(z) &= z \\
\therefore\;X(z) &= \frac{z}{z^2-z-1} = \frac{z}{(z-\alpha)(z-\beta)}\quad\left(\alpha=\frac{1-\sqrt{5}}{2}\,\;\beta=\frac{1+\sqrt{5}}{2}\right) \\
&= \frac{1}{\beta-\alpha}\left(\frac{z}{z-\beta}-\frac{z}{z-\alpha}\right)
\end{align*}
部分分数分解では、次のステップである逆z変換の為にわざと分子に$z$を残しておくのがコツ。
逆z変換により一般項$x[n]$が求まる。
\[ x[n] = \mathcal{Z}^{-1}[X(z)] = \frac{1}{\beta-\alpha}(\beta^k-\alpha^k) = \frac{1}{\sqrt{5}}\left[\left(\frac{1+\sqrt{5}}{2}\right)^k - \left(\frac{1-\sqrt{5}}{2}\right)^k\right] \]
スポンサーサイト

テーマ:数学 - ジャンル:学問・文化・芸術

  1. 2018/05/12(土) 12:30:22|
  2. 複素解析
  3. | コメント:0

XperiaZ3Cの純正カメラアプリ無音化およびスクショ無音化(要root)

以下に述べるファイルを適当にリネームするか、或いは消す。 そうすればカメラのシャッター音だけでなくスクリーンショットのシャッター音も同時に無効化される。
system/media/audio/ui 内の下記4ファイル system/media/audio/camera/common 内の af_success.m4a
system/media/audio/camera/sound1 内の全ファイル

テーマ:モバイル - ジャンル:コンピュータ

  1. 2017/12/10(日) 00:30:12|
  2. 計算機
  3. | コメント:0

Get whole tree of GoogleDrive items at high speed, using BFS-search + batch processing (Python3)

Overview


Recently, I needed to get whole item tree in Google Drive automatically. I found Python3 can handle Google Drive REST v3 API. I came up with an following efficient method.

1.Get all nodes (include information: name, id, mimeType, parents) using files().get() method.
2.Refer each item's parent attribute, then connect to parent correctly.
3.Now you have a Spanning-Tree you wanted.

I run this method on my Google Drive which has 1754 files and 1028 folders, and it took only 17.3 sec to specify whole tree structure.

Preparation


To try codes shown below, you need some burdensome preparation. See this official guide.

code


テーマ:Python - ジャンル:コンピュータ

  1. 2017/11/02(木) 04:48:26|
  2. Python3
  3. | コメント:0

Linuxで作ったQtCreatorのプロジェクトをWindowsでコンパイルする

 また盛大にハマって時間を無駄にした。

症状


 Ubuntu上で作業していた QtCreator (Qt 5.9.2) のプロジェクトを Windows に持ってきて MSVC コンパイラでコンパイルしようとしたら意味不明なエラーが山ほど出た。もちろん OS に依存するような機能は使っていない。エディタ上ではコードは問題なく表示されているのだが、コンパイラーが「;が無ぇ! }が無ぇ! 〇〇.icoが無ぇ!」と叫び散らしている。要するに、エディタは文字コードと改行コードを正しく認識できているが、コンパイラが認識できていない。きっと SJIS の CRLF だと思ってコンパイルしようとしているのだろう。

解決策


 MSVC コンパイラに文字コードとして UTF-8 を指定できればいいのだろうが、方法がわからなかったのでプロジェクトファイル一式の文字コードを SIFT-JIS に、改行コードを CRLF に変えることにした。bash でプロジェクトフォルダに入り、次のコマンドを実行すればよい。WSLを使ってもいい。事前に nkf をインストールしておくこと。

find . -type f -name "*.h" -or -name "*.cpp" -or -name "*.pro" -or -name "*.qrc" | xargs -n 10 nkf --windows --overwrite


Linux 用に戻したければ --windows--unix に変えてもう一度実行すればよい。

副作用


 ビルドの問題は解決されるが、今度はエディタが「UTF-8 でデコードできない」と文句を言ってくるので、「ツール」->「オプション」->「テキストエディタ」->「Behavior」->「既定の文字コード」で System (多分これが SHIFT-JIS)を選択して解決する。

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2017/10/16(月) 00:34:17|
  2. Qt5
  3. | コメント:0

Python上のSqlite3でテーブルの存在確認

 Python3を始めて3ヵ月程経った。今日はSQLiteなるモジュールを弄ってみたが、テーブルの存在確認の方法が分からず時間喰ったのでメモ。
 hoge.db 内にテーブル fuga があるかどうか調べるコード。

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2017/10/01(日) 21:47:05|
  2. Python3
  3. | コメント:0
次のページ

プロフィール

motchy

Author:motchy
制御が好きな電気電子系の学生

検索フォーム

最新記事

最新コメント

月別アーカイブ

カテゴリ

未分類 (1)
数学 (7)
実解析 (0)
複素解析 (3)
線形代数 (0)
確率・統計 (1)
グラフ理論 (1)
ベクトル解析 (1)
物理 (2)
力学 (2)
電子工作 (13)
LTSpice (3)
電源装置 (1)
2段式コイルガン (7)
misc(電子工作) (1)
プログラミング (35)
GNU make (3)
Python3 (2)
HSP (17)
Win32API (1)
Qt5 (5)
Mathematica (6)
Matlab (1)
計算機 (11)
CELSIUS-N465 (1)
X205TA (4)
nexus7 2012 (1)
XperiaZ3C(SO-02G) (0)
gigabeatV30T (4)
Linux (11)
Windows (1)
LaTeX (12)
MathJax (2)
Libreoffice (2)
Origin (3)
Tgif (4)
misc (8)
univ (0)

RSSリンクの表示

リンク

このブログをリンクに追加する

ブロとも申請フォーム

この人とブロともになる

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