■トロコイドの幾何学

 円や楕円は古典的な図形であり,現在,幾何学的に研究されることはまずない.しかし,古来より美しい曲線や図形は人々の感性に訴え,深い感動を与えると同時に理性にも訴え,なぜこうなっているのかという研究に駆りたててきた.

 地球や月の形は球である.もちろん実際には完全な球ではないが,さまざまな目的のためには球で近似することは適切であろう.また,エピサイクロイドは地球から見たときの惑星の逆行運動の説明に用いられた曲線で,古代ギリシア人は惑星の動きを表現するために周転円(円の周りをまわる円)を考えていたことが知られている.その後,惑星軌道の形は楕円であることがわかったのだが,歴史的に見て,幾何学に対する関心は自然や物理現象への応用が確立されことで強くなってきたと考えられる.

 コラム「n角の穴をあけるドリル」の円近似では,円上に中心をおき,円周上を回転する点の軌跡

  x=acosθ+ccosnθ

  y=asinθ+csinnθ

が頻繁に登場した.これはn公転する間に1自転するというモデルである.

 また,楕円:

  x=acosθ,y=bsinθ

は2次曲線:x^2/a^2+y^2/b^2=1であり,惑星は太陽を焦点とする楕円軌道上を運動する.楕円上に中心をおき,円周上を回転する点の軌跡

  x=acosθ+ccosnθ

  y=bsinθ+csinnθ

は惑星を回る衛星の運動を想起させるが,実際,n角の穴をあけるドリルに現れた問題でもある.→コラム「n角の穴をあけるドリル(その14)」

 さらに,一般化して

  x=acosθ+ccosφ

  y=bsinθ+csinφ

で定義される曲線も考えることができるだろう.三角関数sinxは奇関数,cosxは偶関数で,cos^2x+sin^2x=1が成り立つ.この式が円x^2+y^2=1であることから,三角関数のことを円関数ともいう.

 ともあれ,グラフに描けるからにはf(x,y)=0あるいはy=g(x)なるfまたはgは存在する.そこで問題となるのは計算により明示的に表せるか,その関数が代数的であるとか,初等関数であるとかである.円関数の組み合わせであるこの曲線は何次曲線だろうか? c=0ならば代数的(2次曲線)であることは自明であるが,それ以外では何次曲線になるのだろうか? それとも代数的にならないのだろうか?

===================================

【1】平面代数曲線

 2変数x,yの多項式f(x,y)=0で定義される曲線を平面代数曲線と呼びます.f(x,y)=0が2次式の場合,その一般式は,

  ax^2+hxy+by^2+cx+dy+e=0

のごとく,項数6の多項式として書くことができます.2次曲線には楕円,放物線,双曲線があり,それらは円錐(必ずしも直円錐でなくてよい)を平面で切断したときの切り口として現れる一群の曲線,すなわち円錐曲線です.

 同様に,3次曲線とはf(x,y)=0が2変数x,yの3次あるいは3次以下の方程式で与えられた曲線です.3次曲線の例としては,ディオクレスのシッソイド(x^3+xy^2=y^2)があげられますが,これは古代ギリシアにおいて立方体倍積問題に用いられた曲線です.また,

  y=x^3+x^2+x+1

  y^3=xy^2−2x^2y+y−3

なども3次曲線で,一般式の項数は10になります.そこで,・・・

(Q)平面内n次曲線f(x,y)=0の一般式の項数は?

(A)3Hn=n+2Cn=(n+2)(n+1)/2

 多項式を用いた定義曲線では表せない(代数曲線でない)例として,サイクロイド:

  x=r(θ−sinθ),y=r(1−cosθ)

や懸垂線があげられます.エピサイクロイド(カージオイド,ネフロイドなど),ハイポサイクロド(デルトイド,アステロイドなど)は,サイクロイドとは異なり代数曲線です.

===================================

【2】代数曲線になる例

 回転円(半径r)が固定円(半径R)に接して滑ることなく転がっていくとき,回転円の周上の点の軌跡を考えます.回転円が固定円に外接するとき,その軌跡をエピサイクロイド,内接するとき,ハイポサイクロイドと呼びます.

 R/r比が無理数ならば,回転円上の1点aが固定円上の1点bと接した後,円が永久に転がり続けたとしても,両者は再び接することはありませんが,有理数ならば有限回の回転の後再び接します.R=nr(nは自然数)の場合,ちょうど1回転後に再び接することになります.

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

[1]ハイポサイクロイド

 n個の尖点をもつハイポサイクロイド

  x=(n−1)rcosθ+rcos(n−1)θ・・・(1)

  y=(n−1)rsinθ−rsin(n−1)θ・・・(2)

