読者です 読者をやめる 読者になる 読者になる
MENU

sympyで線型代数学の問題を解く

python 数学

はじめに

線型代数学では掃き出し法や正規直交化法などなかなか疲れる手計算が多いかと思います。入試などでは手計算をミスなくこなす必要があるかと思いますが、実際に線型代数学を使いたい場面では具体的な値の計算は計算機にやってほしいことがほとんどだと思います。

そこで、この記事では記号計算をやってくれるsympyを用いて線型代数学の諸問題を解く方法について書きます。

教養の線形代数

教養の線形代数

線型代数入門 (基礎数学1)

線型代数入門 (基礎数学1)

これらを見た意味は特にないです。持っている本だというだけです。

ベクトルと空間座標の基本について

$\boldsymbol{a} = \left[ 1\ 1\ -1 \right]^T, \boldsymbol{b} = \left[ 2\ 0\ 1\right]^T$のとき、$\boldsymbol{a}$と垂直な単位ベクトル$\boldsymbol{e}$を求めよ。

あるベクトルに垂直な単位ベクトルは次の式で求めることができます。

$$ \boldsymbol{b - \frac{a \cdot b}{| a |^2} a } $$

これをsympyで計算させます。

a, b = symbols('a b')
a = Matrix([1, 1, -1])
b = Matrix([2, 0, 1])
u = b - ( (transpose(a) * b ) / a.norm()**2 ).norm() * a
u.normalized()

これを実行すると、$ \left[ \begin{matrix} \frac{5 \sqrt{42}}{42} \\ - \frac{\sqrt{42}}{42}\\ \frac{2 \sqrt{42}}{21} \end{matrix} \right]$という計算結果が得られます。

求めるべき単位ベクトルはこのベクトルと反対向きのものもあるので、答えは次のようになります。

$$ \boldsymbol{e} = \pm \left[\begin{matrix} \frac{5 \sqrt{42}}{42}\\ - \frac{\sqrt{42}}{42}\\ \frac{2 \sqrt{42}}{21} \end{matrix} \right] $$

平面$\pi: x+3y+2z+1=0$と並行な平面$\alpha$が点$(1,-1,-2)$を通るとする。 (1) 平面$\alpha$の方程式を求めよ。
(2) 平面$\alpha$と直線$L: \frac{x-2}{-2} = \frac{y}{2} = \frac{z+1}{1}$との交点$B$を求めよ。

(1) について 平面$\pi$は点$(1,3,2)$を法線ベクトルとし、明らかに点$(-1,0,0)$を通過するので次のように平面を指定できます。(もっといい感じに指定する方法があるかもしれませんが)

x, y, z = symbols('x y z')
p = Plane(Point3D(-1,0,0), normal_vector=(1,3,2))

平面$\alpha$は平面$\pi$に並行なので、平面$\pi$と同じ法線ベクトルをもち、点$(1,-1,2)$を通るので次のように求めることができます。

alpha = Plane(Point3D(1,-1,2), normal_vector=(1,3,2))
alpha.is_parallel(p)

平面$\alpha$は平面$\pi$と並行なのでis_parallelを用いて確認するとTrueとなります。

(2)について 直線$L$は点$(2, 0, -1)$および点$(2-2, 0-2, -1-1)$を通るので次のように指定できます。

l = Line3D(Point3D(2,0,-1), Point3D(2-(-2),0-2,-1-1))

直線$L$と平面$\alpha$の交点はintersectionによって求めることができます。

alpha.intersection(l)

この結果より、$(-4, -2, -2)$で平面$\alpha$と直線$L$が交わることが分かります。

2個の1次方程式 $$ x + 2 y + 3 z = 1\\ 3x + 2 y + z = -1 $$ の表す直線のベクトル表示を求めよ。

plane1 = Plane(Point3D(1,0,0), normal_vector=(1, 2, 3))
plane2 = Plane(Point3D(0,0,-1), normal_vector=(3,2,1))
plane1.intersection(plane2)

2点$\boldsymbol{a, b}$を通る直線のベクトル表示は$(1-t)\boldsymbol{a} + t \boldsymbol{b}$で求めることができます。上のコードの結果が$(-5,9,-4)$として得られるので、次のようにベクトル表示を求めます。

t = Symbol('t')
(1-t) * Matrix([-1,1,0]) + t * Matrix([-5,9,-4])

