10. 反転法のためのプログラム



(1) はじめに 
 円や球などが接するような問題を解くためによく使われる方法として、反転法があります。 和算にはこの方法がなくて、ピタゴラスの定理のような比較的基本的な方法で得られた解答が多いので、その解法は長くなりました。 しかし、反転法を利用すると、その解法は極端に短くなります。
 このサイトでは、反転法による図形の変換を自動的に処理するために作成した、十進BASICによるプログラムを紹介します。このプログラムを実行することによって、反転法についての理解が深まるのではないかと期待しています。

(2) 点の反転
  平面上の定点 T を中心として、半径 k の円 S があるとき、平面上の T 以外の任意点 P に対して、TP を結ぶ直線上に点P'を      TP・TP' = k  ・・・・・・ ①
となるようにとるとき、P' を円 S に関する P の 反点 といい、P を  P’ に対応させる 反転 といいます。 また、このときに使った円 S を 反転の円、その中心 T を 反転の中心円 S の半径 k を 反転の半径 , k2を 反転係数といいます。

 図形的には、たとえば右の図に示すように点 P が円 S の外部にあるときは、P から円 S に引いた接線 PQ の接点 Q から直線 TP に引いた垂線の足をP'とすると、∠TQP =∠TP'Q = 90°, ∠PTQ = ∠QTP'     したがって   ⊿TQP ∽TP'Q
よって TP : TQ = TQ : TP', TQ = k  から  TP ・TP' = TQ= k2  したがって、①が成り立っています。

また、点 P が円 S の内部にあるときは、P の反点 P' は S の外部にあって、同様にして①が成り立ちます。

【補足1】 上式の①は、「k  が2つの線分の長さ TP と TP' の相乗平均になっている」ことを示しています。
補足2】 点 P が反転の中心 T と一致しない限り、点 P にはただ1つの点 P' が対応し、逆に 点 P' にはただ1つの点 P が対応します。
補足3】 反転円の外部の点の反点は内部に、内部の点の反点は外部に移ります。 また、反転円の周上の点の反点は不変です。

(3) 円の反転 
 図形 F 上の各点の反点を求めると、それらの反点の全体は1つの図形 F' を作ります。 この F' を F の半形といいます。 このサイトでは、図形 F 上 は図形 F' に反転される」または「図形 F の反転は図形 F' である」のように簡潔に表現することにします。 また、このサイトで扱う図形を円に限定して、円の反転を中心に考察していくことにします。

 まず、反転の中心 T を通らない円の反転に関する定理として、定理A をつぎに示します。

 
 【定理A】
  反転の中心 T を通らない円 C の反転は円 C' である。

【証明】 
 点 T を反転の中心、反転の半径を k とする。 右の図のように、反転の中心 T を通らない円 C の直径の両端 M, N の反点をそれぞれ M', N' とすると、M', N' は定点である。 このとき、円 C 上の M, N 以外の任意の点 P の反点を P' とすると TM ・TM' =.TP ・TP' (=k2)
したがって、4点 M, M', P', P は同一円周上にあるから 
 ∠MPT =∠MM'P'  
また、直線 TPP' と円 C との交点で、P 以外の交点を Q とすると、4点 M, N, Q, P は同一円周上にあるから ∠MPT =∠MNQ   したがって  MM'P' =∠MNQ ・・・・・・ ①
同様にして TN・TN' =.TP・TP' (=k2) から 4点 N, N', P', P は同一円周上にあるから 
     ∠NPQ =∠M'N'P' 
また、4点 M, N, Q, P は同一円周上にあるから
      ∠NPQ =∠NMQ  したがって  M’N'P' =∠NMQ ・・・・・・ ②
よって、 ①と②から ⊿MNQ ∽⊿N'M'P' 
ここで、線分 MN は円 C の直径であるから ∠N'P'M' =∠MQP= 90°
したがって、点 P の反点 P' は線分 M'N' を直径とする円 C' の周上にある。
 ゆえに、反転の中心 T を通らない円 C の反転は1つの円 C' である。 (証明終わり)

【補足1】 反転の円 S はS 自身に反転されます。
【補足2】 反転の中心 T を通らない円 C が円 C' に反転されるとき、円 C' は円 C に反転されます
【補足3】 反転の中心 T 以外の点 P で接する2個の円の反転は、点 P の反転 P' で接する2個の円 となります

 反転の中心 T を通る
