Weekend Mathematicsコロキウム室テーマ別/29.三角形の面積



コロキウム室(三角形の面積)


NO.618 '99 10/3水の流れ三角形の面積(1)

今月の問題を見て、投稿問題です。
三角形ABCの各辺BC、CA、ABを1:2に内分した点をそれぞれL、M、 N とします。
BMとCN、CNとAL,ALとBMの交点をそれぞれP、Q、Rとします。 三角形ABCの面積は三角形PQRの面積の何倍でしょうか。
また、一般に、m<nのとき、各辺をm:nに内分した点をL、M、Nとし て、同様に、考えてみてください。




NO.619 '99 10/7Junko三角形の面積(2)

点Rは線分BM上の点でもあり、線分AL上の点でもあるので、


△ABCの面積をSとすると、
△ABL=△BCM=△CAN=(1/3)S
対称性と先ほどの結果から、
△BLR=△CMP=△ANQ=(1/3)・(1/7)S=(1/21)S
△PQR=S−(△ABL+△BCM+△CAN)+(△BLR+△CMP+△ANQ)
=S−(1/3)S・3+(1/21)S・3
=(1/7)S

答え    7倍



NO.621 '99 10/9Junko三角形の面積(3)

△PQRの三辺に平行な直線をひいてみました。
黄緑色で囲まれた六角形の部分は、△PQRの面積のちょうど13倍になっています。 (数えてみてください。)
また別な見方をすれば△ABCから△PQRを除いた部分の2倍+△PQRとなっています。 このことから、7倍と結論づけることができます。




NO.622 '99 10/12浜田 明巳三角形の面積(4)

Visual Basicで解答プログラムを作ってみました.
プログラムの内容は以下の通りです.
乱数を使い3点A,B,Cの座標を決定し,点L,M,N,P,Q,Rの座標を求め, ヘロンの公式を使い,△ABC,△PQRの面積を計算し, 比△ABC/△PQRを計算する.
この試行を500回(shikoukaisuu)繰り返し,それぞれの場合の面積比を計算し, 面積比の平均を求める.
このプログラムにより,答は7になる事が分かります.
プログラムは2つあり,1つ目は比(r)が1/3の場合で,それぞれの三角形を図示します.
2つ目は比(r)が0と0.5の間の場合で,グラフで描写しています.
またデータをファイルに落とすようになっています
グラフは赤く描かれるのですが,表示後突然黒くなります.
これはf(r)=(1−r+r2)/(1−2r)2のグラフを上書きする為です.
これにより, 答が(1−r+r2)/(1−2r)2=(n2+mn+m2)/(n−m)2である事が分かります.

比が1/3の場合

Option Explicit
Const r = 1 / 3
Sub Form_Load()
    Picture1.Scale (-1, -1)-(1, 1)
