技術系サラリーマン勉強記

数学、物理、プログラミングなど日々勉強した内容を取り扱っていきます。

複素関数は不思議な感じがする

少しずつ複素関数の勉強をしています。複素変数の指数関数の定義は納得がいくのですが、複素変数の三角関数の定義は不思議な感じがします。ピンとこないというか。

例えば  \theta を実数とすると、 \cos\theta は、


\begin{align}
\cos \theta = \frac{1}{2} (\mathrm{e}^{i\theta} + \mathrm{e}^{-i\theta} )
\end{align}

と表せるので  \theta 複素数  z に拡張して、  \cos z を、


\begin{align}
\cos z = \frac{1}{2} (\mathrm{e}^{iz} + \mathrm{e}^{-iz} )
\end{align}

と定義する、としていますが、なんか  iz という虚数×複素数というのが違和感を覚えます。まあ自然な定義でしょうか。

後、複素変数の三角関数双曲線関数の関係が本に色々載っていましたが、三角関数双曲線関数が似たような式で表現できていて不思議な感じがしました。何でこうなってのかなともやもやします。

参考文献

ビッグエンディアンとリトルエンディアン

多バイトのデータをメモリに格納する際にどうような順番でバイトを格納していくか問題になります。このメモリに格納する順番をバイトオーダーと呼びます。バイトオーダーの種類は二種類あり、これがビッグエンディアンとリトルエンディアンと呼ばれているものです。

ビッグエンディアンは、多バイトデータの桁の大きいバイトから順に低位のアドレスに格納していきます。

一方、リトルエンディアンは、多バイトデータの桁の小さいバイトから順に低位のアドレスに格納していきます。

例を示します。今、4バイトのデータ 0x12345678 があるとします。1バイトずつ区切ると、0x12 / 0x34 / 0x56 / 0x78 となります。このデータをメモリの0x1000番地から0x1003番地までに格納することにします。

  • ビッグエンディアンで格納した場合:0x12 / 0x34 / 0x56 / 0x78
    • 0x1000番地 -> 0x12
    • 0x1001番地 -> 0x34
    • 0x1002番地 -> 0x56
    • 0x1003番地 -> 0x78
  • トルエンディアンで格納した場合:0x78 / 0x56 / 0x34 / 0x12
    • 0x1000番地 -> 0x78
    • 0x1001番地 -> 0x56
    • 0x1002番地 -> 0x34
    • 0x1003番地 -> 0x12

このようにデータが格納されていきます。参考: Endian(エンディアン)ってなに? | 学校では教えてくれないこと | [技術コラム集]組込みの門 | ユークエスト株式会社

ビッグエンディアンとリトルエンディアンのどちらのバイトオーダーを使うかは、CPUの種類や通信プロトコルの種類によって決められています。もしくは両方に対応していたりもします。

なぜ二つの方法があるかは色々歴史がややこしそうです。どちらの方法もメリット・デメリットがあるそうです。下サイトに色々書いてありました。

www.ertl.jp

二種類のバイトオーダーについて昔聞いたことがありましたが、改めて調べてみて昔より理解できたような気がします。

参考文献

文字コードの勉強

簡単なメモを残します。

概要

コンピュータで文字を処理するには、文字を何らかの数値にする必要があります。この文字から数値にすることを文字の符号化といいます。

文字を符号化する上で重要な点が、文字と数値が一対一に対応することです。一対一に対応しないと正しく情報伝達ができなくなるでしょう。この文字と数値の対応関係のことを文字コードといいます。

文字と数値をどのように対応するか考えると、大きく二つのことを検討する必要がでてきます。

一つ目がどのような文字を扱うかです。これは文字集合と呼びます。英語圏の人は、アルファベット、数字と記号を扱えばよいかもしれませんが、日本人の場合はこれに加えひらがな、カタカナ、漢字を扱う必要がでてきます。このように文字集合の範囲をどうするかという問題は大きそうです。

二つ目がどのように文字に数値を割り振るかです。文字符号化方式といいます。同じ文字集合でも文字に数値を割り振る方法は多くあると考えられるでしょう。

このように文字と数値の対応関係である文字コードはなんだかいっぱいありそうだということが分かると思います。実際にASCII、Latin-1、Sshift-JIS、Unicodeなど多くの文字コードが世の中にあります。

グラム・シュミットの直交化法を知る

重い腰を上げて線形代数の復習をはじめました。

パラパラと本を読んでいたところ、互いに線形独立なn個のベクトルを正規直交化系に変換する方法として、グラム・シュミットの直交化が紹介されていました。数式を見ても何を意味しているか全く分かりませんでしたが、以下のサイトで紹介されているように図で考えると理解できました。

risalc.info

ポイントとしては、ベクトルが線形独立ならば、着目しているベクトルから他のベクトルに射影した成分を引いていけば、他のベクトルと直交する、ということですね。なので数式でも、次元が増えるごとに引くベクトルが増えていっていますね。