円の反転に関する定理として、定理B をつぎに示します。

 
【定理B】
  反転の中心 T を通る円 C 
の反転は、T を通らない直線となる。

【証明】
 点 T を反転の中心、反転の半径を k とする。 右の図のように、反転の中心 T を通る円 C の直径 TA の端点 A の反点を A'  とすると、A' は定点である。 このとき、円 C 上の T, A 以外の任意の点 P の反点を P' とすると  TA・TA' = TP・TP' (= k2)
したがって、4点 A, A', P', P は同一円周上にあるから  ∠TPA =∠AA'P'  
ここで、線分 TA は円 C の直径であるから ∠TPA = 90°
したがって、∠AA'P = 90° から、点 P の反点 P' は点 A’ を通り TA に垂直な直線 C' 上にある。
 ゆえに、反転の中心 T を通る円 C の反転は、T を通らない直線 C' である。 (証明終わり)

補足1】 直線は反転の中心 T を通るに反転されます
補足2】 反転円の中心 T を通る直線の反転は、やはり点 T を通る直線となります。
補足3】 反転の中心 T で接する2個の円は、点 T を通らない2本の平行な直線に反転されます

(4) 座標平面上の点の変換式
 座標平面上で、反転の中心を T(x
0, y0), 反転の半径を k とする反転を考えます。右の図に示すように、点 T と異なる点 P(x, y)の反転を P'(x', y')とすると、反転の定義によって 等式 TP・TP' = k2  が成り立ちます。
このとき ⊿TPQ∽⊿TP’Q’  から  TQ' / TQ = TP' / TP = TPTP'/TP'2 k2/TP'2
ここで、zx = x-x0, zy = y-y0  とおくと  (x'x0) / (x-x0) = k/ (zx2+zy2)   から
 x' = k2zx/ (zx2+zy2) + x0  ,  同様にして y' = k2zy/ (zx2+zy2) + y0 
が得られます。これが、点 P(x, y)からその反転 P'(x', y')への変換式です。

なお、座標平面上で、円と直線の方程式はそれぞれ、媒介変数 t を用いて
   点(x1,y1)を中心とする半径 r の円 : x = r ・COS(t) + x1,  y = r ・SIN(t) + y1  (0° ≤ t ≤ 360°)
   点(x1,y1)を通る方向ベクトル(a,b)の直線の媒介変数(t)表示の方程式 : x = x+ a・t,  y = y+ b・t  
のように表されます。

(5) 十進BASICによるプログラミング
 反転法による図形の変換を自動的に処理するために、十進BASICによるプログラムを作成しました。
   inversion-0.Basic  (または 左の欄外に示した inversion-0.Basic ) をクリックすると、そのプログラムの全体が表示されます。

   このプログラミングの流れ図の概略は以下の通りです。 
      ≪描画領域に座標系を導入≫ ⇒ 反転の中心Tの座標(x0,y0)設定して、マークの形●で表示 ⇒ 反転の半径 k を設定 ⇒ 反転円を黒色で描画
       ⇒ 副プログラムen副プログラムsen によって反転させたい図形を濃い緑色で描画しながら、副プログラムinversion によって反転図形を赤色で描画
       プログラムの実行(►ボタンを押す)

【注】 上記の 副プログラムen や副プログラムsen を組み合わせると、複雑な図形とその反転図形を描くことが可能ですが、描画の完了までに多少の時間を要します。

   inversion-0.Graph  をクリックすると、その実行結果の画像が表示されます。
【設定】   反転の中心T(0,6)   反転の半径 k=6
【反転の対応】   反転円:黒色   反転させたい図形:緑色   反転された図形:赤色
【反転先:】  Tを中心とする反転円内の円➡Tを中心とする反転円外の円   Tを通るT を通らない直線
                    Tで接する2個の円Tを通らない2本の平行な直線
                    Tを通らないで、T以外の点 P で接する2個の円点Pの反転 P'で接する2個の
                    Tを通らない直線Tを通る

(6) その他のプログラムと実行結果
[1]  inversion-1.Basic   inversion-1.Graph

【設定】  格子を描かない。  描画領域を黒色で塗りつぶす。  反転の中心T(0,6) ●     反転の半径 k=6
【反転の対応】   反転円:白色   反転させたい図形:黄色   反転された図形:赤色
【反転先:】  Tを中心とする反転円内の円➡Tを中心とする反転円外の      
                    Tを通るT を通らない直線  Tで接する2個の円Tを通らない2本の平行な直線
                    Tを通らないで、T以外の点 P で接する2個の円点Pの反転 P'で接する2個の円   直線Tを通る

[2]  inversion-2.Basic   inversion-2.Graph
【設定】   格子を描かない。   描画領域を黒色で塗りつぶす。   反転の中心T(0,6) ●      反転の半径 k=6
【反転の対応】   反転円::白色   反転させたい図形:黄色   反転された図形:赤色
【反転先:】  Tを中心とする反転円内の円➡Tを中心とする反転円外の円   Tを通るT を通らない直線
                    Tで接する2個の円Tを通らない2本の平行な直線
                    Tを通らないで、T以外の点 P で接する2個の円点Pの反転 P'で接する2個の円   直線Tを通る

[3]  inversion-3.Basic   inversion-3.Graph
【設定】   格子を描かない。   描画領域を黒色で塗りつぶす。   反転の中心T(0,0) ●     反転の半径 k=6
【反転の対応】   反転円:白色   反転させたい図形:黄色   反転された図形:赤色
【反転先:】  Tで交わる2円Tを通らない平行な2直線   Tを中心とする反転円内の円Tを中心とする反転円外の円

[4]  inversion-4.Basic   inversion-4.Graph
【設定】   格子を描かない。   描画領域を黒色で塗りつぶす。   反転の中心T(0,0) ●     反転の半径 k=6
【反転の対応】   反転円:白色    反転させたい図形:黄色    反転された図形:赤色
【反転先:】  反転円外の接する円反転円内の接する円

【設定】   格子を描かない。   描画領域を黒色で塗りつぶす。   反転の中心T(0,0) ●     反転の半径 k=8
【反転の対応】   反転円:白色    反転させたい図形:黄色    反転された図形:赤色
【反転先:】  反転円の周りの外サイクロイド反転円内の曲線

(7) 十進BASICについて
 十進BASICはコンピュータを計算の道具として使う人のためのプログラミング言語です。国際規格のJIS Full BASICに準拠しており,方言性を排除した初心者にやさしいBASIC言語です。構造化プログラミングに対応しているので、アルゴリズムをわかりやすく記述できます。その他、JISに従ってグラフィックス・ファイル・構造化・例外処理などが可能です。そして、独自の拡張として、複素数や多桁の有理数の計算を行うモードなどもあります。
 十進BASICの詳細については、「十進BASICのホームページ」  http://hp.vector.co.jp/authors/VA008683/   をご覧ください。
このサイトから十進BASICのソフトウェア無料でダウンロードすることができます。  

(8) おわりに
 このページで紹介したプログラムは、反転法による図形の変換を自動的に処理するために作成されたものなのですが、その機能はかなり限定されています。すなわち、反転させたい図形を媒介変数表示の方程式で与えなければならないからです。したがって、和算の算額に示されているような円の半径を求めるような目的には、まったく無能です。しかし、円や直線の反転を見つける訓練には有効でしょう。

 最後までご覧いただいたことを感謝します。お読みになってのご感想をお知らせください。 ⇒ 【ご感想記入のページにリンク】 (ここをクリックしてください。)

【参考にした文献】
 1.「理論・演習 数学新事典」 辻 正次、泉 信一、矢野健太郎 監修 東洋館 発行
 2.「日本の幾何-何題解けますか?」 (深川英俊、ダン・ぺドリー 共著) 森北出版 


 

 
  以下に示すサイトもご覧ください。
 
 *  井村誠司のホームページ 
プログラミング・数学教育・旅行アルバム・国際交流の記録・クラウドコンピューティング.など、多彩な内容が搭載されています。

 *  私の本棚 「私の本棚」には、英語・数学・コンピュータ・伝記・鉄道などの分野の本が詰まっています。 みなさんの読書に参考にしてください。

   イムジンの読書体験 「私の本棚」の続編です。

 *  日本留学試験_数学 日本の大学に留学を希望する人たちに実施される試験科目の一つに数学があります。その問題の内容と解法を見ることができます。

【お願い】 私のホームページについて あなたのご感想をお寄せください。⇒ 【ご感想記入のページ】 (ここをクリックしてください。)