約 2,024 件
https://w.atwiki.jp/oreno_benkyou/pages/42.html
難易度 ★★★☆☆〜★★★★★ このページは書きかけです このページにおける解説・類題などは完全な物ではありません。編集に協力していただけるメンバーを募集しています。 詳しくはこちらをご覧ください STEP1 絶対値のついた二次不等式の解の個数(★★★☆☆) 基本の解説
https://w.atwiki.jp/trinity_kristo/pages/385.html
ビッグバンについて説明するためには一般性相対性理論についてまず理解する必要がある。ここでは難しい計算は省略し、導出に必要な知識とその結果だけを淡々と示していく。 1.特殊性相対性理論 宇宙の始まりを考える上で必要な一般性相対性理論を理解するために必要な基礎的な知識である。 特殊相対論では、空間内のすべての場所で、同じ運動力学が適用されるという仮説に立つ。この場合、ローレンツ変換と空間の回転という回転のみが扱われることになる。これらは、空間の歪みを表す「計量」のテンソルである計量テンソルを変えない。 一方で、一般相対論では、任意の座標変換を扱う。計量テンソルを重力エネルギーと仮定して扱う。 相対性理論の基本原理 動いている物体から光を見ても、光の速度は常に一定である。 このことから、時間は光の速さによって定義されることがわかる。 ここで、時間をtの代わりに、距離の単位wであらわすことにする。 つまり、w=ctが成り立つことになる。 ローレンツ変換 2つの慣性系の間の座標(時間座標と空間座標)を結びつける線形変換である。 簡単に言うと次のことである。「慣性の法則」が成り立つ空間である慣性系において、物質の速度が速くなればその分、物体の長さは縮む。しかし物体が縮むということは空間と時間も同じく縮むということである。 それを、静止系と、x軸方向へ速度vで運動している慣性系を想定した時に、具体的に数式化したものがローレンツ変換である。 t=0の瞬間、静止系K系の原点から光が放たれたとするとこの光は全方向に飛び去って、t秒後には原点から半径ctだけ離れた球面上の点に分布するはずである。これは下の式で表せる。 一方、慣性系K 系の原点にいる観測者から見ても、光は自分を中心に同心円状に広がるように見える。そのため、下の式が成り立つ。 今、K 系はX軸方向にまっすぐ動いているのだから、y軸やz軸方向に変化はない。このことに留意して計算すると、次の式が導出される。 ここで、であることから変形すると、 この式は冗長で扱いにくいので、 と定義すると、 とすっきりした形であらわすことができる。 4元速度 上で示した4次元空間に対する物体の速度である。 つまり、時間軸、X軸、Y軸、Z軸のことである。 以下のように定義する。 時間軸の速度 X軸の速度 Y軸の速度 Z軸の速度 ミンコフスキー空間 上で示したローレンツ変換の式から、次のことが分かる。 ローレンツ変換を行っても、次の恒等式が成り立つ。これが重要である。 この空間のことをミンコフスキー空間と呼ぶ。 このとき、以上のことから、ローレンツ変換前後の微小変化をと表現すると、以下の式が常に成り立つ。 これらをで割ると速度になるわけだから、 が成り立つことがわかる。 ここで、であることを利用する。 で割って変形していくと、 であるため、以下のようになる。 他の速度についても計算していくと、 となる。 4元運動量 運動量はpであらわされるが、これを4次速度で4元速度で示した4次元方向に拡張すると、 となる。このとき、それぞれの運動量は次のように表せる。 今、4元運動量についてγを使って書き改めると、 となる。つまりである。 このとき、の式にを両辺掛け合わせると、 となることがわかる。 ここで、定義を考えると、というのは、時間軸を除いた3次元空間の運動量なのだから、それぞれ、と置き換えても何ら問題はない。 そこで、この空間方向の3次元の運動量をまとめてとすると、 という形になる。 残るについて考えていく。 がに比べて非常に小さいので、テイラー展開で近似することができる。 ここで、運動エネルギーの式はである。 これが意味するのは、先ほど導出した近似式の両辺にcをかけると、エネルギーの式になるということである。 となる。よってこれがエネルギーの式となることがわかる。 ここで初めて、の正体が、物質の持つ全エネルギーEをcで割ったものだったことがわかった。 さて、近似式を用いる直前の式に戻ってみる。 今、にを両辺かけると、 となる。もし運動量がゼロならば、なので、かの有名な式が遂に姿を現す。 である。 逆に、運動量が存在する場合、 なのだから、 よって、となる。 2.線形代数 ここで、話題を一度、数学に変える。一般性相対性理論を理解するために必要な線形代数(ベクトルや行列を含む概念)の知識なので説明していく。 共変ベクトルと反変ベクトル 最初の座標の基底ベクトルを、新しい座標の基底ベクトルをとしたとき、次のように書ける。 これをとして省略すると以下のように表せる。 これをさらに省略すると以下のようになる。これをアインシュタインの縮約という。 ...(*) このように、座標の基底ベクトルを変換したとき、次の式のように、(*)式の基底ベクトルと同一の返還式に従うベクトルを共変ベクトルと呼ぶ。 これを書き下すと、 一方、次式のように、(*)式とは添え字の上下が逆転させた変換に従うベクトルを反変ベクトルを呼ぶ。 これを書き下すと、 物理学的に説明すると、最初の座標の基底ベクトルを、新しい座標の基底ベクトルをとしたとき、速度ベクトルの形の式で成分の変換が行われるものを反変ベクトルと呼び、逆に勾配ベクトルの形で成分の変換が行われるものを共変ベクトルという。 したがって、定義上、速度ベクトルは反変ベクトル(添え字が上付き)だということになる。 テンソル 古典的なアプローチではテンソルは多次元の配列の総称である。これで理解することは困難であるため、具体的に低次元の場合の例を示す。 階数0のテンソル:スカラー 階数1のテンソル:ベクトル 階数2のテンソル:行列 このように階数nの配列をまとめて示す概念がテンソルなのである。 上記で示したものは反変ベクトルだが、これは言い換えれば1階の反変テンソルということである。行列の形をとったものは2階の反変テンソルとなり、これから説明するエネルギー運動性テンソルTがまさにそれに該当する。 エネルギー運動性テンソルTμν 質量mの物質を考える場合、エネルギーや運動量は、 と見えることが、特殊性相対性理論の議論でわかっている。 これを4元速度であらわすと、 となる。 質量がふわーっと広がって存在する場合、つまり質量が連続した密度分布を持っている場合、密度ρの連続体であるのだから、 となる。 この状態についてよく考えると、連続体は進行方向に対して縮んでいるように見えるため、体積が縮んだ分だけ、単位面積当たりの密度はγ倍に増加しているように見えることになる。これは運動量密度πにも当然あてはまる。したがって、以下の式が成り立つ。 このように非常にまとまって綺麗な形で表現できる。 これらを美しくまとめて表現するために、次の行列を作る。 これをエネルギー運動量テンソルと呼ぶ。この行列は 2つの4元速度の組み合わせで出来ているので、速度ベクトルは反変ベクトルなのだから、エネルギー運動量テンソルは当然、2階の反変テンソルとして変換される。 詳しい説明は省略するが、このエネルギー運動量テンソルの成分を用いると、以下のような面白い結果がわかる。 これらをアインシュタインの記法でまとめると、以下のようにまとめられる。 さらに省略すると次のようになる。 3.一般相対性理論の2つの重要な式 一つは測地線の方程式である。 測地線の方程式は、光を含めたあらゆる物体が4次元空間の中でたどる道筋を表している。物体は光を含めすべて、曲がった4次元空間の中をまっすぐに進んでいるのである。測地線というのは「直線」のことである。 Γ記号は「クリストッフェル記号」と呼ばれており、略記号である。空間の歪みを表す「計量」という量の組み合わせで出来ている。 もう一つの式は重力場の方程式(別名:アインシュタイン方程式)である。 右辺に出てくるは定数である。このGは古典論にも出てくる重力定数であり、cは光速度を表している。しかしこのは、空間の曲がり具合を表す量「計量」が非常に複雑に組み合わさったものである。 測地線の方程式 λ、μ、νはそれぞれ0から3までの添え字である。したがって、完全に展開すると、その組み合わせは、4×4×4=64通りである。全て展開するとき、その項の数は、λを固定した場合に1+4×4=17項なので、λを動かした場合は17×4=68項である。(ただし、実際にはμとνは入れ替えてもイコールとなる対照行列の要素だから、実際にはラムダを固定した時の項4×4=16通りのうち、意味のある値は10通りしかないことに注意したい。)よって、測地線の方程式は、44個の連立方程式をひとまとめに略して書いてあるのである。 ここでクリストッフェル記号Γの中身を説明する。 展開した際の式は以下。 重力場の方程式 一見するとシンプルな式に見えるが、まったくもってそうではない。 まず左辺のから見ていく。 この部分は次の2つから構成されている。 右辺第1項のはリッチ・テンソルと呼ばれるものであり、右辺第2項のはリッチ・スカラーと呼ばれるものである。 リッチ・スカラーはリッチ・テンソルを縮約してつくられている。 これはアインシュタインの省略法を用いて書いているため、実際には次のようになる。 ただし、この中で意味のある項は10個である。 したがって、リッチ・スカラーはリッチ・テンソルから成り立っている。 リッチ・テンソルはリーマン・テンソルと呼ばれる4階のテンソルを縮約してつくられている。 かつ 省略法を減らして書くと次のようになる。 となる。 ただし、たとえばとなる。 したがって、リッチ・テンソルはリーマン・テンソルから成り立っている。 リッチ・スカラーとリッチ・テンソルを計算するため、リーマン・テンソルについて説明する。 であり、かつ、τの省略を戻すと、 クリストッフェル記号Γの中身は前の項目で示したものと同じである。 4.リーマン幾何学 初等教育で学ぶユークリッド幾何学は、平らな空間を前提とした幾何学である。 一方リーマン幾何学は、まがった空間の図形を対象とする。 リーマン幾何学は重力場の方程式を理解するうえでは必要だが、このwikiの趣旨は物理学を習得することではないため、ここでは概ね割愛するが、先に共役微分についてだけ説明しておく。 リーマン幾何学では座標が平面でないため、座標の取り方によって、同じベクトルであっても見かけ上変化が生じてしまう。その効果を削除したものは共役微分(ナブラ)である。 重力場の方程式の導出 ここでは、リーマン幾何学の諸知識から、重力場の方程式の正しさを検証していくことにする。 ニュートン力学ではエネルギーの源は「質量密度ρ(質量)」だった。しかし、質量密度には運動量密度などが存在しない。そこで相対性理論では、重力場の源は「エネルギー運動量テンソル」だという新しい考えに立つことにする。 そこで、式の右辺には2階の反変テンソルであるエネルギー運動量テンソルを置く。このとき、左辺も同じ形式のテンソルになるため、仮にこの道の2階の反変テンソルをとする。 ところで、エネルギー運動量テンソルが偏微分において次の関係を満たしていることを前に証明した。 これはエネルギー保存、運動量保存の式である。しかし、これは平らな空間であるユークリッド幾何学でのみ成り立つ関係式である。今はリーマン幾何学を考えているため、共役微分におけるナブラの関係を考えると以下のように拡張できる。 すると、左辺のを共変微分したものもまた同じように0にならなければならに。 このような性質を満たした量が、アインシュタインテンソル(逆トレースリッチテンソル)である。しかし、 しかし、アインシュタインテンソルとエネルギー運動量テンソルは次元が合わないため、係数kを与えて次の等式が成り立つようにする。 以上が重力場の方程式の簡潔な導入である。 5.ロバートソン・ウォーカー計量 曲がった1次元の世界 まず、曲がった1次元の世界を考える。 この世界は円であるため、で表される。 極座標が表すと、$$x=R\cos\theta, $y=R\sin\theta$$となる。 ところで、「曲がっていない2次元の世界」つまり「真っ平らな世界」では、わずかに離れた2点間の距離はデカルト座標を使って次のようにあらわされる。 これを極座標であらわすためには、Rやθが変化したとき、dxとdyがそれぞれどれだけ変化するのか計算すればよい。すなわち、Rとθで偏微分すればよい。 これらを代入すれば、dR, dθだけ移動したときの距離が求められる。 これらが「平らな2次元」の上に極座標を引いたときの計量である。しかし「曲がっている1次元」の世界ではRは変化しないので次のようになる。 …*1 しかし、これでは角変数θが現れ、1次元で扱うのは難しい。 そこで2次元から見た場合、lによってθを次のように表せることがわかる。 計算すると、となる。 これを*1式に当てはめると次のようになる。 曲がった2次元の世界 次に、曲がった2次元の世界を考える。 この世界は球であるため、で表される。 極座標が表すと、となる。 ところで、「曲がっていない3次元の世界」では、わずかに離れた2点間の距離はデカルト座標を使って次のようにあらわされる。 これを極座標であらわすためには、Rやθやφが変化したとき、dxとdyがそれぞれどれだけ変化するのか計算すればよい。すなわち、Rとθとφで偏微分すればよい。 それらの結果を代入すれば、dR, dθ, dφだけ移動したときの距離が求められる。 これらが「曲がっていない3次元」の上に極座標を引いたときの計量である。しかし「曲がっている2次元」の世界ではRは変化しないので次のようになる。 …*2 しかし、これでは角変数が(θ、φ)の2つとなり、2次元で扱うのは難しい。 そこで3次元から見た場合、ρによってθを次のように表せることがわかる。 今、なので、計算すると、となる。 これを*2式に当てはめると次のようになる。 さらに単純化するため、曲率を導入すると、次のようになる。 曲がった3次元の世界 次に、曲がった2次元の世界を考える。 今までと違って、この世界の形がわからないが、4次元空間なのでで表される。 これについて、帰納的に次のような極座標を想定できる。 ところで、「曲がっていない4次元の世界」では、わずかに離れた2点間の距離はデカルト座標を使って次のようにあらわされる。 これを極座標であらわすためには、Rやθやφやψが変化したとき、dxとdyがそれぞれどれだけ変化するのか計算すればよい。すなわち、Rとθとφとψで偏微分すればよい。 それらの結果を代入すれば、dR, dθ, dφ, dψだけ移動したときの距離が求められる。 これらが「曲がっていない4次元」の上に極座標を引いたときの計量である。しかし「曲がっている3次元」の世界ではRは変化しないので次のようになる。 …*3 これが必要としていた「球形に曲がった3次元」の計量なのである。 しかし、これでは角変数が(ψ、θ、φ)の3つとなり、3次元で扱うのは難しい。 4次元から見ることはできないが、帰納的かつ推論的に考えると、恐らくRによってψを次のように表せると考えられる。 これを使って*3式に当てはめると次のようになる。 さらに単純化するため、rが小さいときにの近似により次の式が成り立つ。 rを表すために新しい動径ρを用いてとあらわすとすると、次のようになる。 これを*3式と比べると、であればよいことになる。 今、なので、「曲がっている2次元」の時と同様に計算していくと、曲率を導入して、次のようになる。 時間軸を含めた4次元の世界 さらに時間軸との関係を考えていく。そもそもこの議論は、宇宙のすべての場所は一様であるとの仮定から始めたので、場所によって時間との関係が変わってはならない。しかし、時間によって場所が変化することを禁止しているわけではない。そこで、今までの計算の結果から、次のような形が考えられる。(a(w)はスケール因子(膨張因子)と呼ばれる量で、時刻wでの宇宙の大きさを相対的に示す量。) これが探し求めていた「ロバートソン・ウォーカー計量」と呼ばれるものである。これが意味するところは、「宇宙が全体としてはおおよそ均等である」という条件を満たす計量である。 これを重力場の方程式に当てはめて解を導き出す。重力場の方程式はこのような形である。 、ただし 念のために宇宙項を加えると、次のようになる。 まず、ロバートソン・ウォーカー計量の式から、計量テンソルは次のようになる。 これを使って計算した結果、次の4成分のみが残る。 まだ長い計算過程があるが、計算することが目的ではないので最終結果を示す。 …① これが、我々が追い求めていたフリードマン方程式である。 また、次の式が、一般相対論におけるエネルギー保存則で、これも導かれる。 …② .フリードマン方程式 いよいよ本論である。いままでの全ての解説はこれを説明するための前座であった。 フリードマン方程式やエネルギー保存則で見られるドットは、時間wによる微分を意味しており、w=ctである。 この2つの方程式にはrつの変数ε(=ρ)、p、a、λが含まれている。方程式は2つしかないので方程式として解を出すのは不可能である。そこで、様々な場合が想定されることになる。なお、εは状態方程式(圧力pと密度εの関係)を、Kは宇宙の曲率を、a=a(w)はスケール因子を、λは宇宙項を意味している。 しかし、フリードマンがこの方程式を見つけたとき、宇宙項はまだ存在しなかった。そこで今、λ=0として計算してみる。 このとき、宇宙の速度と加速度は次のようにあらわされる。 したがって、宇宙が速度を下げながらも膨張拡大していることが示された。 なお、この解が発見されたのは1922年であるが、アインシュタインは宇宙は永遠に変化しないと考えていたため、1917年の時点で、重力場方程式に宇宙項Λを入れている。これは、万物がもく万有引力の力に対して斥力に働く宇宙項を採用し、これにより宇宙を定常状態に導くためだったと言われている。 ビッグ・バン ベルギーの司祭で天文学者のジョルジュ・ルメートルは、ロバートソン・ウォーカー計量に従う方程式を独自に導きだし、渦巻銀河が後退しているという観測結果に基づいて、「宇宙は原始的原子 (primeval atom) の“爆発”から始まった」というモデルを提唱した。 エドウィン・ハッブルの観測結果 さらに、最終的には1929年にエドウィン・ハッブルが宇宙が膨張していることを発見した。アインシュタインはこれを確かめると、人生最大の失敗だと述べて宇宙項を消した。 リンク <特殊性相対性理論> ローレンツ変数 ミンコフスキー空間 4元速度 E=mc2 <一般性相対性理論に必要な知識> エネルギー運動量テンソルTμν <一般性相対性理論> 代表的な二つの公式 測地線の方程式の展開 重力場の方程式の展開 リーマン幾何学から一般相対論へ シュバルツシルト解 膨張する宇宙~フリードマン方程式 http //www4.osk.3web.ne.jp/~kasumitu/Friedmann%20equations.pdf
https://w.atwiki.jp/pluto-herr/pages/31.html
*垂心四面体ABCDで成り立つベクトル等式の「証明」2009.01.20(火) [表記の約束]: (→PQ)または →PQ で「ベクトルPQ」を表し、E^mでm次元ユークリッド空間を表すことにする。 また S_A のAは下付きのA(添字)を表す。((→AB , →AC))または( →AB , →AC )でもって →AB と →AC の「内積」を表すことにし、一般の四面体に対してその「体積」をVで表す。 ◎さらに、J(3)は次のような3次の対称正方行列で、detJ(3)はその「行列式」を表す。detJ(3)は いわゆる「Gramの行列式」である。 J(3)= ( (→AB,→AB) (→AB,→AC) (→AB,→AD) ) ( (→AC,→AB) (→AC,→AC) (→AC,→AD) ) ( (→AD,→AB) (→AD,→AC) (→AD,→AD) ) (→AB),(→AC),(→AD)は一次独立だから detJ(3)>0 である。 さて、2009.01.14(水)に与えた「ベクトル等式」を証明する。 次のようであった。 [命題1.1」 垂心四面体ABCDにおいて △BCD、△ACD、△ABD、△ABCの面積を順 に S_A ,S_B, S_C,S_D とし、 頂点 A,B,C,D から対面の△BCD、△ACD、△ABD、△ABCに下した垂線の足をそれぞれ H_A,H_B,H_C,H_Dとすれば、 等式 {(S_A)^2}(→AH_A)+{(S_B)^2}(→BH_B)+{(S_C)^2}(→CH_C)+{(S_D)^2}(→DH_D)=(→0) ・・・(1・1・1) が成立する。 ◎ △ABC では、対応する等式は次のようになる。 [命題2.1] 3辺 BC,CA,AB の長さをそれぞれ a,b,c とし、頂点 A,B,Cから対辺 BC,CA,AB に 下した垂線の足を、順に H_A , H_B, H_C とし、△ABCの面積をSとすれば、 等式 (a^2)(→AH_A)+(b^2)(→BH_B)+(c^2)(→CH_C)=(→0) ・・・(2・1・1) が成立する。 ※※※※※※※※※※※※※※※※※※※※※※ (ア)垂心四面体ABCDで成り立つ事柄の復習 [命題1.2] 「四面体ABCD」の「垂心H」が存在する ⇔(1) AB⊥CD かつ AC⊥BD かつ AD⊥BC ・・・(1.2.1) ⇔(2) (AB)^2+(CD)^2=(AC)^2+(BD)^2=(AD)^2+(BC)^2 ・・・(1.2.2) (1)は容易に ⇔ ((→AB),(→AC))=((→AB) ,(→AD))=((→AC),(→AD)) ・・・(1.2.3) ⇔ ((→BA),(→BC))=((→BA),(→BD))=((→BC),(→BD)) ・・・(1.2.4) ⇔ ((→CA),(→CB})=((→CA),(→CD))=((→CB),(→CD)) ・・・(1.2.5) ⇔ ((→DA),(→DB))=((→DA),(→DC))=((→DB),(→DC)) ・・・(1.2.6) そこで x=((→AB),(→AC))=((→AB),(→AD))=((→AC),(→AD)), y=((→BA),(→BC))=((→BA),(→BD))=((→BC),→(BD)), z=((→CA),(→CB))=((→CA),(→CD))=((→CB),(→CD)), w=((→DA),(→DB))=((→DA),(→DC))=((→DB),(→DC)) ・・・(1.2.7) とおく。 このとき、 [命題1.3] 垂心四面体ABCDにおいて x+y=(AB)^2 ,x+z=(AC)^2, x+w=(AD)^2, y+z=(BC)^2 ,y+w=(BD)^2, z+w=(CD)^2 ・・・(1.3.1) であった。 また [命題1.4] 垂心四面体ABCDにおいて detJ(3)=(6V)^2=yzw+xzw+xyw+xyz ・・・(1.4.1) であった。 ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ 1/{4(S^2)}[yz(→PA)+xz(→PB)+xy(→PC)] ・・・(2.2.2) また 4(S^2)=yz+xz+xy ・・・(2.2.3) であった。 ◎ 以上(ア)(イ)が復習である。 ※※※※※※※※※※※※ それでは「証明」に入る ※※※※※※※※※ [命題1.1」の「証明」 垂心四面体ABCDの「垂心」をHとする。 このとき、2008.11.3[垂心四面体で見落としていた大事な事]のブログで述べたように H_A,H_B,H_C,H_D は順に△BCD,△ACD、△ABD,△ABCの「垂心」であった。よって[命題2.2]の 三角形での「垂心のベクトルによる重心座標表現」により、[命題1.2]の(1.2.7)に注意すれば、 任意の点P∈E^m(m≧3)に対して、 (→PH_A)=1/{4(S_A)^2}[zw(→PB)+yw(→PC)+yz(→PD)] ・・・(1.1.1) かつ 4(S_A)^2=zw+yw+yz ・・・(1.1.2) 同様に (→PH_B)=1/{4(S_B)^2}[zw(→PA)+xw(→PC)+xz(→PD)] ・・・(1.1.3) 4(S_B)^2=zw+xw+xz ・・・(1.1.4) (→PH_C)=1/{4(S_C)^2}[yw(→PA)+xw(→PB)+xy(→PD)] ・・・(1.1.5) 4(S_C)^2=yw+xw+xy ・・・(1.1.6) (→PH_D)=1/{4(S_D)^2}[yz(→PA)+xz(→PB)+xy(→PC)] ・・・(1.1.7) 4(S_D)^2=yz+xz+xy ・・・(1.1.8) したがって(1.1.1),(1.1.3),(1.1.5),(1.1.7)の分母を払い、四式を加えて (1.1.2),(1.1.4),(1.1.6),(1.1.8)を使えば {4(S_A)^2}(→PH_A)+{4(S_B)^2}(→PH_B)+{4(S_C)^2}(→PH_C)+{4(S_D)^2}(→PH_D) =zw(→PB)+yw(→PC)+yz(→PD)+zw(→PA)+xw(→PC)+xz(→PD) +yw(→PA)+xw(→PB)+xy(→PD)+yz(→PA)+xz(→PB)+xy(→PC) =(zw+yw+yz)(→PA)+(zw+xw+xz)(→PB) +(yw+xw+xy)(→PC)+(yz+xz+xy)(→PD) ={4(S_A)^2}(→PA)+{4(S_B)^2}(→PB)+{4(S_C)^2}(→PC)+{4(S_D)^2}(→PD) すなわち {4(S_A)^2}(→PH_A)+{4(S_B)^2}(→PH_B)+{4(S_C)^2}(→PH_C)+{4(S_D)^2}(→PH_D) ={4(S_A)^2}(→PA) +{4(S_B)^2}(→PB) +{4(S_C)^2}(→PC) +{4(S_D)^2}(→PD) ・・・(1.1.8) ゆえに {4(S_A)^2}[(→PH_A)―(→PA)]+{4(S_B)^2}[(→PH_B)―(→PB)] +{4(S_C)^2}[(→PH_C)―(→PC)]+{4(S_D)^2}[(→PH_D)―(→PD)]=(→0) すなわち {(S_A)^2}(→AH_A)+{(S_B)^2}(→BH_B)+{(S_C)^2}(→CH_C)+{(S_D)^2}(→DH_D)=(→0) よって [命題1・1]は証明された。 ( [命題1・1]の「証明」終わり )※ 注意:[命題1.4]は使用しなかった。 次に △ABCの場合の[命題2.1]は、次の[命題2.3]を使う。 [命題2.3] [命題2.2]から次の事が分かる。 △ABCにおいて、頂点A、B、Cから対辺 BC、CA、AB に下した垂線の足を順にH_A,H_B,H_Cとすれば、 H_A,H_B,H_C は 辺 BC,CA ,ABを B(H_A):(H_A)C=y z ,C(H_B):(H_B)A=z x ,A(H_C):(H_C)B=x y の比に分ける点である。 [命題2.3]については、Gooのブログ「あれこれゆっくりと学びについて考える」 の2008.8.31の[三角形の垂心のベクトルによる重心座標表現」に 書いてあるので,そちらを見ていただきたい。) ※※※※※※※※※※※※ [命題2.1]の「証明」をしよう※※※※※※※※※ [命題2.3]から△ABCの場合の[命題2.1]の「証明」は簡単である。 [命題2.1]の「証明」 [命題2.3]から [命題2.2]の(2・2・1)に注意すれば (→AH_A)={1/(y+z)}[z(→AB)+y(→AC)]={1/(a^2)}[z(→AB)+y(→AC)] ・・・(2.1.1) (→BH_B)={1/(x+z)}[z(→BA)+x(→BC)]={1/(b^2)}[z(→BA)+x(→BC)] ・・・(2.1.2) (→CH_C)={1/(x+y)}[y(→CA)+x(→CB)]={1/(c^2)}[y(→CA)+x(→CB)] ・・・(2.1.3) ( なお BC=a ,CA=b ,AB=c に注意せよ ) 分母を払って 加えれば (a^2)(→AH_A)+(b^2)(→BH_B)+(c^2)(→CH_C) =[z(→AB)+y(→AC)]+[z(→BA)+x(→BC)]+[y(→CA)+x(→CB)] =[z(→AB)+z(→BA)]+[y(→AC)+y(→CA)]+[x(→BC)+x(→CB)] =(→0)+(→0)+(→0)=(→0) ( [命題2.1]の「証明」終わり ) ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ ◎ [命題1.1」の「別証明」 (1.1.1)で P ⇒A ,(1.1.3)で P ⇒B ,(1.1.5)で P ⇒ C ,(1.1.7)で P ⇒ D として 分母を払い四式を加えれば、 {4(S_A)^2}(→AH_A)+{4(S_B)^2}(→BH_B)+{4(S_C)^2}(→CH_C)+{4(S_D)^2}(→DH_D) =[zw(→AB)+zw(→BA)]+[yw(→AC)+yw(→CA)]+[yz(→AD)+yz(→DA)] +[xw(→BC)+xw(→CB)]+[xz(→DB)+xz(→BD)]+[xy(→CD)+xy(→DC)] =(→0)+(→0)+(→0)+(→0)+(→0)+(→0)=(→0) ( [命題1.1」の「別証明」終わり)
https://w.atwiki.jp/c21coterie/pages/571.html
慶應大学講義 応用確率論 第三回 分散 標準偏差 チェビシェフの不等式 Youtubeに慶応大学の統計講座が上がっていました。 今回の講義動画の焦点はネコでもわかるチェビシフの不等式50分目からですね。 独習者にとってはありがたい限りです。 内容覚書。 離散系 Y=f(X)の平均 事象F 、結果f(x),確率Pとするとき 例えば下記のような確率変数があったとしよう F _____A1_____A2____A3___A4____A5 f(x) f(x1) f(x2) f(x3) f(x4) f(x5) P_______P1____P2____P3___P4____P5 Y=f(X)が f(x1)=f(x3)=f(x4)=y1 f(x2)=f(x5)=y2 だったとする。 2通りの結果しかないので この場合確率変数の表は G B1 B2 Y _y1 y2 Q _q1 q2 となりAは根源事象の組み合わせなので背反より q1=P(A1∨A3∨A4)=P(A1)+P(A3)+P(A4)=p1+p3+p4 q2=P(A2∨A5)=p2+p5 E(Y)=q1*y1+q2*y2=(p1+p3+p4)y1+(q2+q5)y2 =f(x1)p1+f(x3)p3+f(x4)p4+f(x2)p2+f(x5)p2 となる。 つまりY=f(x)の平均について纏めると E(Y)=Σf(x)pi という当然の話となる。 分散 2つの確率変数の表があったとする。 ① F __A1___A2___A3 X __10__100_1000 P 6/10 3/10 1/10 ② F __A1____A2___A3 X 120 150 190 P 6/10 3/10 1/10 平均は同じだが前者の方がばらつきが大きい。 これを分散としてあらわす。 この表を株価の変動予測のようなものだと考えるとこのような表は意味を持つ。 ①はリターンが大きいがリスクも大きい ②はリターンが小さいがリスクは小さい こういうのを分析には分散がよい。 分散は良い性質を持つ統計量。 例えば 幾ら分散が小さくても大損がある分布とかは怖いよな。 分散とは平均からの距離の2乗の平均。 この定義は分かりやすい。 ①や②の分散は円に対する計算なので分散を表す単位は 円^2 分散の計算結果も物理量と同じ単位が必要。 チェビシフ不等式 平均と分散しかわからないデータから、具体的にどんな値がどれだけでるのかについて考察した場合にでてくる不等式。 e=xの平均として e-ε~e+εの外に値を取る<=V(x)/(ε^2)となるらしい。 この数式だけだと出にくさの比として出てくるから%になおす式が必要に思えるが? εをV(x)の定数倍とすると計算が簡単になり定数が出てくる。 ε=3V(x)は チェビシフの不等式はV(x)/9V(x)=1/9のようになる。 よって上記の場合 平均と分散が与えられたとき標準偏差の3倍の範囲内に値が出てくる確率は 1-1/9=8/9となる。 不等式の証明 分散の式はV(x)=∫(実数全体)(x-e)p(x)dxとなり このうち不等式で計算したい範囲は a=∫(|x-e| =ε)(x-e)^2p(x)dx aはxからε以上離れた部分の積分。 当然積文は単調増加なので V(x) =aが成り立つ。 さらに |xi-x| εなので a =b=∫)(|x-e| =εの範囲)ε^2*p(x)dx が成り立つ。 b=ε^2∫p(x)dx=ε^2*P({w{|x(w)-e|= ε}) 結果 V(x)まで三段論法でさかのぼって V(x)/ε^2 =P({w{|x(w)-e|= ε}) となる。 うーんなるほど!
https://w.atwiki.jp/c21coterie/pages/769.html
プロジェクトオイラーという数学問題の載ったサイトの問題を堀江伸一こと私がProlog言語で解いていくページ。 Prologは配列と優先順位付キューがなく、std setの自前実相も使い出が悪いのでそれらがないと効率的に解けない問題をPrologで解くことは難しいです。 そういう場合C++に逃げたりしますが基本Prologでときます。 Problem 131 「素数と立法数の関係」 † http //odz.sakura.ne.jp/projecteuler/index.php?cmd=read page=Problem%20131 いくつかの素数pでは, ある正の整数nが存在して, n^3+pn^2が立方数になる. 例えば, p = 19のときには, 8^3+19×8^2=12^3である. このような性質を持つ各素数について, nの値は一意に定まる. また, 100未満の素数では4つしかこの性質を満たさない. この性質を持つ100万未満の素数は何個あるだろうか? 解法 この問題は効率的な解法を思いつかなかったので数学掲示板で回答を教えてもらいました。 最大公約数をとることに気付けば自力でもとけたかもしれません。 らすかるさん というかたの回答。 u^3-n^3=pn^2 u=bg, n=ag, gはuとnの最大公約数で1<a<bとすると g(b^3-a^3)=pa^2 b^3-a^3はaと互いに素だからgがa^2の倍数。 g=a^2hとおくと h(b^3-a^3)=p b^3-a^3>1だから、h=1,b^3-a^3=(b-a)(b^2+ab+a^2)=p よって b-a=1,b^2+ab+a^2=p すなわち (a+1)^2+a(a+1)+a^2=p 整理して 3a^2+3a+1=p またh=1なのでg=a^2、従ってn=a^3,u=a^2(a+1) 元の式に代入すると {a^2(a+1)}^3-(a^3)^3=(3a^2+3a+1)a^6 という恒等式になります。 3a^2+3a+1<1000000 を解くと a<(√133333-1)/2<577 なので a=1~576について3a^2+3a+1が素数になるかどうかを調べればいいですね。 多少工夫するとしたら、 a≡1,5 (mod 7) のとき 3a^2+3a+1 は7の倍数になりますので 候補の数を5/7には減らせます。 また個数が412個以下であることもわかります。 a=576のとき3a^2+3a+1=997057=(素数)なので 1000000以下ではこれが最大。 でした。 これに従ったコードは以下の通り。 これはエレガントな解法であやかりたいものです。 not_prime(N) -N 2,!. not_prime(N) - Limit is floor(sqrt(N)), between(2,Limit,M), N mod M= =0, !. is_prime(N) -not(not_prime(N)). test(P) - between(1,576,A), P is 3*A^2+3*A+1, is_prime(P). main131 - findall(A,test(A),Ans), write(Ans), length(Ans,Len), write(Len). Problem 132 「巨大なレピュニットの因数」 † http //odz.sakura.ne.jp/projecteuler/index.php?cmd=read page=Problem%20132 1のみからなる数をレプユニットという. R(k) を長さ k のレプユニットとする. 例えば, R(10) = 1111111111 = 11×41×271×9091 となり, 素因数の和は9414となる. R(10^9) の最初の40個の素因数の和を求めよ. 解法 11111、、、がある桁数でpで割り切れたとき1111、、、を9倍したものは999、、、 これに1を足してpで割ると、1余る。 最小の桁数はかならずp-1の約数桁となり10^pの約数桁の余りは計算を早くできる。 かつ探す約数は2と5の倍数でなくてはいけないのでそれだけ探す。 これで結構高速化と思って実装、何か遅いと思ったらnot_prime述語を書き間違えていた。 notPrime(P) - between(2,P,N), (N*N P - !,fail;true), P mod N= =0, !. isPrime(P) - not(notPrime(P)). isOKNum(P) - isPrime(P), P mod 2 0, P mod 5 0. modPow(_,_,0,Sum,Sum) -!. modPow(P,Pow10,Num,Mult,Result) - Num mod 2= =1, !, Num1 is Num//2, Pow10_1 is (Pow10*Pow10) mod P, Mult1 is (Mult*Pow10) mod P, modPow(P,Pow10_1,Num1,Mult1,Result). modPow(P,Pow10,Num,Mult,Result) - Num1 is Num//2, !, Pow10_1 is (Pow10*Pow10) mod P, modPow(P,Pow10_1,Num1,Mult,Result). bai2or5(P,P1) -0 (P mod 5) ,P1 is P*2. bai2or5(P,P1) -P1 is P*5. f(Div,P,P,_) - P = Div, !, fail. f(_,_,MinLen,MinLen) - 10^9 mod MinLen= =0, !. f(Div,P,MinLen,Result) - PM is P-1, PM mod Div= =0, !, modPow(P,10,Div,1,Amari1), (Amari1= =1 - min(MinLen,Div,MinLen1);MinLen1 is MinLen), bai2or5(Div,Div1), f(Div1,P,MinLen1,Result). min(A,B,A) -A B,!. min(_,B,B) -!. search(_,40,AnsList,AnsList) -!. search(P,Count,AnsList,Result) - isOKNum(P), findall(Len,f(1,P,P,Len),MinLens), length(MinLens,Len), Len 0, !, Count1 is Count+1, P1 is P+1, search(P1,Count1,[P|AnsList],Result). search(P,Count,AnsList,Result) - P1 is P+1, !, search(P1,Count,AnsList,Result). sum([],0) -!. sum([X|Xs],Result) -sum(Xs,Re),Result is Re+X. main132 - search(5,0,[],AnsList), write(AnsList), sum(AnsList,Ans), write(Ans). Problem 133 「レピュニットの非因数」 † 1のみからなる数をレピュニットという. R(k) を長さ k のレピュニットとする. 例えば, R(6) = 111111 となる. R(10^n) というレピュニットについて考える. R(10), R(100), R(1000) は 17 では割り切れないが, R(10000) は 17 で割り切られる. さらに, R(10^n) が 19 で割り切られるような n は存在しない. 驚くべきことに, R(10^n) の因数となりうる100未満の素数は 11, 17, 41, 73 の4個のみである. R(10^n) の因数となりえない100000未満の素数の和を求めよ. 1111、、、を素数pで割った時割り切れる最短の長さが2と5以外の素因数を持っていたらその数は条件を満たしません。 なのですが私のコードはとても遅いのでたぶん、間違ってはないが頭の悪い解法なのでしょう。 検索して正しい解法を調べるべきですね? 割り切ったレピュニット数を9倍すると999、、、99 それに1足した数を素数pで割ると余りが1になる長さがありそれはフェルマーの小定理よりp-1桁。 すると答えは素数p-1の約数だけを調べればよい。 これで10秒まあまあの速度です。 notPrime(P) - between(2,P,N), (P N*N - !,fail;true), P mod N= =0, !. isPrime(P) - not(notPrime(P)). modPow(_,_,0,Sum,Sum) -!. modPow(P,Pow10,Num,Mult,Result) - Num mod 2= =1, !, Num1 is Num//2, Pow10_1 is (Pow10*Pow10) mod P, Mult1 is (Mult*Pow10) mod P, modPow(P,Pow10_1,Num1,Mult1,Result). modPow(P,Pow10,Num,Mult,Result) - Num1 is Num//2, !, Pow10_1 is (Pow10*Pow10) mod P, modPow(P,Pow10_1,Num1,Mult,Result). yakusu(P,Div,P1) -P mod Div= =0,P1 is P // Div. yakusu(P,Div,Div) -P mod Div= =0. f(Div,P,_) - Div2 is Div*Div, Div2 P, !, fail. f(Div,P,P1) - PM is P-1, yakusu(PM,Div,P1), modPow(P,10,P1,1,Amari), Amari= =1. f(Div,P,Result) - !, Div1 is Div+1, f(Div1,P,Result). min(A,B,A) -A B,!. min(_,B,B) -!. div2or5(P,P1) -P mod 5= =0,!,P1 is P//5. div2or5(P,P1) -P mod 2= =0,!,P1 is P//2. is2or5(1) -!. is2or5(P) -div2or5(P,P1), is2or5(P1). arrayMin([X],X) -!. arrayMin([X|Xs],Result) -arrayMin(Xs,Re),min(X,Re,Result). searchMin(P) - findall(Len,f(1,P,Len),Lens), arrayMin(Lens,MinLen), !, not(is2or5(MinLen)). all_search(P) - between(11,100000,P), isPrime(P), searchMin(P). sum([],0) -!. sum([X|Xs],Result) -sum(Xs,Re),Result is Re+X. main133_1 - findall(P,all_search(P),Ps), sum(Ps,Ans), Ans1 is Ans+2+3+5+7, write(Ans1). Problem 134 「素数ペアの結合」 † http //odz.sakura.ne.jp/projecteuler/index.php?cmd=read page=Problem%20134 連続する素数 p1 = 19, p2 = 23 について考える. 1219 は末尾の桁が p1 からなり p2 で割り切られる最小の数であることが確かめられる. 実際, p1 = 3, p2 = 5 を除けば, 全ての p2 p1 なる連続する素数のペアについて, 末尾の桁が p1 からなり p2 で割り切られる数 n が存在する. S を n の最小のものであるとする. 5 ≤ p1 ≤ 1000000 を満たす連続する素数のペア全てに対し ∑ S を求めよ. 解法 19と23なら 100*x+19と分解でき。 19 mod 23=-4 ですから100x mod 23=4となればよい。 オイラーの定理より 100^22 mod 23=1 ですから。 xの一つの答えとして 4*100^21 となる。 これをmod演算の中で解くと最小のxが見つかる この問題はPrologで速度が出なかったのでC++でもコードを書いてみた。 Prologのほうはコードのほとんどの計算時間が100万以下の素数を求める時間で消費されています。 C++ time 0.532sec Prolog time 13.397sec c++版 #include stdio.h #include iostream #include string.h #include time const int Limit =1000090; bool is_prime[Limit]; void prime_list(){ memset(is_prime,true,sizeof(is_prime)); is_prime[0]=is_prime[1]=false; int add; for(int i=2;i Limit;i++){ if(is_prime[i]==false)continue; if(i%2==0)add=i; else add=i*2; for(int j=i+add;j Limit;j+=add){ is_prime[j]=false; } } } __int64 base(int p1){ __int64 Base=1; while(Base p1)Base*=10; return Base; } __int64 mod_pow(__int64 p1,__int64 p2){ __int64 Base,Pow; Base=Pow=base(p1); __int64 AllPow=1,Sa=p2-p1,R=p2-2; while(R 0){ if(R % 2==1){ AllPow=(AllPow*Pow) % p2; } Pow=(Pow*Pow) % p2; R/=2; } return ((AllPow*Sa) % p2)*Base+p1; } int main(){ clock_t start,end; start = clock(); prime_list(); __int64 ans=0,T; int p2; for(int p1=5;p1 1000*1000;p1+=2){ if(is_prime[p1]==false)continue; for(p2=p1+2;is_prime[p2]==false;p2+=2){ } ans+=mod_pow(p1,p2); } end= clock(); std cout ans "\n"; std cout (double)(end-start)/CLOCKS_PER_SEC "秒かかりました"; } prolog版 not_prime(2) -!,fail. not_prime(3) -!,fail. not_prime(N) - Limit is floor(sqrt(N)), between(2,Limit,D), (N mod D)= =0, !. is_prime(N) -not(not_prime(N)). base(P,10) - P 10,!. base(P,100) - P 100,!. base(P,1000) - P 1000,!. base(P,10000) - P 10000,!. base(P,100000) - P 100000,!. base(P,1000000) -P 1000000,!. mod_pow(0,_,_,Result,Result) -!. mod_pow(R,P2,Pow,PowAll,Result) - R mod 2= =1, !, R1 is R//2, Pow1 is (Pow*Pow) mod P2, PowAll1 is (PowAll*Pow) mod P2, mod_pow(R1,P2,Pow1,PowAll1,Result). mod_pow(R,P2,Pow,PowAll,Result) - !, Pow1 is (Pow*Pow) mod P2, R1 is R//2, mod_pow(R1,P2,Pow1,PowAll,Result). searchN(P2,Base,P1,Result) - Sa is P2-P1, P22 is P2-2, %X is (Base^(P2-2)*Sa) mod P2, mod_pow(P22,P2,Base,1,T), X is (T*Sa) mod P2, Result is X*Base+P1. searchP([P1,_],Ans) -1000000= P1,!,write(Ans). searchP([P1,P2],Ans) - is_prime(P2), !, (P2 mod 1000 10- write([P2]),nl;true), base(P1,Base), searchN(P2,Base,P1,Re), Ans1 is Ans+Re, P3 is P2+1, searchP([P2,P3],Ans1). searchP([P1,P2],Ans) - P3 is P2+1, searchP([P1,P3],Ans). main134 - searchP([5,7],0). Problem 139 「ピタゴラスタイル」 † http //odz.sakura.ne.jp/projecteuler/index.php?cmd=read page=Problem%20139 ピタゴラス数を題材にした問題。 詳細はリンク先を参照のこと。 問200くらいまでは結構普通に解ける問題が多いと思うのでそこまではコードを掲載。 それ以上の問題は今後解き方や考え方だけ掲載しようと思ってる。 解法 取り合えず答えが見たかったので、最初Wikiに書いてある通りの原始ピタゴラス数の求め方で全探索しました。 取り立てて遅いというわけではないがちょっと遅い処理になりました。 出てきた答えを見ると、 Wikiの原始ピタゴラス数を求める関数a=M^2-N^2,b=2MN,c=M^2+N^2として この問題の条件を満たすMi,NiはM1=2,N1=1として Mi+1=2Mi+Ni Ni+1=Mi MiとNiの組から求まる原始ピタゴラス数が答えの元となります。 そして原始ピタゴラス数が求まればそれを自然数倍に相似拡大した三角形は全部この問題の条件を満たす。 かつ三角形が原始ピタゴラス数のとき直角の2辺が1差のものしかこの問題の条件を満たさない。 出てきた答えは以上のような不思議で単純な関係があったのでなぜこれが成り立つか考えてみたが自力ではちょっと考え付きませんでした。 以下はYahoo知恵袋でこの問題についてaerile_reさんというかたに教えていただいた内容を要約したものです。 aerile_reさんによる解説 a^2+b^2=c^2 b-a=kとしここでcがkの倍数であると仮定します。 kは既約なピタゴラス数の性質より奇数となります。 すると a^2+(a+k)^2=c^2 展開して整理すると 2a^2=c^2-2ka-k^2となりcはkの倍数であると仮定したので aはkの倍数となります。 bはa+kだったので必然的にbはkの倍数であるとなり,a,b,cがすべてkの倍数となり、既約であるという条件と矛盾します。 よってkは1しかありえません。 解説要約終わり ここから先MiとNiがペル数になるという条件もあるのですがこれはよくわかりませんでした。 解説の部分まででも十分計算量が落ちているので今のところはここで満足している状態です。 解法 辺の差が1差ですので 1 か -1=m^2-n^2-2mn としてnを任意の定数としてnを1から計算しmの2次方程式としてとくとm=n+sqrt(2n^2 (+か-) 1) あとはこれが整数かつピタゴラス数の数であり周長が10^8以下であると確認し、直角三角形の自然数倍の相似拡大の個数を数えて集計すれば答えとなります。 calc1(N,T) -T is 2*N*N+1. calc1(N,T) -T is 2*N*N-1. gcd(0, B, G) - G is abs(B). gcd(A, B, G) - A =\= 0, R is B mod A, gcd(R, A, G). sum([],0) -!. sum([[_,Perm]|Rest],Result) -sum(Rest,Re),Result is Re+Perm. ok(N,[[M,N,A,B,C],Perm]) - calc1(N,T), T1 is floor(sqrt(T)), T= =T1*T1, M is N+T1, M N, 1= =(M-N) mod 2, gcd(M,N,1), A is M^2-N^2, B is 2*M*N, C is M^2+N^2, All is A+B+C, 10^8 All, Perm is (10^8-1)//All. roopN(N,_) - M is N+1, 10^8= 2*M*(M+N), !, fail. roopN(N,Result) - ok(N,Result). roopN(N,Result) - N1 is N+1, roopN(N1,Result). main139 - findall(Ans,roopN(1,Ans),Answers),sum(Answers,Ans1), write([ans,Ans1]).
https://w.atwiki.jp/kummer/pages/42.html
最終更新日時 2011年03月04日 (金) 21時55分04秒 代数的整数論 #003 (166-235) 元スレ: http //science4.2ch.net/test/read.cgi/math/1141019088/166-235 ログ元: http //2se.dyndns.org/test/readc.cgi/science4.2ch.net_math_1141019088/166-235 166 :Kummer ◆g2BU0D6YN2 :2006/04/19(水) 16 41 25 次の命題は周知だが、証明しておく。 補題 p を素数とすると 1 ≦ k ≦ p - 1 のとき [p,k] ≡ 0 (mod p) である。 ここで [p,k] は p個のものから順序を無視して k 個取り出す組み合わせの数である。 つまり、[p,k] = p(p - 1)...(p - k + 1)/k! である。 証明 [p,k]k! = p(p - 1)...(p - k + 1) だから [p,k]k! ≡ 0 (mod p) である。 1 ≦ k ≦ p - 1 のとき k! は p で割れない。 [p,k] ≡ 0 (mod p) である。 証明終 167 :Kummer ◆g2BU0D6YN2 :2006/04/20(木) 13 01 58 163 の別証として Eisenstein の既約性定理を使用した証明を行う。 命題(Eisenstein の既約性定理) A を一意分解整域とし、K をその商体とする。 p を A の素元とする。 f(X) = a_0X^n + a_1X^(n-1) + ... + a_n を A 係数の多項式とする。 ここで、a_0 は p で割れない。 1 ≦ i ≦ n のとき a_i ≡ 0 (mod p) とし、 a_n は p^2 で割れないとする。 このとき f(X) は K で既約である。 証明 周知なので省略。 168 :Kummer ◆g2BU0D6YN2 :2006/04/20(木) 13 08 05 163 の別証 命題( 163と同じ) λを奇素数としたとき、有理数体上の多項式 1 + X + ... X^(λ-1) は 既約である。 証明 h(X) = 1 + X + ... X^(λ-1) とおく。 h(X + 1) が既約であることを示せばよい。 h(X) = (X^λ - 1)/(X - 1) だから h(X + 1) = ((X + 1)^λ - 1)/X = X^(λ-1) + ... + [λ,k]X^(λ- k -1) + ... + [λ,λ-1] である。 ここで [p,k] は p個のものから順序を無視して k 個取り出す組み合わせの数である。 155 より [λ,k] はλ で割れる。 [λ,λ-1] = λ である。 よって、Eisenstein の既約性定理( 167)より h(X + 1) は既約である。 証明終 169 :Kummer ◆g2BU0D6YN2 :2006/04/20(木) 13 10 35 168 訂正 155 より [λ,k] はλ で割れる。 166 より [λ,k] はλ で割れる。 170 :132人目の素数さん:2006/04/20(木) 14 56 28 ばか 171 :ゆんゆん ◆kIuLDT68mM :2006/04/20(木) 15 09 31 9208さんて、改名、トリ変えしたの? 172 :Kummer ◆g2BU0D6YN2 :2006/04/20(木) 15 26 06 円分整数環 Z[ζ] ( 147)の元は 163 により (形式1) a_0 + a_1ζ + ... + a_(λ-2)ζ^(λ-2) の形に一意に表される。 ここで、各a_i は有理整数である。 関係式 1 + ζ + ... + ζ^(λ-1) = 0 より、 ζ^(λ-1) = -1 -ζ- ... -ζ^(λ-2) となることを使って、 Z[ζ] の2元の積は、(形式1)の形に求まる。 しかし、この計算はやや面倒なので、 Z[ζ] の元を (形式2) a0 + a_1ζ + ... + a_(λ-1)ζ^(λ-1) の形に表すほうが便利である。 この形の2元の積は、関係式 ζ^λ = 1 を使って (形式2)の形に求める。 Z[ζ] の元を (形式2) に表示するのは一意ではないが、 a0 + a_1ζ + ... + a_(λ-1)ζ^(λ-1) = b0 + b_1ζ + ... + b_(λ-1)ζ^(λ-1) なら、a_0 - b_0 = a_1 - b_1 = ... = a_(λ-1) - b_(λ-1) という関係が成立ち、逆も言える。 (形式2)の元を f(ζ), g(ζ) ... などと書く。 173 :Kummer ◆g2BU0D6YN2 :2006/04/20(木) 16 01 43 λ= 5 として Z[ζ] における2元の積の計算の例を挙げる。 f(ζ) = 1 + 2ζ + 3ζ^2 + 4ζ^3 + 5ζ^4 と g(ζ) = 1 + 3ζ + 2ζ^2 + ζ^3 の積は下図のように通常の10進数の計算と同様にする。 ただし、ζ^5 = 1 だから、ζ^6 = ζ、ζ^7 = ζ^2 などを考慮して 左に伸びず循環的になっている。 5 4 3 2 1 0 1 2 3 1 ━━━━━━━━━━━━━━━━━ 5 4 3 2 1 12 9 6 3 15 6 4 2 10 8 2 1 5 4 3 ━━━━━━━━━━━━━━━━━ 25 18 16 19 27 よって f(ζ)g(ζ) = 27 + 19ζ + 16ζ^2 + 18ζ^3 + 25ζ^4 である。 各項の係数から 16 を引いて f(ζ)g(ζ) = 11 + 3ζ + 2ζ^3 + 9ζ^4 ともなる。 174 :Kummer ◆g2BU0D6YN2 :2006/04/20(木) 17 33 16 1 ≦ i ≦ λ-1 のとき、Z[ζ] ( 147)の元 f(ζ) に対して、 f(ζ^i) は 一意に決まる。 つまり、f(ζ) = g(ζ) なら f(ζ^i) = g(ζ^i) である(確かめよ)。 f(ζ) のノルム Nf(ζ) を Nf(ζ) = f(ζ)f(ζ^2)...f(ζ^(λ-1)) で定義する。 175 :Kummer ◆g2BU0D6YN2 :2006/04/20(木) 17 52 22 Nf(ζ) が有理整数であることは体論で周知だが、次のように してもわかる。 Nf(ζ) = b0 + b_1ζ + ... + b_(λ-1)ζ^(λ-1) とする。 右辺を g(ζ) とおく。 1 ≦ i ≦ λ-1 のとき、 g(ζ^i) = f(ζ^i)f(ζ^2i)...f(ζ^(λ-1)i) = g(ζ) である(確かめよ)。 よって、 b0 + b_1ζ + ... + b_(λ-1)ζ^(λ-1) = b0 + b_1ζ^i + ... + b_(λ-1)ζ^(λ-1)i である。 ij ≡ 1 (mod λ) となる整数 j をとれば、 ζ = (ζ^i)^j だから b_0 - b_0 = b_1 - b_j である( 172)。 よって b_1 = b_j となる。 i を変化させて、 b_1 = b_2 = ... = b_(λ-1) となる。 よって、 Nf(ζ) = b0 + b_1ζ + ... + b_(λ-1)ζ^(λ-1) = b_0 + b_1(ζ+ ζ^2 + ... + ζ^(λ-1)) であるが、ζ+ ζ^2 + ... + ζ^(λ-1) = -1 だから、 Nf(ζ) = b_0 - b_1 ∈ Z である。 176 :Kummer ◆g2BU0D6YN2 :2006/04/20(木) 18 25 10 いつものように、λを奇素数としてζを X^λ = 1 の原始根の1つとする。 複素数 z の共役を z~ と書く。 ζ(ζ~) = |ζ|^2 = 1 だから ζ~ = ζ^(-1) = ζ^(λ-1) である。 1 ≦ i ≦ λ-1 のとき、 (ζ^i)~ = ζ^(-i) である。 よって、f(ζ^i)~ = f((ζ^i)~) = f(ζ^(-i)) である。 よって、f(ζ), f(ζ^2), ... f(ζ^(λ-1)) は互いに共役な (λ-1)/2 個のペアから構成される。 互いに共役な複素数の積は正だから、 Nf(ζ) = f(ζ)f(ζ^2)...f(ζ^(λ-1)) ≧ 0 となる。 明らかに、Nf(ζ) = 0 が 0 となるのは f(ζ) = 0 のときに限る。 177 :132人目の素数さん:2006/04/20(木) 18 54 55 171 スレ嫁タコ 178 :Kummer ◆g2BU0D6YN2 :2006/04/21(金) 11 11 23 円分整数のノルムが常に正である( 176)というのは 複素数の性質(具体的には複素変数の指数関数の性質)、 遡れば実数の連続性から出たわけで、簡単に見えるが わりと深い結果である。 円分整数環 Z[ζ] は Z[X]/(1 + X + ... + X^(λ-1)) として 代数的にも定義出来る。 しかし、上記の結果を実数の連続性を使わずに代数的に証明するのは 不可能だろう(たぶん)。 179 :Kummer ◆g2BU0D6YN2 :2006/04/22(土) 12 02 11 Eisenstein の既約性定理( 167)の証明をしよう。 これは次の自明な原理に基づいている。 補題 A を整域とする。 f(X), g(X) を A[X] の 0 でない元として、 f(X) の最低次の項を a_rX^r g(X) の最低次の項を b_sX^s とすると h(X) = f(X)g(X) の最低次の項は a_rb_sX^(r+s) である。 180 :Kummer ◆g2BU0D6YN2 :2006/04/22(土) 12 04 17 179から次の補題が直ちに得られる。 補題 A を整域とする。 f(X), g(X) を A[X] の元として、 cX^n = f(X)g(X) とする。ここで、c ≠ 0、n 0 であり、 f(X), g(X) の次数はそれぞれ1以上とする。 このとき、適当な A の元 a, b があって f(X) = aX^r、g(X) = bX^s となる。 181 :Kummer ◆g2BU0D6YN2 :2006/04/22(土) 12 09 43 180から次の補題が直ちに得られる。 補題 A を環とし、P をその素イデアルとする。 h(X) = a_0X^n + a_1X^(n-1) + ... + a_n を A 係数の多項式とする。 ここで、a_0 は P に含まれず、 1 ≦ i ≦ n のとき a_i ≡ 0 (mod P) とする。 f(X), g(X) を A[X] の元として、h(X) = f(X)g(X) とする。 ここで、f(X), g(X) の次数はそれぞれ1以上とする。 このとき、a_n ≡ 0 (mod P^2) となる。 証明 仮定より、h(X) ≡ a_0X^n (mod P) となる。 よって、a_0X^n ≡ f(X)g(X) (mod P) である。 f(X)、g(X) のそれぞれの定数項を b, c とする。 180 より、b ≡ 0 (mod P), c ≡ 0 (mod P) となる。 よって a_n = bc は P^2 に含まれる。 証明終 182 :Kummer ◆g2BU0D6YN2 :2006/04/22(土) 12 21 54 181より、Eisenstein の既約性定理( 167)におけるf(X)は f(X) = g(x)h(x) と分解されない。 ここで、g(X), h(X) は A[X] の元でともに次数が1以上である。 これから原始多項式の積が原始多項式になるというGaussの補題を使う よく知られた論法で f(X) が K で既約であることが出る。 183 :Kummer ◆g2BU0D6YN2 :2006/04/22(土) 12 34 51 ついでだから、 182で言及したGaussの補題の証明をしよう。 これもEisenstein の既約性定理の証明( 181)と同様の論法、 つまり mod p での還元(reduction)を使う。 Gaussの補題は次の自明な原理に基づいている。 補題 A を整域とすると A[X] も整域である。 184 :132人目の素数さん:2006/04/22(土) 12 42 39 ┌-―ー- ; | (・∀・) ノ ____ 上―-― ____ | (・∀・) | / \ | (・∀・) | | ̄ ̄ ̄ ̄ ( ̄ ̄ ̄) | ̄ ̄ ̄ ∧ ([[[[[[|]]]]]) ,∧ ⌒ [=|=|=|=|=|=] ⌒ /⌒\ _|iロi|iロiiロi|iロ|_∧ /⌒\_ ]皿皿[-∧-∧|ll||llll||llll||llll|lll| ̄|]皿皿[_| |_/\_|,,|「|,,,|「|ミ^!、|]|[|]|[|][]|_.田 | ∧_ ] | . ∩ | |「| |「||| ll;|||}{|||}{|||}{|||}{|,田田.|__| | ̄ ̄ ̄ ̄|「| ̄ ̄||[[|門門門|]]|[_[_[_[_[_[ /i~~i l ∩∩l .l ∩ ∩ l |__| .| .∩| .| l-, ,,,,,= ~| | | |,,=i~~i==========|~~|^^|~ ~ i----i==i,, | i | l ,==,- ^^ l |. ∩. ∩. ∩. | |∩| |∩∩| |~~^i~ i、 ,=i^~~.| |.∩.∩ |,...,|__|,,|__|,,|__|,,|__|,....,||,,|.|,.....,||,|_|,|.|,....,| | |~i l~| .| | ,,,---== ヽノ i ヽノ~~~ ヽノ ~ ソ^=-.i,,,,|,,,| .|..l i,-= ~~--,,, \ \ l / / / __,-=^~ |,- ~ -,,,_ ~-,,. \ .\ | ./ / _,,,-~ / ~^ =、_ _ ^ - i= ^~~~~~~~~~~~~~~~~~~~~^ =i - ^~ ~^^ ヽ ヽ i ジエンキャッスル / / ノ ヽ 、 l | l l / ./ / \_ 、i ヽ i / ,,== ==,,,,___,,,== ~ 185 :Kummer ◆g2BU0D6YN2 :2006/04/22(土) 12 46 44 183 を mod P で言い換えると次の補題となる。 補題 A を環とし、P をその素イデアルとする。 f(X), g(X) を A[X] の元として、f(X) ≡ 0 (mod P) でも g(X) ≡ 0 (mod P) でもないとする。 このとき、f(X)g(X) ≡ 0 (mod P) とならない。 186 :Kummer ◆g2BU0D6YN2 :2006/04/22(土) 12 54 48 定義 A を一意分解整域とし、 f(X) = a_0X^n + a_1X^(n-1) + ... + a_n を A 係数の 0 でない 多項式とする。ここで、n 0 とする。 a_0, a_1, ..., a_n の公約元が A の可逆元以外ないとき、 f(X) を原始多項式という。 187 :Kummer ◆g2BU0D6YN2 :2006/04/22(土) 13 03 30 補題 A を一意分解整域とし、 f(X) を A 係数の次数が1以上の多項式とする。 f(X) が原始多項式( 186)でないなら、A の素元 p で f(X) の各係数を 割るものがある。 証明は明らかだろう。 188 :Kummer ◆g2BU0D6YN2 :2006/04/22(土) 13 13 13 補題(Gauss) A を一意分解整域とし、f(X), g(X) を A 係数の原始多項式とする。 このとき、f(X) と g(X) の積 h(X) も原始多項式である。 証明 p を A の任意の素元とする。 f(X) は原始多項式だから f(X) ≡ 0 (mod p) でない。 同様に、g(X) ≡ 0 (mod p) でない。 よって、 185 より h(X) ≡ 0 (mod p) とならない。 よって 187 より h(X) は原始多項式である。 証明終 189 :Kummer ◆g2BU0D6YN2 :2006/04/22(土) 15 04 21 ここで本題に戻って、円分整数環 Z[ζ] ( 147)における 整除の判定方法について述べる。 Z[ζ] の 非零元 f(ζ) と g(ζ) が与えられたとき、 g(ζ) = f(ζ)h(ζ) となる h(ζ) が存在するとき、 g(ζ) は f(ζ) で割れるといい、この事実を記号 f(ζ)|g(ζ) で表す。 f(ζ) が 有理整数 a のときは、この判定は簡単である。 g(ζ) = b_0 + b_1ζ + ... + b_(λ-1)ζ^(λ-1) とし、 h(ζ) = c_0 + c_1ζ + ... + c_(λ-1)ζ^(λ-1) とする。 g(ζ) = ah(ζ) より、 b_0 - ac_0 = b_1 - ac_1 = ... = b_(λ-1) - ac_(λ-1) となる。 よって、この等式の等しい値を k とおけば、 b_0 = ac_0 + k b_1 = ac_1 + k . . . b_(λ-1) = ac_(λ-1) + k となる。 つまり、b_0 ≡ b_1 ≡ ... ≡ b_(λ-1) (mod a) となる。 逆に、この関係が成立すれば、g(ζ) = ah(ζ) となる h(ζ) が求まる。 190 :Kummer ◆g2BU0D6YN2 :2006/04/22(土) 15 13 02 f(ζ) が一般のときは、f(ζ) のノルム Nf(ζ) を使うことにより、 189に帰着出来る。 g(ζ) = f(ζ)h(ζ) なら、 この等式の両辺に f(ζ^2)...f(ζ^(λ-1)) を掛けて f(ζ^2)...f(ζ^(λ-1))g(ζ) = (Nf(ζ))h(ζ) となる。 よって、f(ζ^2)...f(ζ^(λ-1))g(ζ) は (Nf(ζ)) で割れる。 逆も成立つことは明らかだろう。 191 :132人目の素数さん:2006/04/22(土) 16 12 45 Kummer ◆g2BU0D6YN2しね 192 :Kummer ◆g2BU0D6YN2 :2006/04/22(土) 18 45 57 初等整数論においては素数が重要な役割をもつ。 よって Z[ζ] において素数にあたるものが何かを考えよう。 まず考えられるのは既約元、つまり可逆元でない元の積に分解されない 元である。しかし、一意分解整域、例えば有理整数環では既約元は 素元でもある。一般に整域 A の元 p ≠ 0 に対して pA が素イデアルと なるとき p を A の素元という。つまり可逆元でない元 p ≠ 0 が 次の性質(*)を満たすとき p を素元という。 (*) p|ab なら p|a または p|b である。 整域において素元は既約元である(確かめられたい)。 既約元が素元になるとは限らないが、一意分解整域ではそれが成立つ。 つまり、次の命題が成立つ。 命題 整域 A において、可逆元でない任意の非零元が既約元の積に 分解されるとする。 このとき、A の既約元が常に素元なら、A は一意分解整域である。 証明 a ≠ 0 を A の可逆元でない元とし、 a = (p_1)...(p_r) = (q_1)...(q_s) となるとする。 ここで、各p_i, q_j は既約元である。 仮定より p_1 は素元だから p_1|q_j となる j がある。 必要なら q_1, ..., q_s の順序を入れ替えて j = 1 と仮定してよい。 q_j は既約だから p_1 と q_1 は可逆元の積による違いを除いて一致する。 よって、可逆元の積による違いを除いて (p_2)...(p_r) = (q_2)...(q_s) となる。以上を繰り返して(正確には数学的帰納法を使って) 本命題の主張が得られる。 証明終 193 :Kummer ◆g2BU0D6YN2 :2006/04/24(月) 09 42 12 円分整数 f(ζ) が可逆元のとき、つまり f(ζ)g(ζ) = 1 となる g(ζ) があるとき、f(ζ) を円分単数、略して単数と呼ぶ。 Nf(ζ)Ng(ζ) = 1 だから Nf(ζ) > 0 ( 176)に注意して Nf(ζ) = 1 である。 逆に Nf(ζ) = 1 なら f(ζ)f(ζ^2)...f(ζ^(λ-1)) = 1 だから f(ζ) は単数である。 194 :Kummer ◆g2BU0D6YN2 :2006/04/24(月) 09 45 57 円分整数環 Z[ζ] ( 147)における素元( 192)を円分素数と呼ぶ。 f(ζ) を円分素数とする。定義より f(ζ) は単数でないから Nf(ζ) ≠ 1 である。 f(ζ) で割れる有理整数全体は有理整数環のイデアル I となるが、 Nf(ζ) はf(ζ) で割れるから、Nf(ζ) ∈ I である。 Nf(ζ) ≠ 0 だから I ≠ 0 である。 I は単項だから I = (m), m ≧1 となる有理整数 m がある。 m が合成数、つまり m = ab, a ≧ 1, b ≧ 1 と仮定する。 m は f(ζ) で割れるから、f(ζ)は a または b を割る。 よって、a または b が I に含まれることになり矛盾する。 よって m は素数 p である。 p は f(ζ) で割れるから p = f(ζ)g(ζ) となる円分整数 g(ζ) がある。 この両辺のノルムをとると、p^(λ-1) = Nf(ζ)Ng(ζ) となる。 よって Nf(ζ) は素数べき p^k, k ≧1 である (円分整数のノルムが常に正である( 176)ことに注意)。 195 :Kummer ◆g2BU0D6YN2 :2006/04/24(月) 10 46 53 194 訂正: I は単項だから I = (m), m ≧2 となる有理整数 m がある。 m が合成数、つまり m = ab, a ≧ 1, b ≧ 1 と仮定する。 I は単項で I ≠ (1) だから I = (m), m ≧ 2 となる有理整数 m がある。 m が合成数、つまり m = ab, a ≧ 2, b ≧ 2 と仮定する。 196 :Kummer ◆g2BU0D6YN2 :2006/04/24(月) 11 24 02 奇素数λが具体的に与えられたとき、円分整数環 Z[ζ] ( 147)における 円分素数( 194)を具体的に見つけるにはどうするか? 194より、円分素数のノルムは素数べきだから、まずノルムが素数の 円分整数を見つけようと考えるのは自然だろう。 ここでまず問題になるのはノルムが素数の円分整数は円分素数かどうか ということである。これは可換代数を知っていれば簡単な問題だが、 ここでは、Kummerの方法に近いやり方で、この問題を解いてみよう。 197 :Kummer ◆g2BU0D6YN2 :2006/04/24(月) 11 56 28 まずノルムが素数の円分整数を具体的にみつけよう。 最も簡単でしかも有理整数でない円分整数は ζ の一次式 a + bζ だから、 このノルムを計算する。 N(a + bζ) = (a + bζ)(a + bζ^2)...(a + bζ^(λ-1)) である。 b = -1 の場合を考えれば、次の恒等式を思い出すだろう。 X^λ - 1 = (X - 1)(X - ζ)(X - ζ^2)...(X - ζ^(λ-1)) ここで、X を X/Y で置き換える。 (X/Y)^λ - 1 = (X/Y - 1)(X/Y - ζ)(X/Y - ζ^2)...(X/Y - ζ^(λ-1)) この両辺に Y^λ を掛けると、 X^λ - Y^λ = (X - Y)(X - Yζ)(X - Yζ^2)...(X - Yζ^(λ-1)) Y を -Y で置き換えると、λは奇数だから、 X^λ + Y^λ = (X + Y)(X + Yζ)(X + Yζ^2)...(X + Yζ^(λ-1)) これから、a ≠ -b のとき、 N(a + bζ) = (a + bζ)(a + bζ^2)...(a + bζ^(λ-1)) = (a^λ + b^λ)/(a + b) となる。 198 :132人目の素数さん:2006/04/24(月) 12 47 10 ニートヒッキー役たたず、脳内のみの数学者 そのままパソコン前で氏ね。 199 :GiantLeaves ◆6fN.Sojv5w :2006/04/24(月) 12 55 44 人の脳を読む能力を悪用する奴を潰せ。 200 :Kummer ◆g2BU0D6YN2 :2006/04/24(月) 13 18 46 197で除外した a = -b の場合を考える。 この場合、a + bζ = a - aζ = a(1 - ζ) である。 よって、N(1 - ζ) が求まればよい。 1 + X + ... + X^(λ - 1) = (X - ζ)(X - ζ^2)...(X - ζ^(λ-1)) において、 X = 1 と置けば、 λ = N(1 - ζ) となる。 1 < k ≦ λ - 1 のとき、 (ζ^k - 1)/(ζ - 1) = 1 + ζ + ... + ζ^(k-1) だから、ζ^k - 1 は ζ - 1 で割れる。 kj ≡ 1 (mod λ) となる j をとる。 (ζ^j - 1)/(ζ - 1) = 1 + ζ + ... + ζ^(j-1) この式のζをζ^k で置き換えて (ζ^(kj) - 1)/(ζ^k - 1) = (ζ - 1)/(ζ^k - 1) = 1 + ζ^k + ... + ζ^k(j-1) だから、ζ - 1 は ζ^k - 1 で割れる。 よって、(ζ^k - 1)/(ζ - 1) は単数( 193)である。 つまり、ζ - 1 と ζ^k - 1 は、Z[ζ] における整除関係を考えるとき、 同じものと考えてよい。 λ = N(1 - ζ) = (1 - ζ)(1 - ζ^2)...(1 - ζ^(λ-1)) より、λ = ε(1 - ζ)^(λ-1) となる。 ここでεは単数である。 201 :Kummer ◆g2BU0D6YN2 :2006/04/24(月) 13 58 00 円分整数 f(ζ) が 1 - ζ または同じことだが ζ - 1 で割れるか どうかを判定するのは簡単である。 ζ ≡ 1 mod (ζ - 1) だから f(ζ) ≡ f(1) mod (ζ - 1) となる。 よって、f(ζ) が ζ - 1 で割れるなら、 f(1) ≡ 0 mod (ζ - 1) である。 よって f(1) = (ζ - 1)g(ζ) となる円分整数 g(ζ) がある。 両辺のノルムをとって、 f(1)^(λ-1) = λNg(ζ) よって、f(1) ≡ 0 mod λ となる。 逆に、f(1) ≡ 0 mod λ なら、 f(1) ≡ 0 mod (ζ - 1) である。 よって、f(ζ) ≡ 0 mod (ζ - 1) となる。 202 :Kummer ◆g2BU0D6YN2 :2006/04/24(月) 14 07 33 201 から ζ - 1 が円分素数であることはすぐ出る。 つまり、 f(ζ)g(ζ) ≡ 0 mod (ζ - 1) なら 201 より、f(1)g(1) ≡ 0 mod λ となる。 よって、f(1) ≡ 0 mod λ または g(1) ≡ 0 mod λとなる。 再び、 201 より f(ζ) ≡ 0 mod (ζ - 1) または g(ζ) ≡ 0 mod (ζ - 1) となる。 203 :Kummer ◆g2BU0D6YN2 :2006/04/24(月) 15 00 01 201 と同様の論法で円分整数 f(ζ) のノルムの重要な性質が得られる。 ζ ≡ 1 mod (ζ - 1) だから Nf(ζ) = f(ζ)f(ζ^2)...f(ζ^(λ-1)) ≡ f(1)^(λ-1) mod (ζ - 1) よって Nf(ζ) ≡ f(1)^(λ-1) mod λ となる。 Fermatの定理から f(1)^(λ-1) ≡ 0 または ≡ 1 mod λ となる。 よって、Nf(ζ) ≡ 0 または ≡ 1 mod λ となる。 204 :Kummer ◆g2BU0D6YN2 :2006/04/24(月) 15 19 54 197 の場合を考えよう。 この場合、N(a + bζ) = (a^λ + b^λ)/(a + b) は素数とは限らない。 例えば、λ = 5 のとき、N(4 + ζ) = (4^5 + 1)/5 = 1025/5 = 205 = 5・41 は素数ではない。 N(a + bζ) が素数 p になる場合を考える。 このとき b は p で割れない。 なぜなら、b ≡ 0 mod p とすると、 p ≡ 0 mod (a + bζ) だから bζ ≡ 0 mod (a + bζ) となる。 一方 a + bζ ≡ 0 mod (a + bζ) だから a ≡ 0 mod (a + bζ) となる。 よって、a^(λ-1) ≡ 0 mod p となる(a と a + bζのノルムを考える)。 よって、a ≡ 0 mod p となる。 よって、a + bζ = p(c + dζ) となる。ここで c, d は整数。 この両辺のノルムをとると、 p = p^(λ-1)N(c + dζ) となる。 よって、p が p^(λ-1) で割れることになって矛盾。 205 :Kummer ◆g2BU0D6YN2 :2006/04/24(月) 15 41 06 204 の続き: b は p で割れないから bc ≡ 1 mod p となる有理整数 c がある。 p ≡ 0 mod (a + bζ) だから bc ≡ 1 mod (a + bζ) でもある。 a + bζ ≡ 0 mod (a + bζ) の両辺に c を掛けて ac + ζ ≡ 0 mod (a + bζ) となる。 よって ζ ≡ -ac mod (a + bζ) となる。 k = -ac とおく。 201と同様にして円分整数 f(ζ) が a + bζ で割れるかどうかを 判定するのは簡単である。 ζ ≡ k mod (a + bζ) だから f(ζ) ≡ f(k) mod (a + bζ) となる。 よって、f(k) ≡ 0 mod p となるかどうかを判定すればよい。 これから 202 と同様にして a + bζ が円分素数であることが分かる。 206 :132人目の素数さん:2006/04/24(月) 15 43 19 読みたい奴は下がっていても読みにくるから、sageろ。 そして氏ね。 207 :Kummer ◆g2BU0D6YN2 :2006/04/24(月) 16 23 07 円分整数 f(ζ) が ζ の一次式とは限らない場合で、Nf(ζ) が 素数となる場合を考える。 まず Nf(ζ) = λの場合。 200 より N(ζ - 1) = λ だから Nf(ζ) は ζ - 1 で割れる。 202より ζ - 1 は円分素数だから、ある f(ζ^i) が ζ - 1 で割れる。 ここで 1 ≦ i ≦ λ- 1 である。 ij ≡ 1 mod λ とし、ζ → ζ^j による同型を 整除関係 (ζ - 1)|f(ζ^i) に作用させれば、 f(ζ) は ζ^j - 1 で割れることがわかる。 f(ζ) と ζ^j - 1 のノルムは λ だから 両者は単数の違いを除いて一致する。 208 :132人目の素数さん:2006/04/24(月) 17 03 20 206 どうでもいいけど、ageるとなぜ駄目なんだ? 209 :132人目の素数さん:2006/04/24(月) 19 41 29 ┌-―ー- ; | (・∀・) ノ ____ 上―-― ____ | (・∀・) | / \ | (・∀・) | | ̄ ̄ ̄ ̄ ( ̄ ̄ ̄) | ̄ ̄ ̄ ∧ ([[[[[[|]]]]]) ,∧ ⌒ [=|=|=|=|=|=] ⌒ /⌒\ _|iロi|iロiiロi|iロ|_∧ /⌒\_ ]皿皿[-∧-∧|ll||llll||llll||llll|lll| ̄|]皿皿[_| |_/\_|,,|「|,,,|「|ミ^!、|]|[|]|[|][]|_.田 | ∧_ ] | . ∩ | |「| |「||| ll;|||}{|||}{|||}{|||}{|,田田.|__| | ̄ ̄ ̄ ̄|「| ̄ ̄||[[|門門門|]]|[_[_[_[_[_[ /i~~i l ∩∩l .l ∩ ∩ l |__| .| .∩| .| l-, ,,,,,= ~| | | |,,=i~~i==========|~~|^^|~ ~ i----i==i,, | i | l ,==,- ^^ l |. ∩. ∩. ∩. | |∩| |∩∩| |~~^i~ i、 ,=i^~~.| |.∩.∩ |,...,|__|,,|__|,,|__|,,|__|,....,||,,|.|,.....,||,|_|,|.|,....,| | |~i l~| .| | ,,,---== ヽノ i ヽノ~~~ ヽノ ~ ソ^=-.i,,,,|,,,| .|..l i,-= ~~--,,, \ \ l / / / __,-=^~ |,- ~ -,,,_ ~-,,. \ .\ | ./ / _,,,-~ / ~^ =、_ _ ^ - i= ^~~~~~~~~~~~~~~~~~~~~^ =i - ^~ ~^^ ヽ ヽ i ジエンキャッスル / / ノ ヽ 、 l | l l / ./ / \_ 、i ヽ i / ,,== ==,,,,___,,,== ~ 210 :132人目の素数さん:2006/04/24(月) 20 21 11 208 sage厨は気にしなくていいよ。 211 :Kummer ◆g2BU0D6YN2 :2006/04/25(火) 15 48 04 今度は、円分整数 f(ζ) のノルムがλと異なる素数 p の場合を考える。 203 より p ≡ 1 mod λ である。 205 のように ζ ≡ k mod f(ζ) となる有理数 k があれば都合がいい。 実際、そのような k があることを示そう。 まず、このような k があったと仮定して、k が満たす条件を求めよう。 ζ ≡ k mod f(ζ) より f(ζ) ≡ f(k) mod f(ζ) となる。 勿論、f(ζ) ≡ 0 mod f(ζ) だから f(k) ≡ 0 mod f(ζ) となる。 よって、f(k) ≡ 0 mod p となる。 また ζ ≡ k mod f(ζ) より、ζ^λ ≡ k^λ mod f(ζ) となる。 ζ^λ = 1 だから k^λ ≡ 1 mod f(ζ) よって k^λ ≡ 1 mod p である。 等式 k^λ - 1 = (k - 1)(1 + k + ... + k^(λ-1)) より、(k - 1)(1 + k + ... + k^(λ-1)) ≡ 0 mod p である。 ここで、k ≡ 1 mod p とはならない。 何故なら、もしそうなら ζ ≡ 1 mod f(ζ) となり、 ζ - 1 が f(ζ) で割れるから N(ζ- 1) = λ が Nf(ζ) = p で割れることになり、 λ ≠ p という仮定に反する。 よって、(1 + k + ... + k^(λ-1)) ≡ 0 mod p である。 (続く) 212 :Kummer ◆g2BU0D6YN2 :2006/04/25(火) 17 39 07 211 の続き 逆に、次の条件(ⅰ), (ⅱ) を満たす有理数があったとする。 (ⅰ) (1 + k + ... + k^(λ-1)) ≡ 0 mod p (ⅱ) f(k) ≡ 0 mod p このとき、ζ - k が f(ζ) で割れることを示そう。 190 より、(ζ - k)f(ζ^2)...f(ζ^(λ - 1)) が N(f(ζ)) = p で 割れることを示せばよい。 条件(ⅱ) の f(k) ≡ 0 mod p より f(X) ≡ (X - k)Q(X) mod p となる Q(X) ∈ Z[X] がある。 よって、2 ≦ i ≦ λ - 1 となる i に対して、 f(ζ^i) ≡ (ζ^i - k)Q(ζ^i) mod p である。 よって、 (ζ - k)f(ζ^2)...f(ζ^(λ - 1)) ≡ N(ζ - k)R(ζ) mod p となる。ここで R(ζ) はある円分整数。 ここで、N(ζ - k) ≡ 0 mod p を示せばよい。 197 の公式 N(a + bζ) = (a^λ + b^λ)/(a + b) より、 N(ζ - k) = (k^λ - 1)/(k - 1) = 1 + k + ... k^(λ - 1) である。 よって 条件(ⅰ) より N(ζ - k) ≡ 0 mod p となる。 (続く) 213 :Kummer ◆g2BU0D6YN2 :2006/04/25(火) 18 03 11 212 逆に、次の条件(ⅰ), (ⅱ) を満たす有理数があったとする。 次のように訂正する: 逆に、次の条件(ⅰ), (ⅱ) を満たす有理整数があったとする。 214 :Kummer ◆g2BU0D6YN2 :2006/04/25(火) 18 13 45 212 の条件(ⅰ), (ⅱ) を満たす有理整数 k が存在することを 示そう。 p ≡ 1 mod λ だから λ|(p - 1) である。 有限体 Z/pZ の乗法群は、位数 p - 1 の巡回群だから、 その約数 λ を位数とする部分群が一個だけある。 よって、Z 上の 合同方程式 X^λ ≡ 1 mod p の 根となる剰余類の数は λ個である。 さらに、X^λ ≡ 1 mod p の根 a で a ≡ 1 mod p とはならないものを 任意にとれば、a, a^2, ..., a^(λ - 1) が X^λ ≡ 1 mod p の 根となる剰余類すべての代表となる。 ここで、g(X) = f(X)f(X^2)...f(X^(λ - 1)) とおく。 g(ζ) = Nf(ζ) である。 よって g(ζ) - p = 0 となる。 よって g(X) - p = h(X)q(X) となる q(X) ∈ Z[X] がある。 ここで、h(X) = 1 + X + ... + X^(λ - 1) である。 g(X) ≡ h(X)q(X) mod p だから g(a) ≡ h(a)q(a) mod p となる。 h(a) ≡ 0 mod p だから g(a) ≡ 0 mod p となる。 つまり、f(a)f(a^2)...f(a^(λ - 1)) ≡ 0 mod p よって f(a^i)) ≡ 0 mod p となる i がある。 k = a^i とおけばこれが求めるものである。 215 :Kummer ◆g2BU0D6YN2 :2006/04/26(水) 08 26 47 以上をまとめる。 円分整数 f(ζ) のノルムがλと異なる素数 p とする。 203 より p ≡ 1 mod λ である。 214 より 212 の条件(ⅰ), (ⅱ) を満たす有理整数 k が存在する。 212 より ζ ≡ k mod f(ζ) となる。 201と同様にして円分整数 g(ζ) が で割れるかどうかを 判定するのは簡単である。 ζ ≡ k mod f(ζ) だから、任意の円分整数 g(ζ) にたいして、 g(ζ) ≡ g(k) mod f(ζ) となる。 よって、g(k) ≡ 0 mod p となるかどうかを判定すればよい。 これから 202 と同様にして f(ζ) が円分素数であることが分かる。 216 :Kummer ◆g2BU0D6YN2 :2006/04/26(水) 08 31 15 215 訂正 201と同様にして円分整数 g(ζ) が で割れるかどうかを 判定するのは簡単である。 201と同様にして円分整数 g(ζ) が f(ζ) で割れるかどうかを 判定するのは簡単である。 217 :Kummer ◆g2BU0D6YN2 :2006/04/26(水) 08 38 04 1つの素数 p が二つの円分整数 f(ζ) と g(ζ) のノルムとなるとき、 すなわち Nf(ζ) = Ng(ζ) = p となるとき、f(ζ) と g(ζ) は 単数の違いしかない。これは f(ζ) と g(ζ) が円分素数であることから 簡単にでる。 218 :Kummer ◆g2BU0D6YN2 :2006/04/27(木) 15 11 12 今度は、今までと逆に次の問題を考える。 p ≡ 1 mod λ となる素数 p をとる。 円分素数 f(ζ) が p を割るとき Nf(ζ) = p となるか? この答えはYESである。 これは、代数的整数論の初歩を知っていれば簡単にわかるが、 今までの方法で証明しよう。 219 :Kummer ◆g2BU0D6YN2 :2006/04/27(木) 15 16 03 p ≡ 1 mod λ だから ζ^(p-1) = 1 となる。 ここで、恒等式 X^(p-1) - 1 ≡ (X - 1)(X -2)...(X - (p-1)) mod p を利用する。 X に ζ を代入して、 ζ^(p-1) - 1 ≡ (ζ - 1)(ζ -2)...(ζ - (p-1)) mod p となる。 左辺は0だから (ζ - 1)(ζ -2)...(ζ - (p-1)) ≡ 0 mod p となる。 f(ζ) は p を割るから (ζ - 1)(ζ - 2)...(ζ - (p-1)) ≡ 0 mod f(ζ) となる。 f(ζ) は円分素数だから、 ζ - k ≡ 0 mod f(ζ) となる、k がある。ここで、1 ≦ k ≦ p - 1 である。 220 :Kummer ◆g2BU0D6YN2 :2006/04/27(木) 15 27 53 1 ≦ i < j ≦ p - 1 のとき f(ζ^i) と f(ζ^j) が同伴つまり f(ζ^i) = εf(ζ^j) となるとする。 ここで ε は単数である。 ζ - k ≡ 0 mod f(ζ) だから ζ^i - k ≡ 0 mod f(ζ^i) ζ^j ≡ k mod f(ζ^j) である。 f(ζ^j) は f(ζ^i) で割れるから、 ζ^j ≡ k mod f(ζ^i) である。 よって、 ζ^j - ζ^i ≡ 0 mod f(ζ^i) となる。 よって、 ζ^i(ζ^(j-i) - 1) ≡ 0 mod f(ζ^i) となる。 ζ^i は単数だから、 ζ^(j-i) - 1 ≡ 0 mod f(ζ^i) よって、 N(ζ^(j-i) - 1) は N(f(ζ^i)) で割れる。 ところが N(ζ^(j-i) - 1) = λ であり( 200)、 N(f(ζ^i)) は p の冪だからこれは有り得ない。 よって、f(ζ^i) と f(ζ^j) は同伴でない。 p は f(ζ), f(ζ^2), ..., f(ζ^(λ-1))でそれぞれ割れ、 これらは互いに同伴ではない円分素数だから、 p はこれ等の積つまり、Nf(ζ) で割れる。 つまり、p = (Nf(ζ))g(ζ) となる円分整数 g(ζ) がある。 g(ζ) は有理整数でなければならない。 よって、Nf(ζ) = p となる。 221 :tama:2006/04/28(金) 00 53 03 Kummmerさん、教えて以下。マジです・・ ある有限群Gの自己同型は、Sn(n次の対称群)の中で Φー1・G・Φ=G となるようなΦによって引き起こされる。 そのような置換の全体がGの自己同型群A(G)である。 Φー1・G・Φ=GとなるΦの全体をBとする。Bの中でGの各々の要素 を動かさないものをCとする。任意のg∈Gに対し Φー1・g・Φ=g、g・Φ=Φ・g であるから、Bの中でgの各々の要素と 交換可能な要素となる。つまり C⊆B このときBの任意の要素をbとすれば (b-1・c・b)-1・g・(b-1・c・b) =b-1・c-1・b・g・b-1・c・b =b-1・c-1・(b・g・b-1)・c・b となり、b・g・b-1はGの要素であるから、cとは交換可能。 よって =b-1・(b・g・b-1)・b=g の、cとは交換可能の理由および最後の一行の変形良く解りません。 数学が好きで群論の自己同型独習してます。お願いします・・ <記号の-1は、逆写像 or 逆元の意です> 222 :tama:2006/04/28(金) 00 59 48 mmm・m-1 ごめんなさい 223 :132人目の素数さん:2006/04/28(金) 11 44 32 221 cとは交換可能の理由および最後の一行の変形良く解りません。 Cの定義がわかる? つまり、Bの中でGの各々の要素を動かさないものをCとする。 このことの意味がわかる? 224 :tama:2006/04/29(土) 00 06 41 すいません素数さん(and Kummerさん)/ GΦ=ΦGを成り立たせるΦは、Φ∈B⊆Snで、そのようなBの中には (群)演算によりGの各々の要素を動かさないようなCがあるのだ、と自分なりに 解釈しました。でも「Gの各々の要素を動かさない」というのは具体的にはどんな 意味なんでしょう・・ 読んでいる本の前の章に、正規部分群Hのことが書かれてあり ある有限群の剰余類(いずれは剰余群)を作る素となる正規部分群は、準同型写像により その写像先の群の単位元に写されるとありました。 そのことが気持ちの中にあったので まてよ・・動かさないというのは単位元的なことだから H → e(単位元) : 準同型写像による C → 動かさない : 自己同型での写像による などと、漠然と考え無理矢理に暗記しようとしてました。が、どうもしっくりいかず このサイトを偶然見つけ、質問した次第です ただ、正規部分群は写像前の始域の群の中で Hx=xHを満たす部分群だしなぁ・・ このCがGの各々の要素を動かさないというのもGの中での話で、写像後の行った先で 要素を動かしてないとか、そういう話でもないだろう・・ などとetc わかんないです。 もっとも代数自体言ってることが抽象的すぎますが、でも好きなんですよね そこがまた よろしくお願いします。 225 :132人目の素数さん:2006/04/30(日) 23 52 24 ? !(゚Д゚≡゚Д゚)? ! 226 :tama:2006/05/01(月) 00 20 10 223 感謝します 例題に 有限群G={e,g,g^2},g^3=e のときGの自己同型群を求めよ というのがあり模範解答を221の証明に照らして考えてたとき、ふいに ∀g∈G、cg=gc なんだ・・って理解できました 227 :132人目の素数さん:2006/05/01(月) 00 39 36 225の絵文字の配置、深いですね・・ 群論の「奥義」みたいな 228 :132人目の素数さん:2006/05/01(月) 00 41 38 悟ったな 229 :132人目の素数さん:2006/05/01(月) 08 14 15 224 そこがまた よろしくお願いします。 223 は例外的サービスのつもり。 基本的には、このスレに関係ない質問はそれに関係した別スレに お願いします。 230 :132人目の素数さん:2006/05/01(月) 08 57 19 λ = 3 として Z[ζ] における素元分解を調べよう。 ζ は X^2 + X + 1 = 0 の根だから ζ は (-1 ±√(-3))/2 のどちらか である。ζ = (-1 + √(-3))/2 としよう。 Z[ζ] の元は a + bζ, a ∈ Z, b ∈ Z と一意に書ける。 N(a + bζ) = (a + bζ)(a + bζ^2) = a^2 + abζ^2 + abζ + b^2 = a^2 - ab + b^2 となる。 231 :Emperor RootOfAnarchyConversion ◆2i2T.RCSQo :2006/05/01(月) 09 00 19 revelation 230 何を言っているのですか? 232 :Kummer ◆g2BU0D6YN2 :2006/05/01(月) 09 09 05 230 に名前とID(Kummer g2BU0D6YN2)を入れるの忘れていた。 a, b が有理数のときにも、N(a + bζ) = (a + bζ)(a + bζ^2) によって、a + bζのノルムを定義する。 230 の式 N(a + bζ) = (a + bζ)(a + bζ^2) = a^2 + abζ^2 + abζ + b^2 = a^2 - ab + b^2 は明らかに a, b が有理数でも成立つ。 233 :Kummer ◆g2BU0D6YN2 :2006/05/01(月) 09 15 28 λ = 3 のとき、Z[ζ] は、Euclid環であることを証明する。 f(ζ) ≠ 0 と g(ζ) を円分整数とする。 g(ζ)/f(ζ) = r + sζ とする。 r と s は有理数である。 |r - m| ≦ 1/2, |s - n| ≦ 1/2 となる整数 m, n がある。 円分整数 q(ζ) = m + nζ に対して N(r + sζ - (m + nζ)) = N(r - m + (s - n)ζ) = (r - m)^2 - (r - m)(s - n) + (s - n)^2 ≦ 1/4 + 1/4 + 1/4 = 3/4 つまり、N(g(ζ)/f(ζ) - q(ζ)) < 1 である。 ρ = g(ζ)/f(ζ) - q(ζ) とおく。 f(ζ)ρ = g(ζ) - f(ζ)q(ζ) ∈ Z[ζ] よって、f(ζ)ρ = r(ζ) は円分整数である。 g(ζ) = f(ζ)q(ζ) + r(ζ) N(r(ζ)) < N(f(ζ)) である。 よって、Z[ζ] は、Euclid環である。 234 :132人目の素数さん:2006/05/01(月) 11 41 20 231の別名は「ハエ」 235 :Emperor RootOfAnarchyConversion ◆2i2T.RCSQo :2006/05/01(月) 12 02 31 revelation 234 それはあなたの事ではないのですか? タグ: Eisenstein の既約性定理 一意分解整域 円分整数環 初等整数論 原始根 奇素数 ヾ(゚∀゚)ノ ハイハイ! (2011-03-04 21 55 04) コメント
https://w.atwiki.jp/pluto-herr/pages/38.html
三角形の傍心・内心についての等式_追加版 2009.02.16(月) 前回のBlogでは△ABCに対して、傍心・内心の「ベクトルによる重心座標表現」と その半径を与え、種々の等式を証明した。「前回で書き残した等式」がまだ少しあるので それを紹介し、証明しておく。 0. [命題0.1] △ABCにおいてBC=a,CA=b,AB=c ,2s=a+b+c とおく。 角 A/2 の正接・余弦・正弦の2乗をs,a,b,c つまり 3辺a,b,cで次のように 表すことができる。 (1) tan^2(A/2)=(s−b)(s−c)/[s(s−a)] ・・・(0.1.1) (2) cos^2(A/2)=s(s−a)/(bc) ・・・(0.1.2) (3) sin^2(A/2)=(s−b)(s−c)/(bc) ・・・(0.1.3) 「証明」 (1)について:前回のBLogの[補題2.2]から tan(A/2)=r/(s−a) であった。r=S/s とHeron(ヘロン)の公式 S^2=s(s−a)(s−b)(s−c)により tan^2(A/2)=(S/s)^2/(s−a)^2=[s(s−a)(s−b)(s−c)]/[s(s−a)]^2 =[(s−b)(s−c)]/[s(s−a)] (2)について: tan^2(A/2)が求まったので、お決まりの cos^2(A/2)=1/[1+tan^2(A/2)]を使って求める。 1+tan^2(A/2)=1+(s−b)(s−c)/[s(s−a)]=[s(s−a)+(s−b)(s−c)]/[s(s−a)] ところが s(s−a)+(s−b)(s−c) =2s^2−(a+b+c)s+bc =2s^2−2s×s+bc=bc(∵ 2s=a+b+c) よって 1+tan^2(A/2)=bc/[s(s−a)] ゆえに cos^2(A/2)=1/[1+tan^2(A/2)]=[s(s−a)]/bc (3)について: sin^2(A/2)=tan^2(A/2)×cos^2(A/2)=[(s−b)(s−c)/s(s−a)]×[s(s−a)]/bc =[(s−b)(s−c)]/bc ([命題0.1]の「証明」終わり) [命題0.2] △ABCにおいてその面積をS,BC=a,CA=b,AB=c,△ABCの頂点Aから辺BCに降ろした垂線の足をH_A、 頂点Bから対辺のCAに降ろした垂線の足をH_B,頂点Cから対辺のABに降ろした垂線の足をH_Cとし, h_A=A(H_A) ,h_B=B(H_B),h_C=C(H_C) とおけば 1/(h_A)+1/(h_B)+1/(h_C)=1/r ・・・(0.2.1) 「証明」 証明は極めて簡単である。S=(1/2)a(h_A)=(1/2)b(h_B)=(1/2)c(h_C) から 1/(h_A)=a/(2S) ,1/(h_B)=b/(2S) ,1/(h_C)=c/(2S) また r=S/s=(2S)/(2s)=(2S)/(a+b+c)⇒ 1/r=(a+b+c)/(2S) ゆえに 1/(h_A)+1/(h_B)+1/(h_C)=a/(2S)+b/(2S)+c/(2S) =(a+b+c)/(2S)=1/r すなわち 1/(h_A)+1/(h_B)+1/(h_C)=1/r ([命題0.2]の「証明」終わり) [命題0.3] ∠Aの二等分線と辺BCとの交点をDとし、AD=f_Aで表すことにし、 同様に∠Bの二等分線と辺CAとの交点をEとし、BE=f_B、∠Cの二等分線と辺CAとの交点をFとし、 CF=f_Cとすれば、 (1) (f_A)^2=[bc(a+b+c)(b+cーa)/(b+c)^2 =[4bcs(s−a)]/(b+c)^2 ・・・(0.3.1) ⇔ f_A=√[bc(a+b+c)(b+cーa)]/(b+c)=2√[bcs(sーa)]/(b+c) (2) (f_B)^2=[ca(a+b+c)(c+aーb)/(c+a)^2 =[4cas(s−b)]/(c+a)^2 ・・・(0.3.2) ⇔ f_B=√[ca(a+b+c)(c+aーb)]/(c+a)=2√[cas(sーb)]/(c+a) (3) (f_C)^2=[ab(a+b+c)(a+bーc)/(a+b)^2 =[4cas(s−b)]/(a+b)^2 ・・・(0.3.3) ⇔ f_C=√[ab(a+b+c)(a+bーc)]/(a+b)=2√[abs(sーc)]/(a+b) (4) (f_A)(f_B)(f_C)=8(abcs)S/(b+c)(c+a)(a+b) =8(abcrs^2)/(b+c)(c+a)(a+b) ・・・(0.3.3) 「証明」 (1)を証明すれば(2)(3)も同様であるので、(1)と(4)を証明しよう。 (1)について:ベクトルを使おう。 f_A=AD。点Dは∠Aの二等分線と辺BCとの交点だから AB:AC=b:c よって(b+c)(→AD)=b(→AB)+c(→AC) よって (b+c)^2(f_A)^2=(b+c)^2|(→AD)|^2=|b(→AB)+c(→AC)|^2 ここで |b(→AB)+c(→AC)|^2=b^2|(→AB)|^2+c^2|(→AC)|^2+2bc(*1) =(bc)^2+(bc)^2+2bc×(c^2+b^2ーa^2)/2 =2(bc)^2+bc(c^2+b^2ーa^2) =bc{2bc+(c^2+b^2)−a^2}=bc[(b+c)^2^−a^2} =bc(a+b+c)(b+cーa)=4bcs(sーa) ゆえに (b+c)^2(f_A)^2=bc(a+b+c)(b+cーa)=4bcs(sーa) これより(0.3.1)が導かれる。 (4) [(f_A)(f_B)(f_C)]^2 =[4bcs(s−a)]/(b+c)^2×[4cas(s−b)]/(c+a)^2 ×[4ab[s(s−c)]/(a+b)^2 =64(abcs)^2×[s(s−a)(s−b)(s−c)]/[(b+c)(c+a)(a+b)]^2 =64(abcs)^2×(S^2)/[(b+c)(c+a)(a+b)]^2 ゆえに (f_A)(f_B)(f_C) =8(abcs)S/(b+c)(c+a)(a+b) =8(abcrs^2)/(b+c)(c+a)(a+b) (∵ S=rs ) ([命題0.3]の「証明終わり) [命題0.4] 最後に△ABCにおいて辺BCの中点をMとして、中線の長さm_A=AMをa,b,c などで表しておこう。 (m_A)^2=[2b^2+2c^2−a^2]/4=[b^2+c^2+2bccosA]/4 ・・・(0.4.1) 「証明」パップス(またはパッポス)の中線定理 AB^2+AC^2=2(AM^2+BM^2)⇔c^2+b^2=2{(m_A)^2+(a/2)^2}⇔ (m_A)^2=[c^2+b^2/2ー(a^2/4)] ⇔ (m_A)^2=[(c^2+b^2)/2ー(a^2/4)]=[2b^2+2c^2−a^2]/4 ここで b^2+c^2−a^2=2bccosA よって (m_A)^2=[b^2+c^2+(b^2+2c^2−a^2)]/4=[b^2+c^2+2bccosA]/4 ([命題0.4]の「証明」終わり)
https://w.atwiki.jp/r-intro/pages/18.html
目次 目次 基本操作 行列を作る 行列を作る 行列から成分を取り出す 行列から特定の行か特定の列のみ取り出す 行列をベクトルに変換する 行列から非対角成分だけを取り出す 行列に行を追加する 行列に列を追加する 線形代数 転置行列を求める 単位行列を作る 行列のトレース(固有和)を求める 行列式を求める 行列式を求める 行列の掛け算 逆行列を求める 一般逆行列を求める 連立一次方程式を解く 計算 QR分解をする コレスキー分解する 固有値と固有ベクトルを求める 固有値と固有ベクトルを求める 特異値分解を行う 余因子を求める 余因子行列を求める 基本操作 行列を作る matrix関数を使う。行列の要素を格納したベクトルを第一引数に与えて、nrowオプションで行数を、ncolオプションに列数を与える。デフォルトでは列方向に順番に要素が格納される。これを行方向に順に格納するにはbyrowオプションにTRUEを指定する。 d - 1 12 mx - matrix(d, nrow = 3, ncol = 4) print(mx) [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 mx - matrix(d, ncol = 4) print(mx) [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 mx - matrix(d, ncol = 5) 警告メッセージ matrix(d, ncol = 5) で データ長 [12] が列数 [5] を整数で割った、もしくは掛けた値ではありません mx - matrix(d, ncol = 4, byrow = TRUE) print(mx) [,1] [,2] [,3] [,4] [1,] 1 2 3 4 [2,] 5 6 7 8 [3,] 9 10 11 12 mx - matrix(1 4, nrow = 2, ncol = 4, byrow = TRUE) print(mx) [,1] [,2] [,3] [,4] [1,] 1 2 3 4 [2,] 1 2 3 4 mx - matrix(0., 2, 5) print(mx) [,1] [,2] [,3] [,4] [,5] [1,] 0 0 0 0 0 [2,] 0 0 0 0 0 上記の例のとおりに、特に何も指定しなければ第二引数が行列、第三引数が列数になる。ベクトルの要素数で行列どちらかが決まればもう片方も決まるため、行または列の省略は可能。ただし、ベクトルの要素数に応じた正しい値でなければならない。 最後の例のとおりに、指定した行数×列数の要素数に対してベクトルの要素数が足らないときは、そのベクトルの要素数が行数×列数の約数であれば、自動的に繰り返し使われる。 行列を作る 行列はmatrix関数を使用して、ベクトルから作ることができる。以下は、2行3列の行列を新規に作成している。 d - 1 6 mx - matrix(d, 2, 3) mx [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 matrix関数の第一引数には、成分(並べられている各々の数)に代入する値が含まれているベクトルを指定し、特に指定をしなければ第二引数には行数を、第三引数には列数を指定する。行数はnrowオプション、列数はncolオプションで明示的に指定することができ(順不同)、例えば、以下のようにしても同じ。 mx - matrix(d, ncol = 3, nrow = 2) mx [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 特にオプションを指定しない場合、第一引数に与えたベクトルの要素について、列方向(縦方向)を優先に値を埋めるように代入する。これは見た目の直感となかなか合わない。列方向ではなく、行方向(横方向)を優先に値を埋めるように代入させるには、byrowオプションにTRUEを与える。 mx - matrix(d, 2, 3, byrow = TRUE) mx [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 行列から成分を取り出す 行ごと列ごとに角括弧(ブラケット)をつかってインデックス(1~)を指定する。インデックスは1から始まることに注意。 mx - matrix(1 6, 3, 2) print(mx) [,1] [,2] [1,] 1 4 [2,] 2 5 [3,] 3 6 mx[1, 2] [1] 4 mx[3, 2] [1] 6 mx[4, 2] mx[4, 2] でエラー 添え字が許される範囲外です 最後の例のように、行列の各長さより大きい値を指定すると、エラーが発生する。 行列から特定の行か特定の列のみ取り出す インデックスを指定する際に、数値を与えずに空欄のままにする。以下の例ではそれぞれ2行目のみ、3列目のみを取り出している。 mx - matrix(1 9, 3, 3) print(mx) [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 mx[2, ] [1] 2 5 8 mx[, 3] [1] 7 8 9 is.vector(mx[, 3]) [1] TRUE 最後のとおりに、1行(列)だけ取り出したものはベクトルになる。これを行列のままにする場合はdropオプションにFALSEを与える。 mx[2, , drop = FALSE] [,1] [,2] [,3] [1,] 2 5 8 複数行(列)取り出したい場合は、インデックスをベクトルで与える。以下は2行目と3行目のみを取り出した例。 mx[c(2, 3), ] [,1] [,2] [,3] [1,] 2 5 8 [2,] 3 6 9 行列をベクトルに変換する as.vector関数を使用する。 mx1 - matrix(6, nrow = 1, ncol = 1) mx2 - matrix(1 9, nrow = 3, ncol = 3) mx1 [,1] [1,] 6 as.vector(mx1) [1] 6 mx2 [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 as.vector(mx2) [1] 1 2 3 4 5 6 7 8 9 as.vector(t(mx2)) [1] 1 4 7 2 5 8 3 6 9 1列目の要素すべて、2列目の要素すべて、・・・、という順にベクトルの要素になる。これを1行目の要素すべて、2行目の要素すべて、・・・、としたい場合は、最後の例のとおりにt関数を使って元の行列の転置行列を指定する。 行列から非対角成分だけを取り出す row関数とcol関数を使うと、ベクトル形式で簡単に取り出すことができる。 mx - matrix(1 16, 4, 4) mx [,1] [,2] [,3] [,4] [1,] 1 5 9 13 [2,] 2 6 10 14 [3,] 3 7 11 15 [4,] 4 8 12 16 mx[row(mx) != col(mx)] [1] 2 3 4 5 7 8 9 10 12 13 14 15 応用として、上の例で2、7、12(対角成分のそれぞれ1行下の成分)を取り除くには、以下のようにする。 mx[row(mx) != col(mx) + 1] [1] 1 3 4 5 6 8 9 10 11 13 14 15 16 行列に行を追加する rbind関数を使う。最後の例のとおり、列数が異なる場合はエラーが発生する。 mx1 - matrix(1 9, ncol = 3) mx2 - matrix(10 15, ncol = 3) print(mx1) [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 print(mx2) [,1] [,2] [,3] [1,] 10 12 14 [2,] 11 13 15 mx3 - rbind(mx1, mx2) print(mx3) [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 [4,] 10 12 14 [5,] 11 13 15 mx4 - matrix(16 19, ncol = 4) print(mx4) [,1] [,2] [,3] [,4] [1,] 16 17 18 19 rbind(mx1, mx4) rbind(mx1, mx4) でエラー 行列の列数は一致していなければなりません (2 番目の引数を参照) 行列に列を追加する cbind関数を使う。最後の例のとおり、行数が異なる場合はエラーが発生する。 mx1 - matrix(1 9, nrow = 3) mx2 - matrix(10 15, nrow = 3) print(mx1) [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 print(mx2) [,1] [,2] [1,] 10 13 [2,] 11 14 [3,] 12 15 mx3 - cbind(mx1, mx2) print(mx3) [,1] [,2] [,3] [,4] [,5] [1,] 1 4 7 10 13 [2,] 2 5 8 11 14 [3,] 3 6 9 12 15 mx4 - matrix(16 19, nrow = 4) print(mx4) [,1] [1,] 16 [2,] 17 [3,] 18 [4,] 19 cbind(mx1, mx4) cbind(mx1, mx4) でエラー 行列の行数は一致していなければなりません (2 番目の引数を参照) 線形代数 転置行列を求める t関数を使う。 mx - matrix(1 9, 3, 3, byrow = TRUE) print(mx) [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9 t(mx) [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 mx - matrix(1 6, 2, 3, byrow = TRUE) print(mx) [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 t(mx) [,1] [,2] [1,] 1 4 [2,] 2 5 [3,] 3 6 単位行列を作る diag関数を使う。引数を一つだけ指定した場合は、n次の単位行列を作成する。 diag(3) [,1] [,2] [,3] [1,] 1 0 0 [2,] 0 1 0 [3,] 0 0 1 diag(4) [,1] [,2] [,3] [,4] [1,] 1 0 0 0 [2,] 0 1 0 0 [3,] 0 0 1 0 [4,] 0 0 0 1 行列のトレース(固有和)を求める Rには行列Aのトレース(固有和)Tr(A)を求めるための関数が標準では組み込まれていない。diag関数とsum関数を組み合わせることで、計算を実現することができる。以下の例では、Tr(A) = 1+5+9=15である。 mx - matrix(1 9, nrow = 3, byrow = TRUE) mx [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9 tr - sum(diag(mx)) tr [1] 15 行列式を求める det関数を使う。 d - c(1, 2, 3, 4) mx - matrix(d, 2, 2, byrow = TRUE) mx [,1] [,2] [1,] 1 2 [2,] 3 4 det(mx) [1] -2 行列式を求める det関数を使う。 mx - matrix(3, 1, 1) print(mx) [,1] [1,] 3 det(mx) [1] 3 mx - matrix(1 4, 2, 2, byrow = TRUE) print(mx) [,1] [,2] [1,] 1 2 [2,] 3 4 det(mx) [1] -2 mx - matrix(c(0, -4, 0, -1, 3, 6, -2, 0, 2, 1, 3, 0, -1, 5, -1, 2), 4, 4) print(mx) [,1] [,2] [,3] [,4] [1,] 0 3 2 -1 [2,] -4 6 1 5 [3,] 0 -2 3 -1 [4,] -1 0 0 2 det(mx) [1] 28 行列の掛け算 %*% 演算子を使う。最後の例のとおり、掛けられる行列の列数と掛ける行列の行数が同じでなければ計算することはできない。 mx1 - matrix(c(-1, 8, 0, 1, 3, -5), 2, 3) mx2 - matrix(c(3, -2, 4, 1, 0, 2), 2, 3) mx3 - matrix(c(4, 2, 1, -3, 0, 5, 7, -1, 0), 3, 3) print(mx1) [,1] [,2] [,3] [1,] -1 0 3 [2,] 8 1 -5 print(mx2) [,1] [,2] [,3] [1,] 3 4 0 [2,] -2 1 2 print(mx3) [,1] [,2] [,3] [1,] 4 -3 7 [2,] 2 0 -1 [3,] 1 5 0 mx1 %*% mx3 [,1] [,2] [,3] [1,] -1 18 -7 [2,] 29 -49 55 mx2 %*% mx3 [,1] [,2] [,3] [1,] 20 -9 17 [2,] -4 16 -15 mx1 %*% mx2 mx1 %*% mx2 でエラー 適切な引数ではありません 逆行列を求める solve関数を使う。 mx - matrix(3, 1, 1) print(mx) [,1] [1,] 3 solve(mx) [,1] [1,] 0.3333333 mx - matrix(1 4, 2, 2, byrow = TRUE) print(mx) [,1] [,2] [1,] 1 2 [2,] 3 4 solve(mx) [,1] [,2] [1,] -2.0 1.0 [2,] 1.5 -0.5 mx - matrix(c(3, 3, -1, -3, 2, -5, 1, 0, 1), 3, 3) print(mx) [,1] [,2] [,3] [1,] 3 -3 1 [2,] 3 2 0 [3,] -1 -5 1 solve(mx) [,1] [,2] [,3] [1,] 1.0 -1 -1.0 [2,] -1.5 2 1.5 [3,] -6.5 9 7.5 正則ではない行列(行列式の値が0)の場合は、solve関数はエラーを返す。 mx - matrix(1 9, 3, 3) print(mx) [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 det(mx) [1] 0 solve(mx) solve.default(mx) でエラー Lapack routine dgesv システムは正確に特異です U[3,3] = 0 一般逆行列を求める MASSパッケージのginv関数を使う。 library(MASS) mx - matrix(1 16, 4, 4, byrow = TRUE) print(mx) [,1] [,2] [,3] [,4] [1,] 1 2 3 4 [2,] 5 6 7 8 [3,] 9 10 11 12 [4,] 13 14 15 16 det(mx) [1] 4.733165e-30 solve(mx) solve.default(mx) でエラー システムは数値的に特異です 条件数の逆数 = 2.95756e-18 ginv(mx) [,1] [,2] [,3] [,4] [1,] -0.2850 -0.1450 -0.0050 0.1350 [2,] -0.1075 -0.0525 0.0025 0.0575 [3,] 0.0700 0.0400 0.0100 -0.0200 [4,] 0.2475 0.1325 0.0175 -0.0975 一般逆行列の定義を満たしているか否か確認。 mxi - ginv(mx) mx %*% mxi %*% mx [,1] [,2] [,3] [,4] [1,] 1 2 3 4 [2,] 5 6 7 8 [3,] 9 10 11 12 [4,] 13 14 15 16 当然、正方行列でなくとも求めることができる。 mx - matrix(1 8, 2, 4, byrow = TRUE) print(mx) [,1] [,2] [,3] [,4] [1,] 1 2 3 4 [2,] 5 6 7 8 det(mx) determinant.matrix(x, logarithm = TRUE, ...) でエラー x は正方行列でなければなりません solve(mx) solve.default(mx) でエラー a (2 x 4) は正方行列である必要があります ginv(mx) [,1] [,2] [1,] -0.550 2.500000e-01 [2,] -0.225 1.250000e-01 [3,] 0.100 -2.081668e-17 [4,] 0.425 -1.250000e-01 mxi - ginv(mx) mx %*% mxi %*% mx [,1] [,2] [,3] [,4] [1,] 1 2 3 4 [2,] 5 6 7 8 ginv関数はムーア・ペンローズ一般逆行列を数値的に求める関数のため、求まった一般逆行列は近似値であることに注意。ムーア・ペンローズ一般逆行列の定義の4つの式について、比較をした例は以下のとおり。すべての要素がTRUEにならないことがわかる。 mx %*% mxi %*% mx == mx [,1] [,2] [,3] [,4] [1,] FALSE FALSE TRUE TRUE [2,] FALSE FALSE FALSE TRUE mxi %*% mx %*% mxi == mxi [,1] [,2] [1,] FALSE FALSE [2,] FALSE FALSE [3,] FALSE FALSE [4,] FALSE FALSE t(mx %*% mxi) == mx %*% mxi [,1] [,2] [1,] TRUE FALSE [2,] FALSE TRUE t(mxi %*% mx) == mxi %*% mx [,1] [,2] [,3] [,4] [1,] TRUE FALSE FALSE FALSE [2,] FALSE TRUE FALSE FALSE [3,] FALSE FALSE TRUE FALSE [4,] FALSE FALSE FALSE TRUE 連立一次方程式を解く solve関数を使う。以下の連立一次方程式を解く(解はx=3,y=2)。 x + 2y = 7 3x - 4y = 1 mxaa - matrix(c(1, 2, 3, -4), 2, 2, byrow = TRUE) mxy - matrix(c(7, 1), 2, 1) print(mxaa) [,1] [,2] [1,] 1 2 [2,] 3 -4 print(mxy) [,1] [1,] 7 [2,] 1 solve(mxaa, mxy) [,1] [1,] 3 [2,] 2 同じく以下の連立一次方程式を解く(解はx=2,y=-3,z=-14)。 3x - 3y + z = 1 3x + 2y = 0 -1x - 5y + z = -1 mxaa - matrix(c(3, 3, -1, -3, 2, -5, 1, 0, 1), 3, 3) mxy - matrix(c(1, 0, -1), 3, 1) print(mxaa) [,1] [,2] [,3] [1,] 3 -3 1 [2,] 3 2 0 [3,] -1 -5 1 print(mxy) [,1] [1,] 1 [2,] 0 [3,] -1 solve(mxaa, mxy) [,1] [1,] 2 [2,] -3 [3,] -14 計算 QR分解をする 行列XをQR分解で行列Qと行列Rに分解することを考える。 X = Q R 行列QはQ^T Q=I(Iは単位行列)となる直交行列。行列Rは上三角行列(対角成分はすべて0以外で、対角成分より下の要素はすべて0)。 qr.Q関数、qr.R関数を使うと、それぞれQR分解した際の行列Qと行列Rが得られる。引数にはqrオブジェクトを与える必要があり、qr関数を使ってあらかじめ分解したい行列Xからqrオブジェクトを作成しておく必要がある。 d - c(1, 2, 3, 4, 5, 6, 9, 9, 8) x - matrix(d, 3, 3, byrow = TRUE) x [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 9 9 8 objqr - qr(x) q - qr.Q(objqr) q [,1] [,2] [,3] [1,] -0.1010153 -0.7184092 -0.6882472 [2,] -0.4040610 -0.6025367 0.6882472 [3,] -0.9091373 0.3476173 -0.2294157 r - qr.R(objqr) r [,1] [,2] [,3] [1,] -9.899495 -10.404571 -10.0005102 [2,] 0.000000 -1.320946 -2.9895090 [3,] 0.000000 0.000000 0.2294157 Q^T Q = I となるか試す。 t(q) %*% q [,1] [,2] [,3] [1,] 1.000000e+00 -1.110223e-16 -1.665335e-16 [2,] -1.110223e-16 1.000000e+00 -9.714451e-17 [3,] -1.665335e-16 -9.714451e-17 1.000000e+00 qr.X関数を使うことで、qrオブジェクトの元の行列を取り出すことができる。 qr.X(objqr) [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 9 9 8 コレスキー分解する chol関数を使う。 mx0 - matrix(c(1, 0, 1, 0, 2, 0, 1, 0, 3), 3, byrow = TRUE) mx0 [,1] [,2] [,3] [1,] 1 0 1 [2,] 0 2 0 [3,] 1 0 3 mx - chol(mx0) mx [,1] [,2] [,3] [1,] 1 0.000000 1.000000 [2,] 0 1.414214 0.000000 [3,] 0 0.000000 1.414214 得られた結果が正しいか、確認する。 t(mx) %*% mx [,1] [,2] [,3] [1,] 1 0 1 [2,] 0 2 0 [3,] 1 0 3 上記と同じ計算(A T A)はcrossprod関数を使うと同じ結果を得ることができる。 crossprod(mx) [,1] [,2] [,3] [1,] 1 0 1 [2,] 0 2 0 [3,] 1 0 3 固有値と固有ベクトルを求める eigen関数を使う。 # 例1 d - c(1, 3, -2, -4) mx - matrix(d, 2, 2) print(mx) [,1] [,2] [1,] 1 -2 [2,] 3 -4 eig - eigen(mx) print(eig) eigen() decomposition $values [1] -2 -1 $vectors [,1] [,2] [1,] 0.5547002 0.7071068 [2,] 0.8320503 0.7071068 # 固有値(合計2つ) print(eig$value) [1] -2 -1 # 固有値 -2 のときの固有ベクトル print(eig$vector[, 1]) [1] 0.5547002 0.8320503 # 固有値 -1 のときの固有ベクトル print(eig$vector[, 2]) [1] 0.7071068 0.7071068 # 例2 d - c(1, 1, 1, 0, 1, 0, 2, 1, 0) mx - matrix(d, 3, 3) print(mx) [,1] [,2] [,3] [1,] 1 0 2 [2,] 1 1 1 [3,] 1 0 0 eig - eigen(mx) print(eig) eigen() decomposition $values [1] 2 1 -1 $vectors [,1] [,2] [,3] [1,] 0.5345225 0 -0.7071068 [2,] 0.8017837 1 0.0000000 [3,] 0.2672612 0 0.7071068 # 固有値(合計3つ) print(eig$value) [1] 2 1 -1 # 固有値 2 のときの固有ベクトル print(eig$vector[, 1]) [1] 0.5345225 0.8017837 0.2672612 # 固有値 1 のときの固有ベクトル print(eig$vector[, 2]) [1] 0 1 0 # 固有値 -1 のときの固有ベクトル print(eig$vector[, 3]) [1] -0.7071068 0.0000000 0.7071068 固有値は数値的に求めているため、基本的に戻り値は近似値である。そのため、解析的には整数で得られる場合でも戻り値が複素数になる場合がある。この場合、固有ベクトルも複素数になる。以下の例では、解析的には固有値は3と-1(二重根)と求められるが、戻り値は複素数になっている。虚部が無視できるくらい小さいため、虚部を切り捨てて実数ととして扱ってかまわないが、ケースバイケースであることに注意。 d - c(1, 2, -1, 2, 1, -1, -4, 4, -1) mx - matrix(d, 3, 3) eig - eigen(mx) print(eig) eigen() decomposition $values [1] 3+0i -1+0i -1-0i $vectors [,1] [,2] [,3] [1,] -0.9045340+0i -7.071068e-01+0.000000e+00i -7.071068e-01+0.000000e+00i [2,] -0.3015113+0i 7.071068e-01-0.000000e+00i 7.071068e-01+0.000000e+00i [3,] 0.3015113+0i 0.000000e+00+2.637113e-09i 0.000000e+00-2.637113e-09i 固有値と固有ベクトルを求める eigen関数を使う。戻り値はリストで、順番にvaluesに固有値が、vectorsにその固有値のときの固有ベクトルが含まれる。 mxaa - matrix(c(3, 1, 1, 1, 2, 0, 1, 0, 2), nrow = 3) print(mxaa) [,1] [,2] [,3] [1,] 3 1 1 [2,] 1 2 0 [3,] 1 0 2 lam - eigen(mxaa) print(lam) eigen() decomposition $values [1] 4 2 1 $vectors [,1] [,2] [,3] [1,] 0.8164966 0.0000000 0.5773503 [2,] 0.4082483 -0.7071068 -0.5773503 [3,] 0.4082483 0.7071068 -0.5773503 この例では固有値と固有ベクトルは3つあり、例えば3番目の固有値と固有ベクトルを取り出すには、以下のようにする。 lam$values[3] [1] 1 lam$vectors[, 3] [1] 0.5773503 -0.5773503 -0.5773503 特異値分解を行う svd関数を使う。特異値分解の等式は以下のとおり。 A = U D V^T UとVは直交行列。DはAの特異値を対角成分にもつ対角行列。 a - matrix(1 9, 3, 3) a [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 r - svd(a) r $d [1] 1.684810e+01 1.068370e+00 5.543107e-16 $u [,1] [,2] [,3] [1,] -0.4796712 0.77669099 0.4082483 [2,] -0.5723678 0.07568647 -0.8164966 [3,] -0.6650644 -0.62531805 0.4082483 $v [,1] [,2] [,3] [1,] -0.2148372 -0.8872307 0.4082483 [2,] -0.5205874 -0.2496440 -0.8164966 [3,] -0.8263375 0.3879428 0.4082483 svd関数の戻り値はリスト。要素dに特異値が代入されている。 r$d [1] 1.684810e+01 1.068370e+00 5.543107e-16 上記の恒等式における、行列U(戻り値では要素u)と行列V(戻り値では要素v)が直交行列であることを確認する。 t(r$u) %*% r$u [,1] [,2] [,3] [1,] 1.000000e+00 1.110223e-16 5.551115e-17 [2,] 1.110223e-16 1.000000e+00 -1.110223e-16 [3,] 5.551115e-17 -1.110223e-16 1.000000e+00 t(r$v) %*% r$v [,1] [,2] [,3] [1,] 1.000000e+00 0.000000e+00 -1.110223e-16 [2,] 0.000000e+00 1.000000e+00 1.110223e-16 [3,] -1.110223e-16 1.110223e-16 1.000000e+00 上記の恒等式が成り立っているか確認する。 r$u %*% diag(r$d) %*% t(r$v) [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 行列Aの特異値は、A^T Aの正の固有値の正の平方根でも求められる。 sqrt(eigen(t(a) %*% a)$values) [1] 1.684810e+01 1.068370e+00 7.942757e-08 3つ目は実質0ということだが、高精度に計算されていないことがわかる。 余因子を求める polyMatrixパッケージのcofactor関数を使う。以下、使用例。計算に用いた行列はここを参考にしており、先に余因子行列をadjoint関数を使用して求めている。 d - c(8, 3, 4, 1, 5, 9, 6, 7, 2) mx - matrix(d, 3) print(mx) [,1] [,2] [,3] [1,] 8 1 6 [2,] 3 5 7 [3,] 4 9 2 adjoint(mx) [,1] [,2] [,3] [1,] -53 52 -23 [2,] 22 -8 -38 [3,] 7 -68 37 cofactor(mx, 1, 2) [1] 22 cofactor(mx, 2, 3) [1] -68 余因子行列を求める polyMatrixパッケージのadjoint関数を使う。以下、使用例。計算に用いた行列はここhttps //jp.mathworks.com/help/symbolic/adjoint.htmlを参考にしている。 d - c(8, 3, 4, 1, 5, 9, 6, 7, 2) mx - matrix(d, 3) mx [,1] [,2] [,3] [1,] 8 1 6 [2,] 3 5 7 [3,] 4 9 2 adjoint(mx) [,1] [,2] [,3] [1,] -53 52 -23 [2,] 22 -8 -38 [3,] 7 -68 37 余因子行列の性質 A A~ = A~ A ~ = |A|・En を確認する。 print(mx %*% adjoint(mx)) [,1] [,2] [,3] [1,] -3.600000e+02 2.842171e-13 -5.684342e-14 [2,] -7.815970e-14 -3.600000e+02 -5.684342e-14 [3,] -8.704149e-14 1.421085e-13 -3.600000e+02 print(adjoint(mx) %*% mx) [,1] [,2] [,3] [1,] -3.600000e+02 2.842171e-14 -1.136868e-13 [2,] 5.684342e-14 -3.600000e+02 5.684342e-14 [3,] 8.526513e-14 1.705303e-13 -3.600000e+02 print(det(mx) * diag(nrow(mx))) [,1] [,2] [,3] [1,] -360 0 0 [2,] 0 -360 0 [3,] 0 0 -360 上2つの計算結果の非対角成分は非常に小さいので0と見なしてよく、上記の性質を満たしていることが確認できた。 名前 コメント
https://w.atwiki.jp/checkandrepeat/pages/172.html
改訂版の問題 2b3_%E4%B8%8D%E7%AD%89%E5%BC%8F1.png 目標 問題151 hoge → 解答 問題152 hoge → 解答 問題153 hoge → 解答 問題154 hoge → 解答 候補問題 問題151 コメント 問題152 コメント 問題153 コメント 問題154 コメント この節の問題全体に対するコメント コメント
https://w.atwiki.jp/checkandrepeat/pages/173.html
改訂版の問題 2b3_%E4%B8%8D%E7%AD%89%E5%BC%8F2.png 目標 問題155 hoge → 解答 問題156 hoge → 解答 問題157 hoge → 解答 候補問題 問題155 コメント 問題156 コメント 問題157 コメント この節の問題全体に対するコメント コメント