投稿

2021の投稿を表示しています

ブログの説明

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

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

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

ガウスの消去法(掃き出し法) 行基本変形 行簡約階段形

この投稿は連立n元一次方程式を解くためのアルゴリズムの1つであるガウスの消去法(通称:掃き出し法)について簡単にまとめたもの。逆行列を用いた解法にも若干触れた。また、R言語、GNU Octave、Maxima、Python 3、Juliaを用いた連立一次方程式の解き方についても記した。 ガウスの消去法をプログラミング言語でコーディングすることについてはこの投稿では扱わなかった。それについてはまた別の機会に。 連立n元一次方程式とは 連立一次方程式は英語ではa system of linear equationsと呼ばれている。日本語に直訳すると線形方程式系。 n元とは変数(未知数)がn個あること。一次とは代数式の次数が1つのこと。方程式を構成する代数式の各項が最大で1つの変数しか持っていないこと。代数式とは数学のお馴染みの文字式のこと。代数式には単項式と二項式と多項式がある。 \[ 2x + 3y \quad 1次式 \] \[ 2x + y^2 \quad 2次式 \] \[ 2x^2y + 5y \quad 3次式 \] 方程式とは2つの代数式の等しい関係を等号で表したもの。 一次方程式を直交座標系に描くと直線になる。したがって線形方程式とも呼ばれている。 HTML5 Canvasが有効ではありません。 連立一次方程式は一次方程式の集合なので、同じ直交座標系に直線に複数描かれ、それらの直線同士が交わるところがあればそこが連立一次方程式の解になる。 例えばGeoGebraというアプリケーション・ソフトウェアを使うと、これを視覚化してくれる。GeoGebraの入力欄に連立一次方程式を構成している各々の一次方程式を入力すると直交座標系に直線を描いてくれる。 描かれた直線同士が互いに交わった点の座標がその連立一次方程式の解。 HTML5 Canvasが有効ではありません。 直線同士が完全に平行になって交わるところがなければその連立一次方程式は解を持たない。 HTML5 Canvasが有効ではありません。 直線同士が完全に重なっている場合はその連立一次方程式は無数の解を持つ。 HTML5 Canvasが有効ではありません。 ちなみにGeoGebraはJava言語の仮想マシンがインストールされた複数のプラットフォーム

DebianユーザーがNLTKで自然言語処理の初歩の初歩を試してみた

この投稿は自然言語処理の中で一番初歩的なテキスト分析(字句解析)についての事始め。 ダウンロードとインストール Python 3のdebパッケージとPython3用の NLTK(Natural Language Toolkit) のdebパッケージを公式のリポジトリからダウンロードしてインストールした。 $ su # apt install python3 python3-nltk python3-nltkというdebパッケージは、Debianのバージョンのbusterにもbullseyeにもbookwormにも存在する。 NLTKは、そのホームページの説明等によれば、自然言語処理に必要な道具類をまとめたプラットフォームなのだそうで、しかもオープンソースの企画らしい。 ダウンロードとインストールがうまくいったのでPython3を早速起動し、 NLTKのホームページ に掲載されている簡単なコードを試してみた。 まずはPython3をターミナル・エミュレーター上で起動。 $ python3 Python 3.7.3 (省略) 次にNLTKをインポート。 >>> import nltk 適当に選んだ文字列をsentenceに代入した。sentenceは任意の識別子。 >>> sentence = """A similar argument applies ... to any other a priori judgement.""" >>> print(sentence) A similar argument applies to any other a priori judgement. Python 3ではヒアドキュメントを3つの二重引用符号(""")で囲む。こうした場合、/nなどによって改行を明示せずとも複数行に渡って文字列を入力できる。ヒアドキュメントとはHTMLのpre要素のようなもの。 文字列として選んだのはバートランド・ラッセル著の『哲学の問題』からの一節。 Russell, Bertrand. The Problems of Philosophy . p.140 epub形式

Google Chartsを利用してHPやブログにチャート(グラフ等)を描く方法

ブログなどのウェブ・ページに自分の意見や主張や考えを掲載するときにそれを裏付けるデータがあると説得力が増すかもしれない。そのデータをチャートとして描いて視覚化できれば尚更。 その場合、一般的なのはそれを専門にしている表計算アプリを使うこと。表計算ソフトウェアにはデータを各種チャートの形にして視覚化してくれる機能が大抵備わっている。LibreOfficeのCalcの場合、そのチャートをコピーしてInkscape上に貼り付けることができる。それをPNG形式の画像やSVG形式の画像として保存し、それをウェブ・ページに掲載する方法がある。 他の選択肢としては、HTML5 CanvasやJavaScriptのライブラリを使う手がある。データを視覚化してくれるJavaScriptのライブラリが最近では数え切れないくらい多くある。 今回はGoogle Chartsのライブラリを利用させていただいた。その手順についてこの投稿に書き留める。 2種類のチャートの完成図 同じデータ・セットで2種類のチャートを作ってみた。その完成図が次のとおり。 Google Chartsが有効ではありません。このページを再読み込みをすると有効になることがあります。 1つ目のチャートは日本のマクロ経済のインフレ率の時系列データを折線グラフにしたもの。 2つ目のチャートは同じ時系列データを縦の棒グラフにしたもの。棒グラフだと0に近い値が見えなくなってしまっているためか、そこにマウスのポインタを合わせても値を表示してくれるイベント処理が機能しない。 Google Chartsが有効ではありません。このページを再読み込みすると有効になることがあります。 これらのチャートを描くためのコードをHTMLから順に説明する。 HTMLのコード <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Google Chartでチャートを描いてみた</title> <!-- loader.jsを読み込む --> <script src="https://www.gstatic.co

