数学の最近のブログ記事

法4の素数のレースに続いて、3より大きい素数を3で割ったときの余りの1組と2組のレース、すなわち法3のレースについても、みてみる。

そこで、以下のようなプログラムを書いてみた。

// 3を法としたレース

#include <stdio.h>

int SGN(int n); // 符号を返す

int main()     {
	
FILE *fi;
int i = 0;
int p; // 素数
int N1 = 0, N2 = 0;

int b_sgn, sgn = 1;  // 符号変数

if (( fi = fopen("sieve.txt","rt")) == NULL ) return -1;  // 予めエラトステネスの篩で生成した10億までの素数

 while ( fscanf(fi,"%d",&p) != EOF )     {
	
  if ( p > 3 )    {
   if ((p%3) == 1 ) N1++;
   else if ((p%3) == 2 ) N2++;
   i++;  // 素数の順番
   b_sgn = sgn;  // N3 - N1の符号の変化をみる
   sgn = SGN(N2 - N1);
   if (( b_sgn * sgn ) == -1 ) printf("%d,%2d,%d,%d,%d\n",i,sgn,p,N1,N2);  // 符号の入れ替わり
}
  }
  

printf("(p mod 3) == 1: %d\n",N1);
printf("(p mod 3) == 2: %d\n",N2);
return 1;
}

int SGN(int n)  { // 符号を返す
  if ( n < 0 ) return -1;
  return 1;
}

これの結果は、以下のように、単に最終結果が出るだけ、そして最終結果が2組の勝ちということは、2組が最初から50847534連勝で一度も負けなかったことを意味する。

(p mod 3) == 1: 25422713
(p mod 3) == 2: 25424819

そこで、以下に示すプログラムで、10000000毎に途中の差を見てみると、こちらのとおりである。ここから見てとれるように、単調増加でないにしても、じりっじりっと差が広がりつつあるのが分かる。それなら永遠に2組が勝ち続けるのかというと、谷口氏の「素数のレース」によると、608981813029のところで、1組が3組を逆転するというのが、コンピュータを駆使して、1976年に分かったのだという。ええっ、なら私もそれを検証しようとしたが、そのためにはそもそも、そのためには2から608981813029までのすべての素数を計算しなくてはならず、気が遠くなるほど時間がかかるので、諦めた次第である。なんとも不思議な世界なのであった。

// 3を法としたレースの10000000毎の集計

#include <stdio.h>

int main()     {
	
FILE *fi;
int p; // 素数
int N1 = 0, N2 = 0;

int Border = 10000000;

if (( fi = fopen("sieve.txt","rt")) == NULL ) return -1;  // 予めエラトステネスの篩で生成した10億までの素数

 while ( fscanf(fi,"%d",&p) != EOF )     {
	
  if ( p > 3 )    {
     if ((p%3) == 1 ) N1++;
     else if ((p%3) == 2 ) N2++;
     if ( p > Border )            {
        printf("%d,%d,%d,%d\n",p,N1,N2,N2-N1);
        Border += 10000000;
     }
  }
 }
 
        printf("%d,%d,%d,%d\n",p,N1,N2,N2-N1);

  
return 1;

}

数学セミナーの2019年4月号を眺めていたら、「高校数学ではじめる整数論」の連載で、その第一回で、谷口隆氏が「素数のレース」と題する記事を書いていた。そのとっかかりは、フェルマーの考察で言及した、4で割って1余る素数と、4で割って3余る素数の話である。

ここで素数のレースというのは、4で割って1余る素数と、4で割って3余る素数は、どちらが多い?という話で、谷口氏はそれを、野球のスコアボードのように計算しているので、私もとりあえず、以下のような簡単なプログラムを書いてみた。

#include <stdio.h>

int SGN(int n); // 符号を返す

