投稿

ブログの説明

学校に通わないで学んだことを記しています。間違っているところが何かありましたらご指摘下さると幸いです。コメントに対する返信が遅れる可能性があります。その場合は申し訳ございません。

このブログでは広告を表示しています。このブログ内の投稿記事を検索するには右上の拡大鏡のアイコンを、アーカイブやラベル付けから投稿記事を閲覧するには左上の三重線のアイコンをクリックして下さい。

数式の表示にはMathJaxを利用させていただいています。数式の表示のためにJavaScriptが有効である必要があります。そうでない場合、訳の分からないLaTeXのコードが表示されます。幾何学図形やチャートの表示にはHTML5 CanvasやGoogle Chartを使用しています。その表示のためにもJavaScriptが有効である必要があります。

GStreamer トランスコーダーの初期化に失敗しました

Debian GNU/Linux 8 (Jessie)でXfburn 0.5.2のパッケージをインストールして起動しようとすると次のようなエラーメッセージが表示された。 GStreamer トランスコーダーの初期化に失敗しました: (基本実装にフォールバックします) An error occurred setting gstreamer up for transcoding XfburnはどうやらGStreamer transcoderを使うようだ。 この問題には BunsenLabs Linuxのフォーラムでのやりとり が解決策になった。その解決策とは次のとおり。 $ sudo apt install --no-install-recommends gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly (中略) 以下のパッケージが新たにインストールされます: gstreamer0.10-gconf gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly libopencore-amrnb0 libopencore-amrwb0 libsidplay1 (省略) Xfburnの代わりにBraseroのパッケージをDebianのリポジトリからインストールしようとすると、依存関係でgvfsまでもインストールされてしまう。gvfsは各種daemonを常駐させるのでそれが嫌だった。

clamscan: No supported database files found in...

Debian GNU/Linux 8でclamavというパッケージをインストールしてclamscanを実行したところ、次のようなエラーメッセージが出て実行に失敗した。 # clamscan / LibClamAV Error: cli_loaddbdir(): No supported database files found in /var/lib/clamav ERROR: Can't open file or directory どうやらデータベースのファイルが見つからないようだ。この問題の解決のために手動でfreshclamを実行し、データベースを取得した。 # freshclam これでエラーメッセージは出なくなり、実行に失敗することはなくなった。 $ ps ax | grep freshclam 18522 pts/2 S+ 0:00 grep freshclam どうやらfreshclamのデーモンは稼働していないようだ。そのため手動でfreshclamを実行する必要があったわけだ。

freshclam.log is locked by another process

clamavをインストールしてfreshclamを実行すると次のようなエラーメッセージが出ることがある。 ERROR: /var/log/clamav/freshclam.log is locked by another process ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log). 日本語に訳せば「エラー:freshclam.logは他のプロセスによりロックされています」「内部ロガーの問題」ということ。 clamavをインストールするとfreshclamも依存関係でインストールされ、-dオプションをつけて自動で実行され、daemonモードで稼働し始めるようだ。それを確認してみる。 $ ps ax | grep freshclam 14265 ? Ss 0:25 /usr/bin/freshclam -d --foreground=true 14710 pts/3 S+ 0:00 grep freshclam このとおり。freshclamはデーモンとして働いてくれるのでそれを手動で行おうとすると「ロックされている」というエラーメッセージが出てしまう。よってこの問題を解決する必要はなく、要するにfreshclamを手動で実行する必要はないということ。 どうしても手動でfreshclamを実行する必要があるときは、root権限になってrmコマンドで/var/log/clamav/freshclam.logを削除すればいい。

Debian GNU/LInuxでPrologを始める

SWI-Prologのインストール DebianではGNU Prologを使う選択肢もあるが、ここではSWI-Prologを使うので、swi-prologまたはswi-prolog-xというdebパッケージをインストールする。後者はGUIアプリケーションを開発するためのXPCEというツールキットが含まれているパッケージ。 $ su # apt update # apt install swi-prolog # exit SWI-Prologの起動 インストールが無事に完了したらPrologを起ち上げる。swiplかprologと打ち込んでエンターキーを押せば起動する。 $ swipl $ prolog いろいろなメッセージが表示された後、次のようなプロンプトが表示される。 ?- まずはお決まりのHello World!を表示。 ?- format('Hello World!'). Hello World! true. ?- 次に四則演算。 ?- is(A, 5+7). A = 12. ?- is(S, 5-7). S = -2. ?- is(M, 5*7). M = 35. ?- is(D, 5/7). D = 0.7142857142857143. ?- A, S, M, Dはいずれも変数。変数名の先頭は大文字か_である必要がある。isは引数を2つ取る組み込み述語。is/2というふうに書かれる。/2は引数を2つ取ることを意味する。is/2は英語でunificationを意味するらしい。式の最後にはピリオドが必要。また、同じことを表すのに次のように記述してもいい。isの左辺が変数の場合、isは中置演算子(infix operator)としての役割を持っているようだ。 ?- A is 5 + 7. A = 12. ?- S is 5 - 7. S = -2. ?- M is 5 * 7. M = 35. ?- D is 5 / 7. D = 0.7142857142857143. ?- ついでに2の平方根と半径3の円の面積も計算。累乗には^が使えることに感動。 ?- is(Root, sqrt(2)). Root = 1.4142135623730951. ?- is(CircleArea, 3^2 ...

行列の加法・減法・実数倍・乗法 + R言語