End Sub
Sub Command1_Click()
    '三角形の問題2
    Randomize Timer
    Dim j1, j2, j3, j4, j, jj, jjj, iro0, iro1, iro2, dame As Integer
    iro0 = RGB(0, 0, 255): iro1 = RGB(255, 255, 0)
    iro2 = RGB(0, 0, 0)
    Dim shikoukaisuu, kaisuu, machijikan As Long
    shikoukaisuu = 500: kaisuu = 0: machijikan = 400000
    Dim x(1, 8), d(1, 2), a(2), b(2), c(2), bumbo, hen(2), s As Double
    Dim menseki(1), wa, hi, d_genkai, hi_genkai As Double
    wa = 0: d_genkai = 0.01: hi_genkai = 10 ^ (-12)
    Dim ten(8) As String
    ten(0) = "A": ten(1) = "B": ten(2) = "C"
    ten(3) = "L": ten(4) = "M": ten(5) = "N"
    ten(6) = "R": ten(7) = "P": ten(8) = "Q"
    Picture3.Cls: Picture4.Cls
    For j1 = 0 To shikoukaisuu
     For j2 = 0 To 2
      For j3 = 0 To 1
       If j1 = 0 Then
        x(j3, j2) = Rnd * 2 - 1: d(j3, j2) = (Rnd * 2 - 1) * d_genkai
       Else
        d(j3, j2) = d(j3, j2) + (Rnd * 2 - 1) * d_genkai
        If Abs(d(j3, j2)) > d_genkai Then
         d(j3, j2) = -Sgn(d(j3, j2)) * d_genkai
        End If
        x(j3, j2) = x(j3, j2) + d(j3, j2)
        If Abs(x(j3, j2)) > 1 Then x(j3, j2) = Sgn(x(j3, j2))
       End If
      Next
     Next
     For j2 = 0 To 2
      j = (j2 + 1) Mod 3: jj = (j + 1) Mod 3: jjj = j2 + 3
      For j3 = 0 To 1
       x(j3, jjj) = (1 - r) * x(j3, j) + r * x(j3, jj)
      Next
      a(j2) = x(1, jjj) - x(1, j2): b(j2) = x(0, j2) - x(0, jjj)
      c(j2) = x(0, j2) * x(1, jjj) - x(0, jjj) * x(1, j2)
     Next
     dame = 0
     For j2 = 0 To 2
      If dame = 0 Then
       j = (j2 + 1) Mod 3: jj = j2 + 6
       bumbo = a(j2) * b(j) - b(j2) * a(j)
       If bumbo = 0 Then
        dame = 1
       Else
        x(0, jj) = (b(j) * c(j2) - b(j2) * c(j)) / bumbo
        x(1, jj) = (a(j2) * c(j) - a(j) * c(j2)) / bumbo
       End If
      End If
     Next
     If dame = 0 Then
      For j2 = 0 To 1: s = 0
       For j3 = 0 To 2
        j = j3 + j2 * 6: jj = ((j3 + 1) Mod 3) + j2 * 6: hen(j3) = 0
        For j4 = 0 To 1
         hen(j3) = hen(j3) + (x(j4, j) - x(j4, jj)) * (x(j4, j) - x(j4, jj))
        Next
        hen(j3) = Sqr(hen(j3)): s = s + hen(j3)
       Next
       s = s * 0.5: menseki(j2) = s
       For j3 = 0 To 2
        menseki(j2) = menseki(j2) * (s - hen(j3))
       Next
      Next
     End If
     Picture1.Cls
     Picture1.PSet (x(0, 0), x(1, 0)), iro0
     For j2 = 2 To 0 Step -1
      Picture1.Line -(x(0, j2), x(1, j2)), iro0
     Next
     For j2 = 0 To 2: j = j2 + 3
      Picture1.Line (x(0, j2), x(1, j2))-(x(0, j), x(1, j)), iro1
     Next
     If dame = 0 Then
      Picture1.PSet (x(0, 6), x(1, 6)), iro2
      For j2 = 8 To 6 Step -1
       Picture1.Line -(x(0, j2), x(1, j2)), iro2
      Next
     End If
     For j2 = 0 To 8 - dame * 3
      Picture1.CurrentX = x(0, j2): Picture1.CurrentY = x(1, j2)
      Picture1.Print ten(j2)
     Next
     Picture2.Cls: Picture2.Print j1; "回試行"
     If menseki(1) >= hi_genkai Then
      For j2 = 0 To 1: menseki(j2) = Sqr(menseki(j2)): Next
      hi = menseki(0) / menseki(1): wa = wa + hi: kaisuu = kaisuu + 1
      Picture3.Cls: Picture3.Print "△ABC/△PQR="; hi
      Picture4.Cls: Picture4.Print "平均                ="; wa / kaisuu
     End If
     For j2 = 0 To machijikan: Next
    Next
    Beep
End Sub
Private Sub Command2_Click()
    End
End Sub


比がm/(m+n)の場合

Option Explicit
Sub Form_Load()
    Picture1.Scale (-1, -40)-(1, 40)