int main()     {
	
FILE *fi;
int i = 0;
int p; // 素数
int N1 = 0, N3 = 0;

int b_sgn, sgn = 1;  // 符号変数

if (( fi = fopen("sieve.txt","rt")) == NULL ) return -1;  // 予めエラトステネスの篩で生成した10億までの素数

 while ( fscanf(fi,"%d",&p) != EOF )     {
	
  if ( p >= 3 )    {
   if ((p%4) == 1 ) N1++;
   else if ((p%4) == 3 ) N3++;
   i++;  // 素数の順番
   b_sgn = sgn;  // N3 - N1の符号の変化をみる
   sgn = SGN(N3 - N1);
   if (( b_sgn * sgn ) == -1 ) printf("%d,%2d,%d,%d,%d\n",i,sgn,p,N1,N3);  // 符号の入れ替わり
}
  }
  

printf("(p mod 4) == 1: %d\n",N1);
printf("(p mod 4) == 3: %d\n",N3);
return 1;

}

int SGN(int n)  { // 符号を返す
  if ( n < 0 ) return -1;
  return 1;
}

これの計算には、エラトステネスの篩で得られた、10億までの50847535個の素数を使用する。

このプログラムは、4で割って1余る素数を1組、4で割って3余る素数を3組と呼ぶことにすると、以下のように、その範囲の整数では、3組の方が50くらい優勢であることが分かる。

(p mod 4) == 1: 25423491
(p mod 4) == 3: 25424042

一方、3組の優勢から1組の優勢に転換したところをピックアップしたを作成してみた。この表で、左列から、番号は転換点の番号、素数の番号は3を1番としたときの素数の番号、転換点は、1組が3組に勝ち越したときが-1、3組が1組に追いついたときが1、素数はそのときの素数、1組の個数と3組の個数は、そのままの意味である。

なんか、5000万個以上の素数をトラバースしたのに、1組と3組の差が50というわずかな差であるにも拘わらず、その間に1組が3組に勝ち越すチャンスがたった310回しかないというのも意外である。

なお、谷口氏によると、3より大きい素数を3で割ったときの余りの1組と2組のレースもあるらしい。また、このような議論はリーマン予想や、ディリクレのL関数とも関係してくるらしい。すなわち法4のレースで、3組がリードしている期間は全体の約99.59%であることが、ディリクレのL関数を使って示されるらしい。ともかく、追々勉強してみる。

黒川重信「ラマヌジャンζの衝撃」現代数学社を読み直していたら、発散級数のところで、ラマヌジャン総和法があったので、ちょっと計算してみる。それは以下のような式である。ここで、Bnは、ベルヌーイ数である。

ここで特に、f(x) = xrとする。rは自然数とする。すると、rが偶数だと、f2n-1(0)はすべて0になる。なぜなら、rが偶数だと、2n-1という奇数回の微分の結果として、xが残る項と、定数項を微分した結果の項しか残らないからである。

一方、rが奇数だと、2n-1という奇数回の微分の結果として、2n-1 = rとなる2n-1回の微分の結果の項だけが残り、そこは(2n-1)!になるので、以下の式になる。

具体的に計算してみると、以下のとおりである。ベルヌーイ数は、例えばこちらからもってくる。Σは、n=1の下添え字と、∞の上添え字を省略している。
Σn = -B2/2 = -1/6 * 1/2 = -1/12
Σn3 = -B4/4 = -(-1/30) * 1/4 = 1/120
Σn5 = -B6/6 = -1/42 * 1/6 = -1/252
Σn7 = -B8/8 = -(-1/30) * 1/8 = 1/240
Σn9 = -B10/10 = -5/66 * 1/10 = -5/660
Σn11 = -B12/12 = -(-691/2730) * 1/12 = 691/32730

Σnの場合の計算は、発散級数の和でみた方法でなんとかなるが、Σn3だともう、理解する手がかりはない。そもそもこの式はどうやって導出するのだろう。そして、どういう数学的意味があるのだろう、といろいろ考えるのだった。