係数部分を取り出し媒介変数としてまとめてしまえば次のベクトル表示に変形できます。 $$ \begin{bmatrix} x\\ y\\ z \end{bmatrix} = \begin{bmatrix} -1\\ 1\\ -4 \end{bmatrix} + t \begin{bmatrix} 1\\ -2\\ 1 \end{bmatrix} $$

行列と行列式および連立1次方程式の解

行列の計算

行列の積$ \begin{bmatrix} -1 & 2 & 1 \ 3 & 2 & 1 \end{bmatrix} \begin{bmatrix} 4 & -1 & 1 \\ 2 & 2 & -3\\ 1 & 1 & 0 \end{bmatrix} $を求めよ。

この問題は特にsympyでやらなくても計算できますが行列を定義すれば演算することができます。

A = Matrix(([-1,2,1],[3,2,1]))
B = Matrix(([4,-1,1],[2,2,-3],[1,1,0]))
A * B

行列式

行列式$ \begin{vmatrix} 2 - \lambda & 3 & -1 \\ 2 & 1 - \lambda & 1 \\ 1 & -1 & 4 - \lambda \end{vmatrix} $を求めよ。

このような記号を含んだ問題でも行列式を求めることができます。

A, B, lmd = symbols('A B lambda')
A = Matrix(([1,2,1], [2,-1,1], [3,1,2]))
B = Matrix(([2-lmd,3,-1], [2,1-lmd,1], [1,-1,4-lmd]))

これを実行すると、 $$ \lambda^{3} + 7 \lambda^{2} - 10 \lambda - 8 $$ を得ることができます。

逆行列と連立1次方程式

$A = \begin{bmatrix} 2 & 1 & 0 \\ 1 & -1 & 2 \\ -1 & 0 & -1 \end{bmatrix} $の逆行列を余因子行列と行列式から求めよ。

逆行列$A^{-1}$は余因子行列$\tilde{A}$と行列式$|A|$を用いて次のように書くことができる。 $$A^{-1}=\frac{\tilde{A}}{|A|}$$

なお、余因子行列はadjugateで求めることができます。したがって、次のように書けば逆行列を求めることができます。

A = Symbol('A')
A = Matrix(([2,1,0], [1,-1,2], [-1,0,-1]))
A.adjugate() / A.det()

当然、逆行列が欲しい場合は直接invを用いて計算することができます。

A.inv()

連立方程式 $ \begin{cases} x_1 - x_2 + 2 x_3 = 8 & \\ 2 x_1 + 3 x_2 + x_3 = 5 & \\ - x_1 + 4 x_2 + 4 x_3 = 1 \end{cases} $を解け。

  • solveを使って解く方法(1)
x1, x2, x3 = symbols('x1 x2 x3')
solve([x1-x2+2*x3-8, 2*x1+3*x2+x3-5, -x1+4*x2+4*x3-1],[x1,x2,x3])
  • solveを使って解く方法(2)
solve([Eq(x1-x2+2*x3-8), Eq(2*x1+3*x2+x3-5), Eq(-x1+4*x2+4*x3-1)],[x1,x2,x3])
  • linsolveを使って解く方法
system = Matrix(([1,-1,2,8], [2,3,1,5],[-1,4,4,1]))
linsolve(system, (x, y, z))

solveを使う方法では、それぞれの方程式を右辺0となるように移項し、変数を指定します。linsolveで解く場合には拡大係数行列$\boldsymbol{[A|b]}$をつくり、変数名を指定します。

正規直交基底と固有値固有ベクトルおよび対角化

正規直交基底

$a_1 = [1\ 1\ 0\ 0]^T, a_2 = [0\ 1\ 1\ 0]^T, a_3 = [0\ 1\ 1\ 1]^T, a_4 = [1\ 2\ 0\ 1]^T$で与えられる$\mathbb{R}^4$の基底${a_1, a_2, a_3, a_4}$を正規直交基底に変換せよ。

基底を行列としてGramSchmidtに与えれば正規直交基底を求めることができる。このときデフォルトの状態では正規化を行わないので正規直交基底を求めたい場合はTrueを指定する必要がある。

A = [Matrix([1,1,0,0]), Matrix([0,1,1,0]), Matrix([0,1,1,1]), Matrix([1,2,0,1])]
GramSchmidt(A, True) # 正規化をしない場合はFalseのままでよい

