コンピューターで複素数を表す時は、通常は実部と虚部の組をそれぞれ浮動小数点数として持つ。
複素数の演算は、数学的には 続きを読む
コンピューターで複素数を表す時は、通常は実部と虚部の組をそれぞれ浮動小数点数として持つ。
複素数の演算は、数学的には 続きを読む
(倍精度)浮動小数点数でいろいろ遊ぶ際に、 Lua が便利なのではないかと思った。以下、特に断らない限り「浮動小数点数」と言ったら倍精度のものを指す。
Lua はC言語で実装されていて、数値の扱いについてはC言語と近い挙動を示すと考えられる。C言語と違って累乗の演算子 (x^y
) があるのが地味に便利である。
Lua 5.2 以降では、浮動小数点数の16進表記をサポートするようになった。ソースコード中にリテラルで 0x1.fp2
と書けるし、文字列から数値に変換するときに tonumber("0x1.fp2")
と書けるし、数値から文字列に変換するときは %a
または %A
を使って string.format("%a",7.75)
と書ける。
あとは、標準ライブラリに足りない機能があったときに簡単にC言語で拡張ライブラリを書ける。
Raspberry Pi の GPIO に赤外線 LED をつけてリモコンとして使おう。
ネット上のブログ記事の情報は古い場合があるし、そもそも環境が違って(Raspbian vs Arch Linux)参考にならないかもしれない。ネットの情報は参考程度にして、ソフトウエアのマニュアル等を参照するのが大切である。
使う GPIO の番号は選択の余地があるが、適当に GPIO17=出力 (LED), GPIO27=受信 とした。
Linux で赤外線リモコンの信号を送受信するための LIRC というソフトウエアがあるらしいのでそれを使う。
Arch Linux のパッケージになっているのでラクチン。
# pacman -S lirc
/boot/config.txt
を編集して、 LIRC をロードする。
/boot/overlays/README
を参照。例として lirc が書いてあった。
# nano /boot/config.txt
dtoverlay=lirc-rpi,gpio_out_pin=17,gpio_in_pin=27
を書き加える。
lirc をロードするのに modprobe
を叩いたり /etc/modules
を編集したりは、しない。
(この辺で再起動をかける?)
systemctl start で lircd を起動する。systemctl enable するとラズパイの起動時に自動で起動してくれるはず。
# systemctl start lircd
mode2 コマンドで、受信したものを吐かせる。
# mode2 -d /dev/lirc0
適当にリモコンを向けて、
space (数字)
pulse (数字)
の羅列が出てきたら多分OK。
irrecord コマンドを使い、リモコンの信号をファイルに記録する。
# irrecord -n -d /dev/lirc0 lircd.conf
メッセージの指示に従う。
途中で、 Enter name of remote と聞かれたので、 homeceiling と入力した。出力ファイル名は homeceiling.lircd.conf となった。
Enter name of remote (only ascii, no spaces) :homeceiling Using homeceiling.lircd.conf as output filename
個別のボタンを登録する段になって Something went wrong: Cannot decode data
といわれ、最後に Try using the -f option.
と出てきたので、 -f
オプションをつけて再実行した。
# irrecord -n -f -d /dev/lirc0 lircd.conf
homeceiling.lircd.conf
ができた。
# cp homeceiling.lircd.conf /etc/lirc/lircd.conf.d/
irsend SEND_ONCE (リモコン名) (ボタン名)
で信号を送れる。
# irsend SEND_ONCE homeceiling lighter
Canon 製の一部の一眼レフカメラ/ミラーレスカメラには赤外線センサーがついていて、純正もしくは互換品の赤外線リモコンを買うとカメラに触れずにシャッターが押せる。(エントリーモデルの安い機種だと赤外線センサーがついていなかったりするので注意)
純正品のリモコンとしては Canon RC-6 が販売されている。Amazonとかを覗くと、 RC-6 互換のリモコンが山ほど売られている。
動作モードとしては、以下の二つがあり、リモコン側で切り替えられる。
有線のリモートスイッチと違って、赤外線リモコンを使うには、カメラ側の動作モードをリモコンモードにしなければいけない。
この赤外線リモコンが送る信号は割と単純で、以下のページで解析されている。
www.doc-diy.net :: Canon RC-1 remote control reverse engineered
AVRとかのマイコンと赤外線LEDを組み合わせれば、自作の赤外線リモコンを作ることもできる。上記のWebサイトにも作例がある。
www.doc-diy.net :: DIY Canon RC-1 IR remote control clone
というわけで赤外線リモコンを自作しようかと思ったが、既製品で良さそうなのを見つけたのでそれを買ってしまった。赤外線が結構強力で、2.5mmステレオケーブルを繋げば有線リモコンとしても使える。欠点があるとすれば、電池がやや特殊なことか。
大抵のプログラミング言語には指数関数 exp や三角関数 sin, cos, tan などの初等関数が用意されている。これらの関数はよく使うので、標準に用意されているというのは合理的だろう。しかし、初等関数の組み合わせで書けるような関数がわざわざ専用の関数として用意されている場合がある。 続きを読む
テキストエディタで HTML 文書を直書きしていて、 MathML で数式を書きたいけど MathML 直書きは嫌だ!という時。Pandoc を使えば、ターミナルで手軽に LaTeX 形式の数式を MathML に変換できる。
例:
$ pandoc -f latex -t html5 --mathml \(\frac{1}{e^z-1}\) ^D <p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mfrac><mn>1</mn><mrow><msup><mi>e</mi><mi>z</mi></msup><mo>−</mo><mn>1</mn></mrow></mfrac><annotation encoding="application/x-tex">\frac{1}{e^z-1}</annotation></semantics></math></p>
太字の部分が自分で入力する部分である。(^D は Control-D の意)