最近、ベルヌーイ数の計算にあるように、ちょっとベルヌーイ数を勉強しているのだが、その淵源を簡単にまとめてみたくて、「ベルヌーイ数とゼータ関数」荒川恒雄・伊吹山知義・金子昌信著、牧野書店を改めて開いてみた。

すると、それはまず、ファウルハーバーが1631年に出版した、Academia Algebraeでべき乗和に関する考察を嚆矢とする。すなわち、そこでは以下のようなべき乗和Sk(n)が考察される。

なお、S1(n)は、以下のとおりであり、

S2(n)は、以下のとおりであり、

いずれも高校の数学で習う範囲である。

ファウルハーバーの考察によれば、kが奇数のとき、Sk(n)は、S1(n)の多項式として書け、kが偶数のとき、Sk(n)は、nの多項式のとき、S2(n)の多項式で割れて、その商がS1(n)の多項式として書けるという。また、その多項式の係数を求める方法にも想到していたらしい。しかし、ベルヌーイ数は思い至らなかった。

ベルヌーイは、1713年に出版した、Ars Conjectandiで、以下のような公式を示した。

ここで、Bjがベルヌーイ数である。これによると、Bjを予め求めておくと、べき乗和の式が比較的簡単に求まる。

それにしても、なぜここで二項係数が出てくるのかというと、以下のように、べき乗和のの差が二項係数を含む式になるかららしい。

だとしても、上記のようなコンパクトなべき乗和の公式は決して自明には得られず、ベルヌーイの慧眼を要した次第である。

ところが日本の関孝和は、1712年に、ベルヌーイとは全く独立に、「括要算法」で、ベルヌーイと同じアルゴリズムで、ベルヌーイ数の求め方を発表していた。なので、ベルヌーイ数は本当は、関・ベルヌーイ数と呼ばれるべきなのだった。

なお、小山信也著、黒川陽子構成「リーマン教授にインタビューする」青土社では、ベルヌーイ数は関数(せきすう)と呼びましょうとリーマンが提唱して、それでは日本語では混乱するので避けましょうというくだりがあって、なかなか面白い。

ともかく、ベルヌーイ数はこのような、一見何気ない出自ながら、ゼータ関数などに本質的に現れる数で、なかなか玄妙なのだった。

さて、分数や二項係数の計算を補題として、いよいよベルヌーイ数の計算を行う。そのために、「ベルヌーイ数とゼータ関数」牧野書店の4ページにある以下の式を使う。

このままでは分かりにくいので、次のように変形して、B0,B1,...,Bn-1からBnを漸化式的に求めていくようにする。

こうやって式を書き下すと、これに従って、コーディングするだけでよい。以下のとおりである。frac64.hを使うと、以下のようにかなりシンプルにコーディングできた。なお、単なる便宜上、B0=1とB1=1/2を所与として計算した。


#include <stdio.h>
#include "frac64.h"

frac bc(int n, int i);

int main()                {

 int i,j,n;
 frac B[100];  // ベルヌーイ数の列
 frac obj, obj1;  // 計算用の変数
 
 B[0].setA(1); B[0].setB(1);
 B[1].setA(2); B[1].setB(1);
 
for ( n = 2; n < 39; n++ )        {
 obj.setA(1); obj.setB(0);
 for ( i = 0; i <= n-1; i++ )  {
  obj += (bc(n+1,i)*B[i]);
 }
  obj1.setA(n+1); obj1.setB(1);
  obj *= obj1;
  B[n].setA(1); B[n].setB(1);
  B[n] -= obj;
 
 printf("B<sub>%d</sub> = ",n);
 B[n].Show();
 printf("\n");
}
 
 return 1;

}

frac bc(int n, int i) {
 int j;
 __int64 a,b;
 frac obj(1,1), temp;
 
 if ( i == 0 ) return obj;
 
 if ( i > n/2 )   {
    i = n - i;
 }
 
 for ( j = 1; j <= i; j++ )  {
  b = (__int64) (n - j + 1);
  a = (__int64) j;
  
  temp.setA(a); temp.setB(b);
  obj *= temp;
 }
 return obj;
}