LibreOfficeで列と行を置き換える(転置)

イメージ
使用したLibreOfficeのバージョンは6.1。現時点の最新版が7.2なので少し古い。 列方向に並んでいる値を行方向に並ぶように置き換えたい。行方向に並んでいる値を列方向に並ぶように置き換えたい。この投稿では、いわゆる「行列の転置」をLibreOffice Calcで行う2つの方法について書き留めておく。 例えば次のように値がセルに入力されているとする。 A B C D E 1 a b c d 2 1 2 3 4 3 4 5 これを次のようにしたい。 A B C D E 1 a 1 2 b 2 3 c 3 4 d 4 5 1つめの方法 まず、変換したい値全体を選んでアクティブセルにする。そしてトップメニューの「編集」などから「切り取り」または「コピー」を選ぶ。 A B C D E 1 a b c d 2 1 2 3 4 3 4 5 転置後の値が入るセルの範囲の一番左上端になるセルを選んでアクティブにする。 A B C D E 1 2 3 4 5 トップメニューの「編集」などから「形式を選択して貼り付け」を選ぶ。 このバージョン(6.1.5.2)のLibreOffice Calcではこの操作でLibreOffice Calc自体が固まってしまう現象が環境によっては起こるので要注意。 「形式を選択して貼り付け」というダイアログボックスが開くのでその中の「行と列を入れ替える」というボタンを押す。 A B C D E 1 a 1 2 b 2 3 c 3 4 d 4 5 2つめの方法 2つめの方法はLibreOffice Calcに組み込まれている函数を使うこと。LibreOffice CalcにもMS Excel同

HTML5 CanvasとJavaScriptで折線グラフを描いてみた

使用した環境は次のとおり。 Chromium Version 90.0 Firefox Browser 78.13.0esr ECMAScript 6 (2015)以降 ECMAScriptはJavaScriptの標準規格。そのバージョンの6以降または2015以降では変数の宣言にletというキーワードが導入された。定数の宣言にはconstというキーワードが導入された。ただしletは予約語ではない。この投稿で掲載するJavaScriptのコードではletとconstを用いた。 JavaScriptにおける変数の詳細についてはまた別の機会に。 HTML5 Canvasで描いた折線グラフ 日本のマクロ経済データの1つであるインフレ率を1960年から2020年まで時系列に折線グラフにしたものが次の図。 このブラウザはHTML5 CanvasかJavaScriptをサポートしていません。 スクリプト言語JavaScriptとHTML5 Canvasの2次元用レンダリングのAPIを利用して今回はこの折線グラフを描いてみた。 HTML HTML5 Canvasを表示するために用意しておくHTML文書の基本的内容は次のとおり。 <!DOCTYPE html> <html> <head> <title>日本のインフレ率の折線グラフ</title> </head> <body> <!-- canvas要素にはid属性と幅と高さを設定する --> <canvas id="JapanInflationRateTimeSeries" width="700" height="400"> このブラウザはHTML5 CanvasかJavaScriptをサポートしていません。 </canvas> </body> <script> <!-- ここにJavaScriptのコードを書く --> </script> </html> ウェブ・ブラウザによってscript要素が最後に読み込まれることを期待してscript要素をbody要素の

指数表記、科学的記数法、工学的記数法、浮動小数点数

科学雑誌や理系の教科書やコンピュータ・プログラミングの書物で次のような数値表記を目にすることがよくある。 \[ 5.972 \times 10^{24} \] \[ 6.62607015 \times 10^{−34} \] \[ 6.02214076 \times 10^{23} \] これらは日本語では 指数 しすう 表記という名前で知られている。英語ではscientific notation(科学的記数法)やstandard index form(標準指数形)と呼ばれている。 指数表記では0以外の数値を次のように10の累乗を掛けた式にして表す。 \[ m \times 10^n \] 以下、mを仮数部、10を基数部、nを指数部と呼ぶことにする。 コンピュータ科学の分野ではEまたはeを使って指数部を表記する。 \[ mEn \] \[ men \] 指数表記を通常の記数法へ変換 指数表記を通常の記数法に変換する方法はその指数部が正の数か負の数かで異なる。 指数部が正の数である場合、仮数部(かけられる数)の小数点を指数部の数だけ右へ移動させる。そして空白の桁には0を与える。例えば次のように。 \[ 4.9 \times 10^6 = 4900000.0 = 4900000 \] 4.9の小数点を右へ6桁移動させると0の桁が5つ加わって4900000になる。これで変換完了。 指数部が負の数である場合、仮数部の小数点を指数部の数だけ左へ移動させる。そして空白の桁には0を与える。例えば次のように。 \[ 4.9 \times 10^{-6} = 0.0000049 \] 4.9の小数点を左へ6桁移動させると\( \dfrac{1}{1000000} \)になって0.0000049になる。これで変換完了。 指数表記へ変換 通常の記数法で表されている数値を指数表記に変換するには次のようにする。 ここでは203000000を例に挙げる。 小数点を最大桁の右隣りまで左へ移動させる。 \[ 203000000 \Rightarrow 2.03000000 \] その小数点から右に何桁あるか数える。この例では8桁。指数部が8と決まる。 有効数字(この例では2.03)を残して残りの0の桁を削除。 \[ 2.03000000 \Rightar