正規直交基底は次のようになります。 $$ \left [ \left[\begin{matrix}\frac{\sqrt{2}}{2}\\ \frac{\sqrt{2}}{2}\\ 0\\ 0 \end{matrix}\right], \quad \left[\begin{matrix}- \frac{\sqrt{6}}{6}\\ \frac{\sqrt{6}}{6}\\ \frac{\sqrt{6}}{3}\\0\end{matrix}\right], \quad \left[\begin{matrix}0\\0\\0\\1\end{matrix}\right], \quad \left[\begin{matrix} - \frac{\sqrt{3}}{3}\\ \frac{\sqrt{3}}{3}\\ - \frac{\sqrt{3}}{3}\\ 0\end{matrix}\right] \right ]$$

固有値固有ベクトル

行列$ \begin{bmatrix} 3 & 2 \\ -2 & 3 \end{bmatrix} $の固有値固有ベクトルを求めよ。

固有値eigenvals固有ベクトルeigenvectsでもとめることができる。

A = Matrix(([3, 2], [-2,3]))
A.eigenvals()
A.eigenvects()

これを実行すると固有値$3-i$に対して固有ベクトル$\begin{bmatrix}i\\ 1\end{bmatrix}$、固有$3+2i$に対して固有ベクトル$\begin{bmatrix}-i\\ 1\end{bmatrix}$が求まります。

対角化

行列$A = \begin{bmatrix} 3 & 4 \\ -1 & -2 \end{bmatrix} $を対角化し、$An$を求めよ。

A = Matrix(([3, 4], [-1,-2]))
P,D = A.diagonalize() # 対角行列D = P^{-1}AP

対角化できる行列の場合はdiagonalizeを用いて対角行列$D$と正則行列$P$を同時に求めることができます。

対角行列$D=P^{-1}AP$を$n$乗すると$D^{n}=P^{-1}A^{n}P$となるので$An=PD^{n}P^{-1}$となります。

n=Symbol('n')
P * D**n * P.inv()

これを実行すると次の行列が得られる。 $$ \left[\begin{matrix}- \frac{\left(-1\right)^{n}}{3} + \frac{4}{3} 2^{n} & - \frac{4 \left(-1\right)^{n}}{3} + \frac{4}{3} 2^{n}\\ \frac{\left(-1\right)^{n}}{3} - \frac{2^{n}}{3} & \frac{4 \left(-1\right)^{n}}{3} - \frac{2^{n}}{3}\end{matrix}\right] $$

ジョルダン標準形

行列 $ A = \begin{bmatrix} 0 & 1 & -1 \\ 2 & 1 & -2 \\ 1 & 4 & -4 \end{bmatrix} $ をジョルダン標準形に変換せよ。

ジョルダン標準形はまあよく分かってないのですが、jordan_formで求めることができるみたいです。

A = Symbol('A')
A = Matrix([[0,1,-1],[2,1,-2],[1,4,-4]])
(P, J) = A.jordan_form()

Pが変換行列で、Jがジョルダン標準形らしいです。

おわりに

この記事では、線型代数学の演習問題をsympyで解く方法について述べました。 やはり$n$や$\lambda$といった記号をそのまま計算できるのは便利だと思いました。 また、計算結果をすぐに得ることができるので「この数値を少し変えたらどうなるだろう?」といったことをすぐに知ることができるのも便利ではないかと。 あと、sympyはjupyter notebookで使うと最高だと思います。

はてなブログにグローバルナビゲーションをつけた話

Tips

はじめに

ローカルなwiki的な何かを構築していまして、その結果はてなブログを放置しすぎていました。 ローカルwikiと比較して、足りないものがナビゲーションだったので、形だけつくりました。

参照したところ

まあ、Google先生に尋ねれば案の定教えてくれました。 適当にCSSとかをコピペさせていただいただけです。CSSとか分からないので...

www.yukihy.com

雑感

まだ、ちゃんとメニューにしてないですがそれっぽくなった気がします。 今後、ローカルで書き溜めた記事をいくつか公開したいなあと思います。いつやるかはわかりませんが...

英会話で使えそうな表現のまとめ

語学

はじめに

最近、英語を使わないといけない場面が増えたので簡単な表現をまとめておきたいと思います。 TOEICのリスニングはそこそこできるので聞き取れるけど、うまく自分の言葉を表現できないことが多いという状況です。特に挨拶表現が中学英語のままで止まってるので、なんとかしたいです。