End Sub
Sub Command1_Click()
    '三角形の問題3
    Randomize Timer
    Dim j1, j2, j3, j4, j, jj, jjj, iro0, iro1, iro2, dame As Integer
    iro0 = RGB(0, 0, 0): iro1 = RGB(255, 0, 0): iro2 = RGB(255, 255, 255)
    Dim shikoukaisuu, kaisuu As Long
    shikoukaisuu = 500
    Dim x(1, 8), y, a(2), b(2), c(2), bumbo, hen(2), s As Double
    Dim r, menseki(1), wa, hi, hi_genkai, kizami As Double
    hi_genkai = 10 ^ (-12): kizami = 0.01
    Picture1.Cls: Picture2.Cls: Picture3.Cls
    For j1 = -36 To 36 Step 4
     Picture1.Line (-1, j1)-(1, j1), iro2
    Next
    For j1 = -9 To 9
     Picture1.Line (0.1 * j1, -40)-(0.1 * j1, 40), iro2
    Next
    Picture1.Line (-1, 0)-(1, 0), iro0
    Picture1.Line (0, -40)-(0, 40), iro0
    Picture4.Cls: Picture4.Print "横軸0.1きざみ,縦軸4きざみ"
    Open "sankaku3.dat" For Output As #1
    For r = 0 To 0.5 - kizami Step kizami
     wa = 0: kaisuu = 0
     For j1 = 1 To shikoukaisuu
      For j2 = 0 To 2: For j3 = 0 To 1: x(j3, j2) = Rnd: Next: Next
      For j2 = 0 To 2
       j = (j2 + 1) Mod 3: jj = (j + 1) Mod 3: jjj = j2 + 3
       For j3 = 0 To 1
        x(j3, jjj) = (1 - r) * x(j3, j) + r * x(j3, jj)
       Next
       a(j2) = x(1, jjj) - x(1, j2): b(j2) = x(0, j2) - x(0, jjj)
       c(j2) = x(0, j2) * x(1, jjj) - x(0, jjj) * x(1, j2)
      Next
      dame = 0
      For j2 = 0 To 2
       If dame = 0 Then
        j = (j2 + 1) Mod 3: jj = j2 + 6
        bumbo = a(j2) * b(j) - b(j2) * a(j)
        If bumbo = 0 Then
         dame = 1
        Else
         x(0, jj) = (b(j) * c(j2) - b(j2) * c(j)) / bumbo
         x(1, jj) = (a(j2) * c(j) - a(j) * c(j2)) / bumbo
        End If
       End If
      Next
      If dame = 0 Then
       For j2 = 0 To 1: s = 0
        For j3 = 0 To 2
         j = j3 + j2 * 6: jj = ((j3 + 1) Mod 3) + j2 * 6: hen(j3) = 0
         For j4 = 0 To 1
          hen(j3) = hen(j3) + (x(j4, j) - x(j4, jj)) * (x(j4, j) - x(j4, jj))
         Next
         hen(j3) = Sqr(hen(j3)): s = s + hen(j3)
        Next
        s = s * 0.5: menseki(j2) = s
        For j3 = 0 To 2
         menseki(j2) = menseki(j2) * (s - hen(j3))
        Next
       Next
       If menseki(0) >= hi_genkai And menseki(1) >= hi_genkai Then
        For j2 = 0 To 1: menseki(j2) = Sqr(menseki(j2)): Next
        wa = wa + menseki(0) / menseki(1): kaisuu = kaisuu + 1
       End If
      End If
     Next
     If kaisuu > 0 Then
      y = wa / kaisuu
      Picture2.Cls: Picture2.Print "m/(m+n)(0〜.49)="; r
      Picture3.Cls: Picture3.Print "面積比       ="; y
      If r = 0 Then
       Picture1.PSet (0, -y), iro1
      Else
       Picture1.Line -(r, -y), iro1
      End If
      Write #1, r, y
     End If
    Next
    Close #1
    Picture1.Circle (1 / 3, -7), 0.0075, iro1
    Picture2.Cls: Picture2.Print "終了しました."
    Picture3.Cls: Picture3.Print "f(r)=(1-r+r^2)/(1-2r)^2プロット"
    For r = 0 To 0.5 - kizami Step kizami
     If r = 0 Then
      Picture1.PSet (0, -f(0)), iro0
     Else
      Picture1.Line -(r, -f(r)), iro0
     End If
    Next
    Beep
End Sub
Private Sub Command2_Click()
    End
End Sub
Private Function f(ByVal r As Double) As Double
    f = (1 - r + r * r) / (1 - 2 * r) / (1 - 2 * r)
End Function