において,xはcosθのn−1次式で表されます.

 n=2のとき,

  f(x,y)=y   −2≦x≦2

すなわち,固定円の直径と一致します(コペルニクスの定理).直径は2つの尖点をもっていて,その両端は退化した2つの尖点とみなすことができます.

 また,n=3,r=1とすると,デルトイドの媒介変数表示

  x=2cosθ+cos2θ・・・(1)

  y=2sinθ−sin2θ・・・(2)

で与えられますが,cos2θ=2cos^2θ−1ですから

  x=2cos^2θ+2cosθ−1

これを解いて

  cosθ={−1+(2x+3)^1/2}/2

 また,(1)^2+(2)^2より

  x^2+y^2=5+4cos3θ

 →(x^2+y^2−5)/4=4cos^3θ−3cosθ

よりcosθを消去すると,直交座標系におけるデルトイドの方程式は

  f(x,y)=(x^2+12x+9+y^2)^2−4(2x+3)^3

=(x^2+y^2)^2+18(x^2+y^2)−8x(x^2−3y^2)−27=0

と表されます.すなわち,4次曲線というわけです.

 また,星形曲線アステロイドは固定円の半径が回転円の半径の4倍になっているハイポサイクロイドです.n=4,r=1とすると,アステロイドでは

  x=3cosθ+cos3θ・・・(1)

  y=3sinθ−sin3θ・・・(2)

ですが,3倍角の公式

  cos3θ=4cos^3θ−3cosθ

  sin3θ=3sinθ−4sin^3θ

を用いると

  x=4cos^3θ

  y=4sin^3θ

より

  x^2/3+y^2/3=4^2/3

を得ることができます.

 これは簡単な形ですが,整数ベキに直すために両辺を3乗

  3x^2/3y^2/3(x^2/3+y^2/3)=4^2−x^2−y^2

  3(4xy)^2/3=4^2−x^2−y^2

さらに3乗すると,アステロイドは6次曲線:

  f(x,y)=(x^2+y^2)^3−48(x^2+y^2)^2+432x^2y^2+768(x^2+y^2)−4096=0

と表すことができることがわかります.

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

[2]エピサイクロイド

 一方,エピサイクロイドは地球から見たときの惑星の逆行運動の説明に用いられた曲線で,古代ギリシア人は,惑星の動きを表現するために周転円(円の周りをまわる円)を考えていたことが知られています.エピサイクロイドは

  x=(n+1)rcosθ−rcos(n+1)θ

  y=(n+1)rsinθ−rsin(n+1)θ

で与えられます.

 固定円と回転円の半径が等しい場合,エピサイクロイドは心臓型曲線(カーディオイド)を描きます.カーディオイドは,n=1として

  x=2cosθ−cos2θ・・・(1)

  y=2sinθ−sin2θ・・・(2)

で与えられますが,cos2θ=2cos^2θ−1ですから

  x=2cos^2θ−2cosθ−1

これを解いて

  cosθ={−1+(3−2x)^1/2}/2

 また,(1)^2+(2)^2より

  x^2+y^2−5=−4cosθ

よりcosθを消去すると,直交座標系におけるカーディオイドの方程式は

  f(x,y)=(x^2+y^2−3)^2−4(3−2x)^3

=(x^2+y^2)^2−6(x^2+y^2)+8x−3=0

と表されます.すなわち,4次曲線というわけです.

 ネフロイド(n=2)の場合は,

  x=3cosθ−cos3θ=6cosθ+4cos^3θ・・・(1)

  y=3sinθ−sin3θ=4sin^3θ・・・(2)

です.(2)よりsin^2θ=(y/4)^2/3を(1)に代入してもよいのですが,ここでは(1)^2+(2)^2より

  (x^2+y^2−10)/6=−cos2θ=2sin^2θ−1

に代入すると,6次曲線:

  f(x,y)=(x^2+y^2)^3−12(x^2+y^2)^2+48x^2−60y^2−64=0

になることがわかります.

===================================

【3】関数を描く

 cosθに関するn−1次方程式(n+1次方程式)を解く方法は,ここまではうまくいったのですが,nが大きくなると難しくなります.そのため,ハイポサイクロイド(エピサイクロイド)の一般的な代数曲線表示には別の方法を用いる必要がでてくると思われますが,いまのところno ideaです.

 この問題は次回以降への持ち越しとして,ここでは微分方程式の解法の応用として,陰関数f(x,y)=0の描き方について考えてみます.その導入を容易にするために,まず,陽関数と媒介変数型関数について簡単に触れておきます.