挨拶表現

  • お会いできて嬉しいです。
    • Nice to meet you.
    • It's pleasure to meet you.
  • 私もです。
    • Nice to meet you, too.
    • The pleasure is all mine.
  • お会いできてよかったです。
    • Nice meeting you.
  • またお会いできてうれしいです。
    • Nice to see you, again.
  • 久しぶりです。
    • It's been a long time.
    • Long time no see.
    • I haven't seen you for ages. / I haven't seen you for a long time.
  • 私の名前は○○です。**と呼んでください。
    • I'm ○○. Please call me **/Just call me **.
  • 名前を教えてください。
    • May I have your name please?

How are you?に対する返答

  • I'm doing good
  • Pretty good.
  • Great. Thank you.

How are you?と聞かれたら、And you?やHow about you?など聞き返すこと。

英語できませんアピール

  • 英語を話すのは苦手です。
    • I'm not good at speaking english.
  • 少し話せますが、流暢に話すのは難しいです。
    • I speak English a little, but it's still hard to speak fluently.
  • 間違いがあったら指摘してください。
    • Could you correct me if I use wrong expressions.
  • ○○はどういう意味ですか?
    • What does ○○ mean?
  • ○○はどのように発音するのですか?
    • How do you pronounce ○○?
  • ええと...
    • Well, Let me see...

「ええと」は「ええと」でもいい気がする。

別れるとき

  • I'm so happy to talk with you.
  • Have a nice day!
    • Thanks, same to you!
  • Thank you for everything.

相槌

  • いいよ。
    • Sure.
    • My pleasure.
  • いえいえ。
    • You're welcome.
    • Not at all.
  • いいなー。
    • Lucky you!
  • すごくいいね。
    • I love it!
  • 驚きですね。
    • That's amazing.
  • 知らなかった。
    • I didn't know that.

LTSpiceの色変更

はじめに

LTSpiceを使う場合、初期設定のままだと回路図やグラフが暗めなので、 背景色を変更したいと思います。

金槌のアイコンでControl Panelを開き、右から3つ目のDraftingを選択します。その中のConfigure Colorsを開くと、Waveform、Schematic、Netlistの3つの色を変更することができます。今回はWaveformとSchematicの色変更を行いました。

f:id:westoshy:20160515141149p:plain

f:id:westoshy:20160515141147p:plain

回路図(Schematic)の色設定

回路図は、次のような回路図エディタBSch3Vのものに変更をしました。 カラーパレットは、ここを見ました。

具体的には次のように設定しました。

Item Red Green Blue
Wires 0 125 0
Junctions 0 125 0
Component body 192 0 0
Graphic Flag 192 0 0
Component Text 255 255 192
Flag Text 0 0 0
SPICE Directive Text 0 0 0
Comment Text 0 0 0
Unconnected Pin 0 125 0
Grid 0 0 0
Background 255 255 255

この色設定で回路図を表示すると次のようになります。

f:id:westoshy:20160515142404p:plain

グラフ(WaveForm)の色設定

グラフについては背景色と軸の色を主に変更しました。

Item Red Green Blue
Trace V(1) 0 0 0
Axis 0 0 0
Inactive Axis 150 150 150
Grid 0 0 0
Background 255 255 255

この設定でグラフを表示すると次のようになります。

f:id:westoshy:20160515142401p:plain

参考資料

MATLABのグラフィック関数

MATLAB

はじめに

MATLABはグラフィック関数を用いてデータの可視化をすることができます。 いろいろあるのでお勉強のためにドキュメンテーションからグラフィック関数とその使い方をまとめます。

MATLABのグラフィックの詳細は次のページに詳細が載っています。

jp.mathworks.com

ラインプロット

線形2次元プロット

$x$を$[-2\pi, 2pi]$の間に線形に等間隔な100個の点として、sin関数、cos関数を描画します。 等間隔に100個の点を用意するためにはlinspace関数を使います。点の数を変更したい場合には、linspace(-2\pi, 2pi, 150)のように第3引数に用意したい点数を渡します。

x = linspace(-2*pi,2*pi);
y1 = sin(x);
y2 = cos(x);

figure
plot(x,y1,x,y2)

グラフの詳しい指定方法についてはここの内容を見てください。

異なるY軸を使用した2つのデータのプロット

plotyy(X1, Y1, X2, Y2)を用いてY1をX1をy軸の左側にラベリングして、Y2をX2をy軸の右側にラベリングしてプロットします。

x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);

[hAx,hLine1,hLine2] = plotyy(x,y1,x,y2);
hLine1.LineStyle = '--';
hLine2.LineStyle = ':';