データ(m/(m+n),面積比の順に並んでいます)
0.999970308041995
.011.03091685088192
.021.06385487187592
.031.09878457255916
.041.13607764696844
.051.17592162576469
.061.21849266823427
.071.26406152168348
.081.31292805408391
.091.36540363718997
.11.42189594130447
.111.48274870707101
.121.54851986034893
.131.61960203408582
.141.69677976519562
.151.78061264811073
.161.87188861228095
.171.97178347863177
.182.0810237524478
.192.20338122742966
.22.33105591333246
.212.47950329959968
.222.6415783921597
.232.82205700046731
.243.02366842506976
.253.24842457985923
.263.50521575781715
.273.79442636580152
.284.12387781168895
.294.50203963716306
.34.93767521461343
.315.44392299757662
.326.03659244737924
.336.73787971424711
.347.57442344991707
.358.58765709035429
.369.8163993417154
.3711.3445600805142
.3813.2866250591007
.39,15.7459066751137
.419.000401013052
.4123.3980877733627
.4229.5477885954535
.43,38.5153295949182
.4452.3335906940583
.4575.2484176839521
.46117.436295851565
.47208.583294285575
.48469.000465047941




NO.624 '99 10/12Junko三角形の面積(5)

NO.619では、点Rの位置ベクトルを求めるのにベクトルの1次独立性を使いました。
「メネラウスの定理」というのがあって、これを使って求めることもできます。
今回は点Pでやります。
左図のように、点Mを通りCNに平行な直線MTをひきます。
BP:PM=BN:NT=BN:NA×(MC/AC)
t:1−t=2:1×(1/3)
これより、t=6/7と求まります。
従って、PM=(1/7)BMとなり、 以下はNO.619と同様です。

一般に三角形ABCの各辺BC、CA、ABをm:nに内分した場合を考えます。
先程と同様に、点Mを通りCNに平行な直線MTをひきます。
BP:PM=BN:NT=BN:NA×(MC/AC)
t:1−t=n:m×{m/(m+n)}
これより、t=(mn+n)/(m+mn+n)と求まります。
従って、PM={m/(m+mn+n)}BMとなります。

△ABCの面積をSとすると、
△ABL=△BCM=△CAN={m/(m+n)}S
対称性と先ほどの結果から、
△BLR=△CMP=△ANQ={m/(m+n)}・{m/(m+mn+n)}S
従って
△PQR=S−(△ABL+△BCM+△CAN)+(△BLR+△CMP+△ANQ)
=S−{m/(m+n)}S・3+{m/(m+n)}・{m/(m+mn+n)}S・3
={(m−n)/(m+mn+n)}S






NO.628 '99 10/20水の流れ三角形の面積(6)

三角形の面積の問題の答え(面積比の利用)
△ABCの面積を便宜上1とおく。
3本の線分で区切られた7個の部分の面積を、 三角形PQR=a,三角形ANQ=b,三角形BLR=c,三角形CMP=d, 四角形BRQN=e, 四角形CPRL=f,四角形AQPM=g とおく。
線分AL,BM,CNはそれぞれ対辺を1:2に内分しているので、
b+e+c=1/3,c+f+d=1/3,d+g+b=1/3  となる。
この3式を足して、 2(b+c+d)+e+f+g=1  となる。
7個の部分を全部足した面積は三角形ABCだから、 a+b+c+d+e+f+g=1 である。
このことより、上に式から引いて a=b+c+d …@となる。
また、図の対称性より、b=c=d と言える。
ここで、bの面積を求めます。
線分BQ引くと、AN:AB=1:3 より、 △ABQ=3△ANQ=3b となる。
次に、△ABQと△ACQを比べると、 底辺AQは共通で、高さの比は線分BLと線分CLの比に等しい。
よって、BL:CL=1:2 だから、面積比は △ABQ:△ACQ=1:2から、△ACQ=2△ABQ=6b である。
ところが、△ANQ+△ACQ=△ACN=1/3 即ち、b+6b=1/3 より  故に 、b=1/21 
全く、同様にして、b=c=d=1/21 を得る。
したがって、a=b+c+d=1/7
以上から、△PQR=(1/7)△ABC   …(答え)




 
戻る