計算結果は、以下のとおりである。ウェブ上では、B28くらいまでしか計算した結果が見つけられなかったが、たまたま最近買った、青木美穂「p進ゼータ関数」日本評論社には、B50までリストされていた。比較してみると、B35までは合っているが、B36から違っている。ここで、64ビット整数の限界を超えたようである。これ以上だと、多倍長分数ルーチンを用意するよりない。

B2 = 1/6
B3 = 0/1
B4 = -1/30
B5 = 0/1
B6 = 1/42
B7 = 0/1
B8 = -1/30
B9 = 0/1
B10 = 5/66
B11 = 0/1
B12 = -691/2730
B13 = 0/1
B14 = 7/6
B15 = 0/1
B16 = -3617/510
B17 = 0/1
B18 = 43867/798
B19 = 0/1
B20 = -174611/330
B21 = 0/1
B22 = 854513/138
B23 = 0/1
B24 = -236364091/2730
B25 = 0/1
B26 = 8553103/6
B27 = 0/1
B28 = -23749461029/870
B29 = 0/1
B30 = 8615841276005/14322
B31 = 0/1
B32 = -7709321041217/510
B33 = 0/1
B34 = 2577687858367/6
B35 = 0/1
B36 = 252116306927798389/755127450
B37 = 0/1
B38 = 3187113749954969/94114272101850

二項係数

user-pic
0

分数計算(その3)で作成したfrac64.hのライブラリを利用して、二項係数を計算してみた。今更なんで二項係数を計算してみるのかということになるが、実は最近、ずっと前から買ってあった、「ベルヌーイ数とゼータ関数」荒川恒雄・伊吹山知義・金子昌信著、牧野書店を眺めていて、とりあえずベルヌーイ数をパソコンのプログラムで計算させてみようと思い立ったからである。そのためには二項係数は必須である。

実は分数計算も、このための準備なのだが、分数計算はベルヌーイ数だけでなく、楕円曲線の有理数解を計算するためにも使えると思っている。それで、二項係数は英語でbinomial coefficientなので、frac bc(int n, int i)という関数を書いてみた。これは数学では記号では縦長の括弧に、n iと縦に並べて書く形式である。fracとあるのは、分数のクラスのインスタンスを返すことを示す。

そこで、サンプルのソースコードを示す。どうってことないプログラムであるが、二項係数の計算で、整数の掛け算を続けると、あっという間に64ビット整数の限界を超えるので、個別の分数の掛け算に分けて、その都度通分することで、分子の増加を抑えた点くらいが工夫である。また、ソースコードの後に、実行結果の例も示す。実行結果の各行の左端の数字は、(x+1)nのnを示す。ここでも、64ビット整数の限界との戦いで、n = 54以上だと限界なのかもしれない。

#include <stdio.h>
#include "frac64.h"

frac bc(int n, int i);

int main()                {

 int i,j,n;
 frac X;
 
 for (n = 1; n <= 9; n++ )  {
  printf("%d: ",n);
   for ( i = 0; i <= n; i++ )  {
     X = bc(n,i);
     X.Show();
     printf("; ");
   }
   printf("\n\n");
 }
 
 n = 54;
 printf("%d: ",n);
 for ( i = 0; i <= n; i++ )  {
     X = bc(n,i);
     X.Show();
     printf("; ");
 }
 printf("\n");
 
 return 1;

}

frac bc(int n, int i) {
 int j;
 __int64 a,b;
 frac obj(1,1), temp;
 
 if ( i == 0 ) return obj;
 
 if ( i > n/2 )   {
    i = n - i;
 }
 
 for ( j = 1; j <= i; j++ )  {
  b = (__int64) (n - j + 1);
  a = (__int64) j;
  
  temp.setA(a); temp.setB(b);
  obj *= temp;
 }
 return obj;
}

