投稿

ブログの説明

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

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

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

LibreOffice Basic ユーザーが定義するデータ型(構造体)

ユーザー定義のデータ型(構造体) この投稿ではLibreOfficeかApache OpenOfficeのマクロ言語であるBasicにおいてユーザー定義のデータ型を宣言する2種類の方法について記す。 ユーザー定義のデータ型はカスタム・データ型と呼ばれていることもある。それは型の違いに関わらず1つ以上の変数をまとめて1つのデータ型とし、そのデータ型に名前を付けたもの。その要素となる変数はメンバーと呼ばれている。 ユーザー定義のデータ型はC言語で言うところの構造体、Pascalで言うところのレコードによく似ている。Pythonの辞書にも似ているが、辞書はハッシュ・テーブルの一種であると解釈されるものかもしれない。 構造体やレコードとクラスとの違いは、構造体やレコードがデータ・プロパティだけを持ち、コード・プロパティを持たないこと。データ・プロパティとは単にプロパティと呼ばれていたりメンバー変数と呼ばれていたりするもの。コード・プロパティとはメソッドと呼ばれていたりメンバー函数と呼ばれていたりするもの。 LibreOffice BasicまたはApache OpenOffice Basicでは、ユーザー定義のデー型(構造体)を次のような2種類の方法で定義することができる。 Type宣言を用いる方法。 UNO(Universal Network Objects)を利用する方法。 Type宣言を用いて構造体を定義 モジュール内のサブルーチンの外にType宣言を記述することによって構造体を定義することができる。 Type宣言はサブルーチンの外側に置く必要があり、Typeというキーワードによって始まり、End Typeというキーワードによって終わる。 次の例では出版物の属性をひとまとまりにしたBooksという構造体を定義している。 REM ***** 構造体を定義 ***** 'VBA拡張 Option Compatible 'Typeを用いた構造体宣言 Type Books BookTitle As String Subtitle As String Author As String Translator As String Publisher As String PublicationDate As D...

HTML5 Canvasで矢印を描いてみた(三角関数を利用)

この投稿ではHTML5 Canvasの2次元コンテキストのAPIを利用して矢印を描くJavaScriptのコードを書いてみた。 ここで描く図は次のようなもの。 このウェブブラウザはHTML5 CanvasかJavaScriptに対応していません。 たったこれだけ。にもかかわらずコードのほうはオブジェクト指向の体裁になるように汎用性を多少持たせてやや大げさに設計してみた。これを更に発展させれば低次元のベクトル空間を描けるものになるかもしれない。 HTMLのCanvas要素 矢印を描くためにHTML5 Canvasの2次元コンテキストのAPIを利用するので、HTML文書のbody要素内にCanvas要素を記述しておく必要があった。それは例えば次のようになる。 <canvas id="arrow" width="250" height="250"> このブラウザはHTML5 CanvasかJavaScritが有効ではありません。 </canvas> Canvasタグのid属性にはこのCanvas要素を一意に特定するための名前を指定する。ここではarrowとした。 widthはキャンバスの幅。heightはキャンバスの高さ。 HTML5 Canvasが有効でないときにはCanvasタグに挟まれた部分の文字列が表示される。 JavaScriptのコード JavaScriptのコードはscriptタグで挟んだscript要素内に記述する。script要素はHTML文章のbody要素の後に置くことが望ましい。少なくともCanvas要素の後である必要がある。 </body> <script> // JavaScriptのコード </script> </html> そうでなければ、例えばCanvas.jsと名付けた別のファイルに保存し、HTML文書内から次のように呼び出すこともできる。 <script type="text/javascript" src="arrow.js"></script> 矢印オブジェクトを返すファクトリ函数 まず矢印オブジェクト...

Lxdeの基本的なショートカットキー(快速鍵)/ホットキー

私は普段使用しているLinux機に軽快なGUIインターフェイスを望んでいるので標準のデスクトップ環境(KDEやXfce等)でなくLxdeをインストールして使っている。さらに入力インターフェイスとしてはキーボードでの操作を好む。なぜだか最近のマウスはチャタリングを起こしやすく故障しやすいので。 キーボードでの操作には、ショートカットキー、またはキーボード・ショートカット、ホットキー、漢字では快速鍵と呼ばれているものがある。そこでそれらの基本的なものを表にしてみた。 働き 快速鍵 Lxpanelメニューを表示 [Alt]+[F1] [Ctrl]+[Esc] Lxpanelメニューを閉じる [Esc] コマンド入力でアプリを起動 [Alt]+[F2] [Windows]+[R] ウィンドウを切り替える [Alt]+[Tab] デスクトップを切り替える [Ctrl]+[Alt]+[←]/[→] デスクトップ1へ [Windows]+[F1] デスクトップ2へ [Windows]+[F2] デスクトップ3へ [Windows]+[F3] ウィンドウを閉じる [Alt]+[F4] ウィンドウを全画面表示 [F11] ウインドウごとデスクトップ移動 [Alt]+[Shift]+[←]/[→] 全てのウィンドウを表示/非表示 [Ctril]+[Alt]+[D] ウィンドウの操作メニューを表示 [Alt]+[Space] ウィンドウの操作メニューを閉じる [Esc] タスクマネージャーを起動 [Ctrl]+[Alt]+[Delete] タスクマネージャーを終了 [Esc] ファイルマネージャーPCManFMを起動 [Windows]+[E] ファイルマネージャーPCManFMを終了 [Ctrl]+[Q] ファイル検索ダイアログを起動 [Windows]+[F] [Space]はスペースキー。 [Windows]はWindowsキーのこと。それは[Alt]の左隣または右隣にある。 ファイル検索のダイアログはファイルマネージャーPCManFMのものなので、それが表示されているデスクトップに表示され...