行列同士の足し算と引き算 行列の足し算と引き算は同じ型(同じサイズとも言う)の行列同士で可能。同じ型の行列同士を重ねてちょうど同じ位置にある成分同士を足したり引いたりすればいい。 \[ A = \begin{pmatrix} -3 & 5 \\ 10 & -6 \end{pmatrix} \] \[ B = \begin{pmatrix} 5 & -7 \\ -2 & 8 \end{pmatrix} \] 2×2行列A -3 5 10 -6 2×2行列B 5 -7 -2 8 R言語ではmatrix関数を使って行列を作る。第1引数に行列の要素を、第2引数に行数を、第3引数に列数を指定する。行列の要素は連結関数c()を使ってまとめる。 > A = matrix(c(-3, 10, 5, -6), 2, 2) > A [,1] [,2] [1,] -3 5 [2,] 10 -6 > B = matrix(c(5, -2, -7, 8), 2, 2) > B [,1] [,2] [1,] 5 -7 [2,] -2 8 行列Aと行列Bはともに2×2行列なので足し算や引き算が可能であることが分かる。 \begin{align*} A + B &= \begin{pmatrix} -3 + 5 & 5 + (-7) \\ 10 + (-2) & -6 + 8 \end{pmatrix} \\ &= \begin{pmatrix} 2 & -2 \\ 8 & 2 \end{pmatrix} \end{align*} A + B -3 + 5 5 + (-7) 10 + (-2) -6 + 8 計算結果が正しいかどうかをR言語を使って確認。 > A + B [,1] [,2] [1,] 2 -2 [2,] 8 2 \begin{align*} A - B &= \begin{pmatrix} -3 - 5 & 5 - (-7) \\ 10 -...

数学の行列とその情報処理の初歩ノート

行列とは何か 数学でいう行列はその名のとおり行と列からなる数値の並び。英語ではmatrix(複数形はmatrices)と称されている。行は英語でrowと呼ばれ、列は英語でcolumnと呼ばれている。ちなみに行が横方向の並びを指し、列が縦方向の並びを指している。行は上から順番に第1行、第2行、第3行というふうに称され、列は左から順番に第1列、第2列、第3列というふうに称されている。それらを構成している個々の数値はその行列の成分または要素と呼ばれている。 \begin{pmatrix} a_{11} & a_{12} & a_{13} & \cdots & a_{1n} \\ a_{21} & a_{22} & a_{23} & \cdots & a_{2n} \\ a_{31} & a_{32} & a_{33} & \cdots & a_{3n} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & a_{m3} & \cdots & a_{mn} \end{pmatrix} 行列の型とは 個々の行列は行数x列数のようにその行数と列数によって識別される。それらは行列のサイズ(size)とか行列の次数(order)と呼ばれている。日本語の数学書では行列の型と呼ばれていることが多い。たとえば3行と5列の要素から成る行列は、3×5行列とか3×5型行列などと書き表される。横方向の並びである行数、縦方向の並びである列数の順番であることに要注意。真ん中の×は掛ける(times)ではなくbyであり、3×2ならthree by twoと読まれている。数学では行をmで列をnで表す慣例がある。 4×3行列 5.2 2.8 7.0 7.6 1.9 2.2 4.6 8.1 3.0 6.4 8.3 0.5 数学の流儀だと\begin{bmatrix} 5.2 & 2.8 & 7.0 \\ 7.6 & 1.9 ...

モンティホール問題を図を使って解いてみた Monty Hall Problem

確率論の問題でモンティ・ホール問題とかモンティ・ホールの逆理と呼ばれるものがある。世界最高の知能指数の持ち主とされてギネスブックに載ったという女性コラムニスト、マリリン・ヴォス・サヴァント氏が、雑誌『パレード』の「マリリンに訊け」というコラムで紹介した商品当てクイズに端を発している。ヴォス・サヴァント氏のウェブページではクイズ番組問題と銘打たれている。それによると、その問題とはほぼ次のようなものであったらしい。 http://marilynvossavant.com/game-show-problem/ あなたがとあるクイズ番組に出場したと考えましょう。あなたには3枚の扉の選択肢が与えられます。そのうちの1枚の扉の裏には自動車があり、他の扉の裏には山羊がいます。あなたはそのうちの1枚、例えば1番の扉を選びます。すると、3枚の扉の裏側を知っている司会者が裏に山羊のいる別の扉、例えば3番の扉を開けます。そこで司会者はあなたにこう言います。「2番の扉を選択したいですか」と。ここで選択を変更することがあなたにとって得策ですか? あなたのブラウザはCanvas要素に対応していません。 この問題にヴォス・サヴァント氏はイエス、つまり1番の扉から2番の扉へ変更する必要があると答えた。変更しないならば1/3の確率でしか自動車を当てることができないが、変更するのならば2/3の確率で自動車を当てることができると彼女は読者に説明した。 しかしこの解答に対してこのコラムの読者から多くの反論や批判の投書が寄せられたらしい。その中には確率論や組合せ理論やグラフ理論などの業績で知られる数学者までが含まれていた。それにもめげずヴォス・サヴァント氏はこれらに再反論し、論争を巻き起こしたらしい。 モンティ・ホール問題の内容をちょっと整理してみる。 あなたには3枚の扉の選択肢が与えられます。そのうちの1枚の扉の裏には自動車があり、他の扉の裏には山羊がいます。 まず裏に自動車がある扉を黄色に塗り替えてみよう。その扉は3枚のうちで1枚しかないのだから、その配列の可能性は3通りと考えられるはず。 あなたのブラウザはCanvas要素に対応していません。 あなたはそのうちの1枚、例えば1番の扉を選びます。 出題文の例にならってあなたが選んだとする1番の扉を赤線で囲ってみよう。 あなた...