1: 1/1; 1/1;

2: 1/1; 2/1; 1/1;

3: 1/1; 3/1; 3/1; 1/1;

4: 1/1; 4/1; 6/1; 4/1; 1/1;

5: 1/1; 5/1; 10/1; 10/1; 5/1; 1/1;

6: 1/1; 6/1; 15/1; 20/1; 15/1; 6/1; 1/1;

7: 1/1; 7/1; 21/1; 35/1; 35/1; 21/1; 7/1; 1/1;

8: 1/1; 8/1; 28/1; 56/1; 70/1; 56/1; 28/1; 8/1; 1/1;

9: 1/1; 9/1; 36/1; 84/1; 126/1; 126/1; 84/1; 36/1; 9/1; 1/1;
(中略)
54: 1/1; 54/1; 1431/1; 24804/1; 316251/1; 3162510/1; 25827165/1; 177100560/1; 1040465790/1; 5317936260/1; 23930713170/1; 95722852680/1; 343006888770/1; 1108176102180/1; 3245372870670/1; 8654327655120/1; 21094923659355/1; 47153358767970/1; 96926348578605/1; 183649923622620/1; 321387366339585/1; 520341450264090/1; 780512175396135/1; 1085929983159840/1; 1402659561581460/1; 1683191473897752/1; 1877405874732108/1; 1946939425648112/1; 1877405874732108/1; 1683191473897752/1; 1402659561581460/1; 1085929983159840/1; 780512175396135/1; 520341450264090/1; 321387366339585/1; 183649923622620/1; 96926348578605/1; 47153358767970/1; 21094923659355/1; 8654327655120/1; 3245372870670/1; 1108176102180/1; 343006888770/1; 95722852680/1; 23930713170/1; 5317936260/1; 1040465790/1; 177100560/1; 25827165/1; 3162510/1; 316251/1; 24804/1; 1431/1; 54/1; 1/1;

分数の計算の続きで、クラスのメンバ関数を追加して、細かい不具合を修正し、frac.hとしてヘッダ・ファイルを作成してみた。そこで、このクラスを使って、ある級数の分数計算をしてみることにした。

ある級数とは、以下に示す級数である。

これは、歴史的にはライプニッツの級数と呼ばれているが、黒川重信氏によると、これを世界で最初に発見したのは、南インドのケララ派で、マーダヴァ級数と呼ばれるべきだそうである。

これの分数計算は、frac.hを使うと、以下のような極めて短いプログラムで計算できる。

#include <stdio.h>
#include "frac.h"


int main()                {

 int i = 1, n = 1;
 frac r,u;
 r.setA(1);
 r.setB(0);

 u.setB(1); 
 while ( n < 12 )   {
   u.setA(i);
   r += u;
   printf("%d項までの和:",n++); r.Show(); printf(" = %10.8f\n",r.ShowVal());
   
   i += 2;
   u.setA(i);
   r -= u;
   printf("%d項までの和:",n++); r.Show(); printf(" = %10.8f\n",r.ShowVal());
   
   i += 2;
 }
 
 
 return 1;

}

また、計算結果は、以下のとおりである。

1項までの和:1/1 = 1.00000000
2項までの和:2/3 = 0.66666667
3項までの和:13/15 = 0.86666667
4項までの和:76/105 = 0.72380952
5項までの和:263/315 = 0.83492063
6項までの和:2578/3465 = 0.74401154
7項までの和:36979/45045 = 0.82093462
8項までの和:33976/45045 = 0.75426795
9項までの和:622637/765765 = 0.81309148
10項までの和:11064338/14549535 = 0.76045990
11項までの和:11757173/14549535 = 0.80807895
12項までの和:255865444/334639305 = 0.76460069