plotyyでxとyを指定した後に、使用するグラフを指定することができます。次の例では(x,y1)についてはplot関数を使用し、(x,y2)についてはstem関数を使用しています。

x = 0:0.1:10;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);

figure
plotyy(x,y1,x,y2,'plot','stem')

離散データのプロット

離散データ列

stem(X, Y)はXで指定した値に、データ列Yをプロットします。そのため、XとYのベクトルまたは行列のサイズは同じでなければなりません。Xは行ベクトルまたは列ベクトルで、Yはlength(X)行の行列でなければなりません。

X = linspace(0,2*pi,50)';
Y = [cos(X), 0.5*sin(X)];
stem(Y)

階段状プロット

stem関数と同様の形式で階段状のグラフをプロットします。

X = linspace(0,4*pi,50)';
Y = [0.5*cos(X), 2*cos(X)];

figure
stairs(X,Y)

散布図

scatter(x, y)で、ベクトルx, yで指定された位置に散布図を作成することができます。

x = linspace(0,3*pi,200);
y = cos(x) + rand(1,200);
a = 25;
c = linspace(1,10,length(x));
scatter(x,y,a,c,'filled')

plotmatrix(X)でYの列に対するXの列の散布図を含む散布図プロット行列を作成できます。 行列の(i,j)成分のサブプロットはj列目に対するi列目の散布図です。体格成分には各列のヒストグラムプロットが配置されます。

X = randn(50,3);
plotmatrix(X)

plotmatrix(X, Y)でYの列に対する X の列の散布図を含む小座標軸の行列を作成できます。

X = randn(50,3);
Y = reshape(1:150,50,3);
plotmatrix(X,Y)

等高線図とベクトル場

等高線

等高線はcontour関数を用いて描画します。

x = linspace(-2*pi,2*pi);
y = linspace(0,4*pi);
[X,Y] = meshgrid(x,y);
Z = sin(X)+cos(Y);

contour(X,Y,Z)

ベクトル場

速度ベクトルをfeather(U,V)で描画できます。フェザープロットは、横軸に沿った等間隔の点を原点とするベクトルを描画します。それぞれのベクトルの原点を基準としたベクトル成分を表します。 UとVで指定されるベクトルを表示し、Uは相対的な座標としてのx成分、Vは相対的な座標としてのy成分を含んでいます。

thetaの方向を表すフェザープロットを作成します。featherは直交座標を使用するためpol2cartを使用してthetaとrを直交座標に変換します。

theta = -pi/2:pi/16:pi/2;
r = 2*ones(size(theta));

[u,v] = pol2cart(theta,r);
feather(u,v)

また、quiver(x, y, u, v)でx,yの各要素と矢印を組み合わせることができます。

[x,y] = meshgrid(0:0.2:2,0:0.2:2);
u = cos(x).*y;
v = sin(x).*y;

quiver(x,y,u,v)

等高線図とベクトル場の表示

$ z = x \exp( -x^{2} -y^{2} ) $の等高線と勾配ベクトルを描画します。勾配ベクトルはgradient関数によって得ることができます。

$$ \nabla \boldsymbol{F} = \frac{\partial \boldsymbol{F}}{\partial x} \boldsymbol{i} + \frac{\partial \boldsymbol{F}}{\partial y} \boldsymbol{j} $$

% z = x exp( -x^2 - y^2)の等高線を描画
[X,Y] = meshgrid(-2:0.2:2);
Z = X .* exp(-X.^2 - Y.^2);
contour(X,Y,Z,10)

% 勾配計算
[U, V] = gradient(Z, 0.2, 0.2);
hold on
quiver(X, Y, U, V);
hold off

図解・ベイズ統計「超」入門

Book

はじめに

 本の表紙から「マンガでわかる〜」シリーズ感がありますが、文章中心の構成です。 確率の話から始まり、ベイズの定理、ナイーブベイズベイズ統計学と進んで行く構成になっています。

  1. ベイズ統計学」ってなんだろう?
  2. 確率の「4つの基本」を押さえよう
  3. ベイズの定理」を理解しよう
  4. ベイズの定理」を応用しよう
  5. 「理由不十分の原則」と「ベイズ更新」を理解しよう
  6. ベイズ統計学を理解しよう
  7. 正規分布データをベイズ統計で分析しよう

ベイズ統計学とは?

 頻度主義の統計学では、確率の話がほとんど出てこないが、ベイズ理論では、ベイズの定理を出発点として確率を応用する。
