ぼんさい塾

ぼんさいノートと補遺に関する素材や注釈です.ミスが多いので初稿から1週間を経た重要な修正のみ最終更新日を残しています.

関数の記号

2010-09-29 15:00:09 | 暮らし
記事一覧

数式で考えるとき,厳密に定義された見やすい記号を使うことが望まれます.他人に見せる資料でなければ自分で工夫した記号を使うと効率が上がるかも知れません.電気工学では x(t) = e-at である関数 x のラプラス変換の点 s における値が 1/(s + a) であることを

  L{e-at} = 1/(s + a)

のように略記します.数学者好みの表現は (Lx)(s) = 1/(s+a) ですが,x を別途明示しなければなりません.その対策として t を x(t) に対応させる写像 x を表わす記号 {x(t)}t を導入すると

  (L{e-at}t) (s) = 1/(s + a)

という直接的な表現が得られます.

合成関数の微分の公式

  {f(g(t))}' = f '(g(t)) g '(t)

は f'(g(t)) を上図第2式のようにかくことにより,f(x) が x の具体的な式で与えられたときも f '(x) の x に g(t) を代入した式を直接的に表現できます.


Cの文法 (14)

2010-09-28 14:23:16 | 暮らし
「まず覚えるCの文法」校正中)

P53: 複素数の計算
//-------------------------------------
#include <stdio.h>
typedef struct{double r, i;} complex;
complex x={2, 3}, y={4, 5};
int main(void){
  complex z, *p;
  z.r=x.r+y.r;
  z.i=x.i+y.i;
  printf("z==(%f, %f)\n", z.r, z.i);
  p=&z;
  p->r=x.r*y.r-x.i*y.i;
  p->i=x.r*y.i+x.i*y.r;
  printf("*p==(%f, %f)\n", p->r, p->i);
  return 0;
}
//-------------------------------------

P53A: 構造体の配列
//-------------------------------------
#include <stdio.h>
typedef struct{
  int id;
  char name[10];
  char mail[30];
} member;
member igo[10]={
  {1, "Aoki", "aoki@xxx.ne.jp"},
  {2, "Itoh", "taro@yyy.jp"}
};
int main(void){
  member *p=igo;
  while(p->id!=0){
    printf("%d, %s, %s\n", 
           p->id, p->name, p->mail);
    p++;
  }
  return 0;
}
//-------------------------------------

Cではデータの組を構造体としてまとめることができます.
P53 のプログラムでは実数部,虚数部の組を複素数の構造体
としてまとめています.