なお、π/4 = 0.785372...なので、かなり粗いが、一応π/4に収束しつつあることは窺われる。また、12項で打ち切ったのは、これ以上だと分母または分子が、32ビット整数で表記できる範囲を超えるので、仕方ない。これ以上を計算するには、64ビット整数を用いるよりない。もともとπ/4を計算することが目的なら、こんなまだるっこしく分数は計算しない。そうなら、1億項まででも簡単に計算できる。

数学ファン

user-pic
0

久々に相模大野のブックファーストで、数学・物理書のコーナーに行ってみたら、本が減っているので、がっかりした。理工学書は売れないのだろうか。

それでも、数学書の棚を見ていて、東大出版会の「数学の現在」という本が目についた。ページをめくってみるとこれは、全三冊で、ここにあるのは、第一巻のようである。

この本は、東大大学院数理科学研究科の教員が、各人の専門分野を一人一時間ずつ数学科の学生に講義した内容をまとめたものらしくて、広く浅くなのかもしれないが、現代数学の全体像を眺めるのにいいかと、買ってみることにした。

すると、その第1講は、私さえ名前を存じ上げている、有名な数論学者の斎藤毅氏による「数論幾何学-リーマン予想からエタール・コホモロジーへ」で、欣喜雀躍して読み始めたら、最初のリーマン予想のところは、黒川重信氏の著書を通じて馴染みがあったので、ついていけたが、楕円曲線のモーデルの定理が出てきたあたりから、次第に取り残されてきた。

こんなところで置いてきぼりになっては駄目じゃん、とがっかりしていたら、ふと、ある将棋のプロ棋士のことを思い出した。その棋士は、若い頃から真面目一本槍で、高い勝率で期待され、結婚して子供もできたのに、ふとしたきっかけで離婚し、AKB48に入れ込んでコンサートにも行き、メンバーのことは、知らないことないくらい詳しいという。私は、流石凝り性の棋士だと感心するとともに、少し呆れた。

で、そのことを思い出して、あっ、そうか、と閃いたことがあった。その棋士がAKBのファンであるように、私も数学ファンでありさえすればいいのだと。

すなわち、いくらAKBの熱心なファンであっても普通、個人的に付き合いたいとか、結婚したいなどとは思わない。そういうのは、芸能人とか、ベンチャー企業の社長とかのみに許された特権である。

なので、私も一介の数学ファンとして数学と付き合えばいいのであって、間違ってもエタール・コホモロジーを理解したいなどという不遜なことは考えてはいけない。

でも、とまた、考え込んでしまった。一介の数学ファンであることは、今日までそして明日からも変わらないが、改めてどう数学と付き合えばいいか分からなくなってしまったからである。

まあ、言ってしまえば、理解できる、できないではなく、興味というものは、次第に枯死していくものなので、興味の自己増殖系としてどう数学の学習を構成するか考える、という抽象的な方針を与えてみることにする。

具体的には、今までちょっと敬遠していたガチの専門書も眺めてみることにする。例えば、深谷賢治氏の「シンプレクティック幾何学」を恐る恐る読んでみたら意外に読める。理解できるとは言わないが。

バックナンバーの、数理科学2018年10号「カラビ・ヤウ多様体」の特集号を首尾よく入手したので、眺めてみることにした。もとより、大まかな理解にさえ達せられるとは期待していない。

で、最初に目次を眺めていて、深谷賢治氏の「カラビ・ヤウ多様体のどこが面白いか」という記事から読むことにした。私は数年前から、氏のファンである。以下、私なりに簡単にメモしてみる。

すると、最初のキーワードは、ミラー対称性である。これは、深谷氏の専門のシンプレクティック幾何学でも重要な課題である。

カラビ・ヤウ多様体とは、(複素)3次元の空間であり、それは3次元の代数幾何学の各論の研究対象として最も面白いものであり、その最も重要な性質の一つがミラー対称性である、というのが深谷氏の考えである。

1次元の代数(あるいは)複素幾何学の各論として最も重要で深いのは楕円曲線である。