JavaScriptでオブジェクトを作成する方法

オブジェクト指向言語には大きく分けてクラス・ベースのものとプロトタイプ・ベースのものとがある。JavaScriptはプロトタイプ・ベースのオブジェクト指向としての特徴を備えているとされている。 オブジェクトとは、関連する変数や函数をまとめて名前を付けた参照型の変数のことであり、オブジェクト型変数とも呼ばれている。 JavaScriptでプログラマーが独自にオブジェクトを作るには、 オブジェクト・リテラル、 ファクトリ函数、 Object()コンストラクター、 コンストラクター函数、 クラス構文、 継承 などを用いる方法がある。それぞれについて見ていく。ただし継承についてはこの投稿では触れない。 オブジェクト・リテラル 関連する変数や函数であるプロパティの定義を列挙したオブジェクト・リテラルを変数に代入するとJavaScriptでは簡単にオブジェクトを作ることができる。この方法はオブジェクト・イニシャライザーとも呼ばれている。 ただしこの方法では1つのオブジェクト・リテラルから1つのオブジェクトしか作ることができない。 オブジェクト・リテラルの構文はJSON(JavaScript Object Notation)やPythonの辞書型のそれに似ている。すなわち「{キー:値,キー:値,...}」のようにコーディングし、そのオブジェクト・リテラルを変数に代入するだけでオブジェクトが1つ作られる。オブジェクト・リテラルではこのキーがプロパティ名やメソッド名になる。 オブジェクト・リテラルは次のようにコーディングする。 キーワード 変数名 = { プロパティ名1 : 値, プロパティ名2 : 値, プロパティ名3 : 値 }; キーワードにはletかconstかvarを指定することができる。 プロパティの値に函数式を与えるとそのプロパティはメソッドになる。メソッドは特別な値を持ったプロパティ。メソッドはコード・プロパティとも呼ばれることがある。 キーワード 変数名 = { プロパティ名 : 値, メソッド名 : function(仮引数){} // 函数式 }; 変数に代入されるかプロパティの値に与えられる函数の定義方法は函数式とか函数リテラルと呼ばれている。それに対して独立した函数の定義方法は函数宣言とか...

HTML5 Canvasで写像ダイアグラム(写像図)を描く

HTML5 CanvasとJavaScriptを用いてHTMLドキュメントに数学の写像ダイアグラム(写像図)を描いてみた。この投稿はその備忘録。 HTML5 CanvasかJavaScriptに未対応か無効になっています。 写像ダイアグラムを描きたいHTMLドキュメント内の場所にcanvas要素を埋め込む必要がある。そのcanvas要素は例えば次のように記す。その際にid属性を指定することを忘れずに。HTML5 Canvasはこのidを受け取る。 <canvas id="mapping" width="200" height="200"> HTML5 CanvasかJavaScriptに未対応か無効になっています。 </canvas> canvas要素のwidthとheightという属性はキャンバスの幅と高さを指定するもの。このサイズを適切に指定しないと描かれたオブジェクトがはみ出して見えなくなってしまうことがある。 楕円オブジェクト HTML5 CanvasかJavaScriptに未対応か無効になっています。 HTML5 Canvasを使って楕円を描くためにはellipse()というメソッドを用いることができる。このメソッドの引数は次の順番に指定する。オプションは省略することができる。 ellipse(1,2,3,4,5,6,7,8); 楕円の中心の水平座標を指定。 楕円の中心の垂直座標を指定。 楕円の水平軸半径を非負の値で指定。 楕円の垂直軸半径を非負の値で指定。 楕円の水平軸の傾きを弧度法で指定。 パスの始点を弧度法で指定。 パスの終点を弧度法で指定。 【オプション】楕円を描くパスの方向を反時計回りにしたい場合にtrueと指定。 ただしellipse()メソッドは古いウェブブラウザでは対応していない場合があるので要注意。 次のJavaScriptのコードではコンストラクタ函数によって楕円クラスのようなものを定義している。そしてそれをインスタンス化して各々の楕円オブジェクトを作成し、コンストラクタ函数の中で定義した描画メソッドを呼び出すことで楕円を描くようにしている。 <script> // 楕円のコンストラクタ函...

HTML5 Canvasで楕円を描く

この投稿ではHTML5 CanvasとJavaScriptを用いてHTMLドキュメントに楕円を描くスクリプティング方法について記す。 楕円形を描く HTML5 Canvasの2Dを使って楕円を描くにはellipse()というメソッドを用いることができる。このメソッドの引数は次の順番に指定する。最後のオプションは反時計回りに描きたい場合にだけ指定するもの。 ellipse(1,2,3,4,5,6,7,8); 楕円の中心の水平座標を指定。 楕円の中心の垂直座標を指定。 楕円の長軸半径を非負の値で指定。 楕円の短軸半径を非負の値で指定。 楕円の長軸の傾きを弧度法で指定。 パスの始点を弧度法で指定。 パスの終点を弧度法で指定。 【オプション】楕円を描くパスの方向を反時計回りにしたい場合にtrueと指定。 ただしHTML5 Canvasの2Dのellipse()メソッドは古いウェブブラウザでは対応していない場合があるので要注意。 楕円を描くためのHTMLとJavaScriptのソースコードは次のとおり。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>楕円を描く</title> </head> <Canvas id="myEllipse" width="200" height="200"> HTML5 CanvasかJavaScriptに未対応か無効になっています。 </Canvas> <script> // 角度をラジアンに変換する函数 function toRadian(degrees){ return Math.PI / 180 * degrees; } // HTML5 Canvasを利用する手続き const Canvas = document.getElementById("myEllipse") const Ctx = Canvas.getContext("2d"); // ...

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

この投稿は連立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言語の仮想マシンがインストールされた複数のプラッ...