・構造体の定義は「struct complex{double r, i;};」でいい
  のですが,「typedef」で定義しておかないと構造体を使う
  ときに「struct complex」と書かねばなりません[#52].
・構造体 x の実数部を「x.r」,虚数部を「x.i」で参照しま
  す.また構造体へのポインタ p が参照する実数部,虚数部
  は「p->r」「p->i」です.
・「.」「->」の演算子としての優先度は最高で「p->r=x.r*
  y.r-x.i*y.i;」は
    (p->r)=(x.r)*(y.r)-(x.i)*(y.i);
  を意味します(@37).
・「complex *p;」と宣言しただけでは p は使えません.P53
  のプログラムの「p=&z;」を削除すると,コンパイル時には
  エラーになりませんが p が指すアドレスにデータを書き込
  もうとします.

構造体は配列を考えることによって,使用価値が著しく向上し
ます.P53A の「igo」は囲碁部員の名前とメールアドレスの対
応を記憶する配列で,例示した main() では使っていませんが,
常識的な構成に近づけるため「id」もメンバに加えています.
(データベースの主キーに対応)

・「char name[10];」の代わりに「char *name;」を用いると
  igo.name[i] に記憶されるのは文字列へのアドレスです.
  igo の初期値をテキストファイルから読み込むのであれば
  配列の方がいいでしょう.
・igo は大域変数ですから,初期化されなかった配列要素には
  0 が設定されます.また,
    member igo[10]={
      {1, "Aoki"},
      {2, "Itoh", "taro@yyy.jp"}
    };
  のように初期化すると igo[0].mail は空白になります.内
  側の { } が煩わしければ,空白の代わりに "?" 等を用いて
    member igo[10]={
      1, "Aoki", "?",
      2, "Itoh", "taro@yyy.jp"
    };
  のようにします.


便宜的記法(2)

2010-09-26 16:14:27 | 暮らし
記事一覧

math.pdf [#64] の記号に関する「接ベクトル」の Google 検索で

[1] 接ベクトル空間 - Wikipedia
    http://ja.wikipedia.org/wiki/%E6%8E%A5%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB%E7%A9%BA%E9%96%93
[2] 接ベクトル(多様体)
    http://ufcpp.net/study/manifold/tangent.html

等が見つかりました.上図の便宜的な記法は接ベクトルと紛らわしいのですが,math.pdf で多様体の話をするはずがありません.d/dt を(写像の定義域によく用いられる)D で表わすこともあるので,Dx, Dy 等も一応考えましたが,∂を採用しました.好みの問題です.

蛇足: 接ベクトル ∂/∂u を ∂u と略記したいというのと同じ気持ちです.∂x でなく ∂1 を用いたのは上図で指摘した曖昧さの対策です( f : Rn → R のとき,∂kf は k 番目の変数による偏微分).数式で使える記号は限られているので,直観との親和性,省スペース等を考慮し,各分野で記号を有効に活用することが望まれます.


便宜的記法(1)

2010-09-24 18:10:49 | 暮らし
記事一覧

math.pdf [#53] の記号に関する「テンソル 反変ベクトル」の Google 検索で

[1] テンソル - Wikipedia
    http://ja.wikipedia.org/wiki/%E3%83%86%E3%83%B3%E3%82%BD%E3%83%AB
    http://en.wikipedia.org/wiki/Tensor
[2] EMANの物理学・相対性理論・テンソル解析 > [前の記事へ]
    http://homepage2.nifty.com/eman/relativity/variant.html

等が見つかりました.ここでテンソルに関する資料を紹介する気はありません.上図のような便宜的な記法ぼんさいノートでは朱記を珍奇だと感じた人に慣用記法の真似であることを伝えるのが目的です.

蛇足:静止画の標本値の行列表示を X,1次元の離散フーリエ変換の行列を F とします. F は対称行列なので X の2次元フーリエ変換は FXF と表現できますが苦し紛れの感があります.Y = FXF の代わりに

    ykl = ΣiΣj fikfjl xij

と表わす方が自然だと思いませんか.これなら3次元の動画にも素直に拡張できます.


LRU

2010-09-23 10:39:27 | 暮らし
記事一覧

2 3 5 8 8 8 6 2 3 3 5 8 2 3 6 2 3 5 5 8 2 3 6 2 3 5 1 8 2 3 6 2 3 5 1 6 . . . + . . + + +

「LRUアルゴリズム」の Google 検索で

[1] ページ置換アルゴリズム - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%9A%E3%83%BC%E3%82%B8%E7%BD%AE%E6%8F%9B%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0
[2] J Question vol.1393 [のんびりやろう!情報処理試験! ~1問1問 ...
    http://www.melma.com/backnumber_189_2018518/

等が見つかりました.

第一種情報処理技術者 H16年【問25】
仮想記憶管理におけるページ置換えアルゴリズムとして、LRU 方式を採用する。参照かつ更新されるページ番号の順番が、

  2 → 3 → 5 → 8 → 2 → 3 → 6 →2 → 3 → 5 → 1 → 6

で、実記憶のページ枠が 4 のとき、ページフォールトに伴って発生するページアウトは何回か。ここで、初期状態では、実記憶にはいずれのページも読み込まれていないものとする

上図は [2] の NUKU さんと同じ考え方(ページ枠を固定しない図)です.

蛇足:ページ枠を固定する図(原理の説明に適す)と異なり,左隣の1列だけみればよいので,書くのが楽です.

別件:ぼんさいノート IT.pdf は当分書きそうにないので,記事一覧に を付加しました.