2次元のそれだと、一番面白いのは、K3曲面である。K3には、リッチ曲率が0のケーラー計量、すなわちカラビ・ヤウ計量が入る(ヤウの定理)。

複素2次元(実4次元)のK3曲面の一番いい計量がカラビ・ヤウ計量であるが、その式を具体的に式に書き下すことに成功した人は誰もいない。それは、4次元が、人智を超えていることを意味するのかも知れない。

3次元代数多様体の面白い各論の一つがカラビ・ヤウ多様体であり、その中の最も面白い性質がミラー対称性である。

また、小林正典氏の巻頭言によれば、ミラー対称性とは、2つの異なる幾何構造から、カラビ・ヤウ多様体のもつ2つの全く異なる幾何構造(複素構造とシンプレクティック構造)が得られ、それらから本質的に同じ情報が取り出せることだという。

さらに、後藤竜司氏の記事によれば、1954年にカラビによって、以下のようなカラビ予想が与えられた。それは、「コンパクトなケーラー多様体Mの第1チャーン類c1(M)が0ならば、Mはリッチ曲率が0となるケーラー計量をもつ。」という予想なのだという。1978年にヤウがこの予想を解決した。

リッチ曲率が0となるケーラー計量をもつ複素多様体が、カラビ・ヤウ多様体と呼ばれるようになった。

と、例によって訳も分からずメモしてみたので、当然に単純な書き写しのミスとかもあるだろうけど、このメモをベースにカラビ・ヤウ多様体について、眺めてみたい。

体の定義

user-pic
0

最近は、数学セミナーを読むのが遅れがちで、知らないうちに、最新号に対して何周遅れかになっている。それは、ある程度理解しながら読んでいるから、というと格好をつけているのであって、単に数学セミナーを読むのがハードなので、避けているだけだったりする。

そういう訳で、やっと数学セミナーの2018年10月号をやっと読んでいる次第なのだが、これは「体とはなにか」というタイトルで、要するに、代数的なシステムの一つである、体の特集号なのだった。

そこで、最初の三宅克哉氏の記事を辿って、体の定義を復習することにした。

すなわち、体とは、数学的な対象を集めた集合に対して、加法と乗法が与えられ、結合律、可換律、2種の単位元の存在、2種の逆元の存在、分配律を満たすもの、とあって、ああそうだよね、と思い出した。

ところが、可換律、と聞いて、そんなのあったっけ?と怪訝になった。すなわち、加法について可換群になるのはまあいいとして、乗法については単に群であればよく、別に可換群である必要はないのでは、と思ってしまった。

私は適当なことを言っているのではなく、例えば、有名な数学者の永田雅宣氏に、裳華房の「可換体論」という名著があって、これは要するに、乗法が可換な体のことを可換体と読んでいると思うのだが、あらゆる体が可換体なら、単に「体論」でよくないだろうか。

それとも、永田氏の「可換体論」は、代数方程式論の発展に関与するので、そういう場合特に、体論を可換体論と呼ぶのだろうか、といろいろ考えてみた。

で、考えた挙句、考えてても仕方ないではないか、永田氏の「可換体論」に直接当たってみようということになった。考えるまでもなく当然である。すると、その18ページに、次のような記載がある。引用してみる。

さて、体の定義をしよう。環Rにおいて、その乗法について、0以外の元がいずれも乗法について逆元をもつとき(従って、このとき、Rの0以外の元全体は群をなす)、Rは体であるという。群R-{0}を体Rの乗法群と呼ぶことがある。乗法が可換であれば可換体というのはもちろんである。可換でない体を非可換体、または斜体という。しかし本書では可換体を扱うのを主眼しするから、非可換体は登場しない。

なんだ、やはり非可換体もありえるんだ。なんとなく安心した次第である。

月別 アーカイブ

このアーカイブについて

このページには、過去に書かれたブログ記事のうち数学カテゴリに属しているものが含まれています。

前のカテゴリは教育です。

次のカテゴリは日常です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。