[1]陽関数と媒介変数型関数

 陽関数y=f(x)では1つの変数xに対してyの値がただ1つ対応するので1価関数ともいわれます.一方,陰関数f(x,y)=0は1つのxの値に対して一般にyの値は一意ではありません(多価関数).極座標(r,θ)を使ってr=f(θ)の形に表現することができる場合,たとえば,パスカルのリマソン(蝸牛線)やレムニスケート(双葉曲線)は直交座標系では陰関数となる4次曲線:

  リマソン:(x^2+y^2−bx)^2=a^2(x^2+y^2)

  レムニスケート:(x^2+y^2)^2=a^2(x^2−y^2)

ですが,極座標ではそれぞれ

  r=a+bcosθ,

  r^2=a^2cos2θ

と表され,陽関数と本質的な違いはありません.

 陽関数(従属変数型関数)では,y=f(x)がどんなに複雑であってもきちんと式に書き表わすことさえできればグラフを描くことができます.また,媒介変数型関数(x,y)=(f(t),g(t))の関数描画も容易ですが,陰関数f(x,y)=0のグラフは簡単には描けません.もし,陰関数をyについて解いてy=g(x)と陽関数に変形できる場合は一価関数となるので,簡単にグラフを描くことができます.また,パラメトライズ(媒介変数表示の形に書くこと)ができればこれも容易に描画可能です.

[a]2次曲線のパラメータ表示例

 原点を中心とする半径1の円の円周上の点を(x,y)とすれば,第3の変数θを媒介として,x=cosθ,y=sinθと表されます.θは(x,y)と(0,0),θ/2は(x,y)と(−1,0)を結ぶ直線とx軸とのなす角を表しています.さらにt=tan(θ/2)とするとtan(θ/2)=sinθ/(1+cosθ),cosθ=(1−t^2)/(1+t^2),sinθ=2t/(1+t^2)より,

  x=±(1−t^2)/(1+t^2),

  y=(2t)/(1+t^2)   (−1≦t≦1)

と表すことができます.

 単位円上のすべての有理点(座標x,yが有理数であるような点)は,x=±(1−t^2)/(1+t^2),y=(2t)/(1+t^2)とx=−1,y=0です.このように,円の有理点全体は1つの変数tによって一意化できますが,円ばかりではなく,現在では2次曲線に1つでも有理点があると実は無限に有理点があることがわかっています.2次曲線は有理点を無限のもつか,1つももたないかのどちらかです.実際,t=m/nを代入して展開すると,

  x=±(m^2−n^2)/(m^2+n^2),y=2mn/(m^2+n^2)

となります.したがって,ピタゴラス数(a^2+b^2=c^2:a,b,cは整数)の組み合わせは,a=m^2−n^2,b=2mn,c=m^2+n^2によって,すべて導き出せることがおわかり頂けることでしょう.

 なお,三角関数の有理関数の積分はt=tan(θ/2)とおくと有理関数の積分に帰着できることはほとんどの教科書に書かれていますが,うまくtanθ,cos^2θ,sin^2θだけの関数に書き表すことができる場合には,tanθ=tとおくことによって三角関数の有理関数の積分計算は格段と簡単になります.この場合,cos^2θ=1/(1+t^2),sin^2θ=t^2/(1+t^2)となりますから,tan(θ/2)=tとおいた場合に比べ,次数が約半分の有理関数になります.

[b]3次曲線のパラメータ表示例

 デカルトの正葉線x^3−3axy+y^3=0(a>0)では,y/x=t,すなわちy=txとおくことによってパラメータ表示の形に書くことができます.

  x=3at/(1+t^3),y=3at^2/(1+t^3)

この3次曲線は重根をもち,原点(0,0)が特異点になります.

 同様に,特異点をもつy^2=x^3やy^2=x^2(x+1)は楕円曲線ではありません.前者は(t^3,t^2),後者は(t^2−1,t(t^2−1))とパラメトライズできます.

[c]4次曲線のパラメータ表示例

 レムニスケートは

  x=t(t^2+1)/(1+t^4)

  y=−t(t^2−1)/(1+t^4)

のようにパラメトライズすることができます.

 以上の例のごとく,直線や2次曲線(円錐曲線)はその上の点をパラメータtの式として表せるのに対して,例えば,3次曲線x^3−3axy+y^3=c(c≠0),特異点をもたない楕円曲線y^2=x^3+ax+b(4a^3+27b^2≠0),フェルマー曲線x^n+y^n=1(n>2)はもはや初等的な関数ではパラメトライズされず,fがx,yの任意の関数である場合,陽関数表示も媒介変数表示もできるとは限りません.したがって,陰関数の描画ルーチンが必要になります.

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