ベイズの定理は200年以上も前の理論だが、ベイズの定理を応用する際に人の裁量が加わるため厳密性を求める数学において馴染まなかったらしい。その非厳密性が意思決定、過去と現在のデータの関係付けなどができるということ、また計算機による複雑な計算が可能になったことによって近年、着目されている。

ベイズ統計学で用いる確率の基本

ベイズ統計を理解するためには、同時確率、条件付き確率、乗法定理、加法定理の4つの基本が必要となる。 (それぞれの詳細はとりあえずあとでまとめるかも?)

ベイズの定理とは?

ベイズの定理は次の式で表される。

$$ p(H|D) = \frac{p(D|H)p(H)}{p(D)} $$

$H$を仮説(Hypothesis)、$D$をデータ(Data)と解釈すると、各確率は次のような解釈となる。

  • $p(H|D)$: データ$D$が得られたときに、仮説$H$が成り立つ確率
  • $p(D|H)$: 仮説$H$が成り立つときに、データ$D$が得られる確率
  • $p(H)$: 仮説$H$が成り立つ確率
  • $p(D)$: データ$D$が得られる確率

それぞれ、$p(H|D)$を事後確率、$p(D|H)$を尤度、$p(H)$を事前確率とよぶ。 事後確率はデータが得られた後の確率、事前確率はデータが得られる前の確率という意味で、尤度は仮説$H$のもとでもっともらしく起こる確率という意味で実用上は、仮説が成り立つ場合にデータが得られる確率である。

ベイズの定理を用いた有名な例題としてモンティホール問題、難病の検査の問題がある。 (あとで書くかも?)

理由不十分の原則

理由不十分の原則とは、不確かな事前確率には、とりあえず適当なものを使うというもの。この事前確率に対して融通が利く点が経験を活かせるということにつながる。経験に応じて、事前確率の設定を変えてやることができる。

ベイズ更新

ベイズ更新は、過去のデータを新しいデータの分析に活用する手段を与える。つまり、以前のデータで得られた事後確率を次のデータ解析における事前分布として採用するという技法である。この技法によって過去のデータと現在のデータをスムーズに融合することができる。

ベイズ統計学とは?

ベイズ統計学では、従来の統計学で用いられていた母数を確率分布とみなす。従来の統計学では母数は固定パラメータであったが、ベイズ統計学では、母数も確率分布として考えて議論をする。例えばコインの表か裏が出る問題を考える時、従来の統計学では表が出る確率と裏が出る確率はそれぞれ$0.5$としていたが、ベイズ統計学ではコイン自体が確率的に表と裏が出るとみなす。つまり、表が出る確率が$\theta$のコインを使っているものとする。

ベイズ統計学の応用分野

ベイズ統計学は次のような分野に応用することができる。

社会科学やビジネスの分野に幅広く応用することができる。

読んだ感想

 ベイズ統計自体はそこそろ勉強していたので、本自体はサクサク読めた。 従来の統計学との大きな違いは、事前分布に経験といった知識を盛り込めることだと思う。 ベイズの定理の式は知っているが、何に使えるのかいまいちピンときていない人が読むと幸せになれる本だと思う。 まあ、ビジネスの世界でこんなベイズ統計を駆使したデータ解析をするのかって言われるとちょっとよく分からないですが。

こんにちは世界

 今までMarkdown形式でローカルにいろいろためていたので、まあいい機会なので適当に書いておこうかなと思いました。 はてなブログにした理由は、Markdownが使えるのとそこそこ使われているからですかね?

 とりあえずMarkdownで記事を書くにあたって、設定しておきたいのがMathJaxで、これがないと数式を書くのがツライです。 MathJaxはMarkdown中でほぼLaTeX記法で数式を記述できるJavascriptの何かです。中身までは知りません。 はてなブログでMathJaxを楽に使うためには次のような設定を書く加える必要があります。

[デザイン] - [カスタマイズ] - [サイドバー] - [モジュールの追加]の中にあるHTMLを選択して次のスクリプトを書き込めばOKです。

<script type="text/javascript"
  src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>

<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}
  });
</script>

以上の設定を変更するとMathJaxで数式を記述できます。 ドル記号1つの場合は$x,y$のようにインライン表記をしてくれます。 ドル記号を2つ付けると,新しい行に表示することができます。

$$ e ^ {j \pi} + 1 = 0 $$

思いついたことや今まで書き連ねていたことを適当に書いていく予定です。