Tech Notes

>>|
1/9

複素数の対数領域計算

ComplexPlotというグラフ表示アプリを作った。この手のアプリはDesmosやGeoGebraで良いだろと思うかもしれないが、複素数のプロットがあまり便利でないので、それに特化した表示器を作った次第だ。(リンク)

これを開発するにあたって、問題になったのが計算可能なレンジだ。元々電子回路の周波数vs利得とかの計算を便利にしたくて作ったやつなので、両対数表示とかをしたくなる。しかし対数スケールでズームアウトしていくと、まあまあ簡単に値が計算可能な幅を超えてしまう。

JavaScriptの数値型は倍精度浮動小数で、最大で10^308くらいである。まあ大抵のユースケースで収まることは収まるかもしれないが、5秒くらいズームアウトし続けたらすぐに「端」が見えてしまうのは心許ないといえば心許ない。

巨大な数を安定的に扱う手法といったら対数領域計算である。英語では Logarithmic Number System(LNS) などとも呼ぶらしい。今回初めて実装してみたので、その知見を書き留めておく。

続きを読む

水晶発振回路の動作原理について

恥ずかしながら今まで真面目に勉強してこなかったので、水晶発振回路の動作原理を真面目に調べてみた。

よく使われるのはインバータを用いたこういうやつである。

これの動作を説明できるようになりたい。

続きを読む

AVRマイコンでADCを自動実行する

最近久しぶりに電子工作をやっている。AVRマイコンを触っているのだが、AD変換器に自動実行機能があるのを今更にして知ったのでそれについてまとめる。

1つ大きな注意点も見つけたのでそれも含めてメモ。

続きを読む

macOSでシステムのフォントファイルを読み込む方法(CoreText)

libfontlist」というC++向けのライブラリを公開した。これはシステムに登録されたフォント情報をクロスプラットフォームで読み込めるライブラリだ。無かったので作った。

libfontlistはWindows、Linux、macOSの主要3プラットフォームに対応している。それぞれ頑張って個別に対応したに過ぎないのだが、macOS対応が最も情報が少なく苦労した。そういう訳でこの記事ではその技術的な詳細についてまとめる。

CoreText」というAPIを利用したのだが、公式ドキュメント以上の情報がほぼ無かった。

続きを読む

多次元フーリエ変換から逆格子ベクトルの存在を導く

固体物性の分野を学ぶと、結晶構造の議論においてどうしても避けられないのが逆格子ベクトルの話題だ。筆者は化学専攻ではないが、電気電子専攻として半導体物性を勉強しており、最初に当たった壁がこれだった。

学部生は初回の授業で1次元での話を出され「ああ周期性あるからフーリエ変換するんでしょ、分かる分かる」と言っていると、多次元化したとたんに『ブラべ格子』『基本並進ベクトル』『逆格子ベクトル』『ブリルアンゾーン』などと矢継ぎ早に分かったような分からないような単語を繰り出されて身悶えすることになる。

この記事では、多次元空間上の周期性のある関数を多次元フーリエ変換すると自然に逆格子ベクトルが発生することを確認したいと思う。

続きを読む

エルミート形式・二次形式の直感的解釈

線形代数の世界ではエルミート形式二次形式と呼ばれる形の式がある。

$$ \mathbf{x}^\ast \mathbf{A} \mathbf{x} $$

ここで$\mathbf{x}$は通常の縦ベクトル、$\mathbf{A}$は正方行列である。
$\mathbf{x}^\ast$は$\mathbf{x}$の随伴(転置して複素共役をとったもの)を表す。

量子力学におけるブラケット記法で演算子を挟み込むやつなんかも中身はこれである。割と色々な場面で出てくる式なのだが、これの直感的解釈について。

続きを読む

CMakeで開発したソフトを配布する方法(Windows)

CMakeはC/C++製のプログラムをビルドする際にほぼ必須と言っても良いツールだが、ビルドしたものを配布する際の注意点というものはあまり共有されていないように思う。

まさか万人がソフトウェアをソースコードからビルドするという訳にも行くまい。この記事ではCMakeを利用してソフトウェアを開発し、そのバイナリを配布する際の注意点について書きたいと思う。環境はWindowsに絞る。

とりあえずWindows向けのビルドでは殆どの場合においてMSVCかMinGWを用いるものと思うので、その2ツールを対象に解説する。

続きを読む
>>|
1/9