[2]陰関数

 陽関数y=g(x)はf(x,y)=y−g(x)と同じことになるので,陽関数は必ず陰関数に書き直すことができます.陰関数のグラフをコンピュータで描く方法はいろいろと工夫されています.

 まず考えられるのは,グラフの全領域内を微小な長方形で埋めつくし,格子点上に離散的に関数値を計算して与えておき,各々の長方形の4辺とf(x,y)=0との交点を1次補間法で求める方法です.しかし,この方法によるグラフ表示はかなり面倒で,x値,y値の探索に時間がかかるため描画時間も長くなりますし,特異点に対しては正しく描画できないという欠点もあります.そこで,もっと一般的な陰関数の描画原理について考えてみることにしましょう.

 陽関数の場合に媒介変数tを導入してx=t,y=g(t)とすれば,これはy=g(x)と同じことになるので,陽関数は必ずパラメータ表示に書き直すことができます.これと同様に陰関数f(x,y)=0において,一意に定まるパラメータtを導入してx=x(t),y=y(t)と表わされるものとすると,座標(x,y)の代わりに(t,x(t)),(t,y(t))を用いることができるため,陽関数と同様の取り扱いが可能になります.

 すなわち,陽関数,陰関数いずれの場合であってもx−y平面上の点(x,y)を第3の変数tをパラメータとする点(x(t),y(t))ととらえると,tの変化とともに描かれる点の軌跡がグラフになります.このように陰関数でなしに,陽な形あるいは媒介変数表示の形にして書くことができれば,多価関数が自然に定義できる利点があり申しぶんありません.

 したがって,陰関数表示された曲線f(x,y)=0のグラフを描くことはf(x(t),y(t))=0を満たす2つの関数x(t),y(t)を見つけだすことと同等の問題になります.なんとかして媒介変数表示したいものですが,そのためには微分方程式の差分解法の知識が必須なものになってきます.

 そこでまず,f(x0,y0)=0を満たす2つの数x0,y0が求まっているとします.x(0)=x0,y(0)=y0とすると点(x0,y0)の近傍の点(x,y)=(x(Δt),y(Δt))で,小さなΔtに対して

  f(x,y)=f(x0,y0)+Δxfx(x0,y0)+Δyfy(x0,y0)+高次の項

が成立します.

x=x0+Δx,y=y0+Δy,f(x0,y0)=0,f(x,y)=0より

  Δxfx(x0,y0)+Δyfy(x0,y0)≒0

したがって,一般性を失なうことなく,全微分型方程式

  df/dt=fx(x,y)dx/dt+fy(x,y)dy/dt=0

が得られます.

 このとき1階の連立微分方程式があって

  dx/dt=−fy(x,y),

  dy/dt= fx(x,y)

を満たすものとします(ハミルトン型方程式).ハミルトン型の方程式では

  df/dt=fx(x,y)dx/dt+fy(x,y)dy/dt=0

が成り立ちますから,tについて積分するとf(x,y)=c,初期条件f(x0,y0)=0よりc=0,すなわちf(x,y)=0となります.この式の場合,fはtに関係なく一定で,点(x,y)は等高線上を進むと考えられますから,軌道に沿ってエネルギーが変化しない系(保存系)を表わすものと解釈されます.このような関数fをハミルトン関数といい,物理の世界では運動の全エネルギーを表わすものとして有名です.

 以上により,グラフを描くことはハミルトン型の2元連立常微分方程式

  dx/dt= fy(x,y),

  dx/dt=−fy(x,y)

および

  dy/dt=−fx(x,y),

 dy/dt= fx(x,y)

を初期条件x(0)=x0,y(0)=y0のもとで解くことに帰着されます.たとえば,ルンゲ・クッタ法による差分解法を用いて,この解となる軌道を求めることができます.

 最後に,f(x0,y0)=0を満たす2つの数x0,y0を求めてみます.この解はx0を適当にとりf(x0,y)をyの関数と考えて,ニュートン・ラプソン法を用いて解y=y0を求めることができます.2元連立方程式

  f(x,y)=0,y=y0

においては,更新公式Δx=−f(x,y)/fx(x,y),Δy=0が得られます.この式は1変数関数におけるニュートン法の公式

  Δx=−f(x)/f’(x)

において微分を偏微分に変えただけで全く同じ形式をとっています.

===================================