Math Battle [ 0331: 青い三角形の面積 ]

[ 0331: 青い三角形の面積 ]


[ 南門疾矢君の出題 ]

Sort アルゴリズムの性能評価は楽しかったですね。
最後の BinaryTreeSort は湯会老人が C++ でやってくれましたし。

今回はやさしそうに見えて実はかなり難しい幾何学の問題。

下の図に示すように青い三角形 ABC を黒い外接円が囲んでいます。
各辺の中点から辺に垂直な線を引き、外接円にぶつかるまでの距離をはかります。

これらが 1, 2, 3 になるときの三角形 ABC の面積を求めてください。


[ 井伊莞爾君のつぶやき ]

まず補助線を引きました。

辺 BC の長さを a, 辺 CA の長さを b, 辺 AB の長さを c,
外接円の半径を r とします。

直角三角形におけるピタゴラスの定理から次の 3個の式がすぐ得られますね。

  • (a/2)^2 + (r - 3)^2 = r^2
  • (b/2)^2 + (r - 2)^2 = r^2
  • (c/2)^2 + (r - 1)^2 = r^2

変数 4個に対して、式が 3個。まだ足りませんね。困った...


[ 広世正憲君のつぶやき ]

余弦定理を使って 3個の中心角を求めて、全部の和が 2*π というのはどうかな?

acos((2*r^2 - a^2) / (2*r^2)) +
acos((2*r^2 - b^2) / (2*r^2)) +
acos((2*r^2 - c^2) / (2*r^2))
= 2*π

というわけ。


[ 大宙乗児君のつぶやき ]

上記 4個の連立方程式を Wolfram|Alpha に入力しましたが、
まともに解いてくれません。複雑すぎるのかな?

(a/2)^2+(r-3)^2=r^2;(b/2)^2+(r-2)^2=r^2;(c/2)^2+(r-1)^2=r^2;acos((2*r^2-a^2)/(2*r^2))+acos((2*r^2-b^2)/(2*r^2))+acos((2*r^2-c^2)/(2*r^2))=2*pi; solve for a,b,c,r


[ 湯会老人の回答 ]

多絵さんが解いた 0309 を思い出してください。

それぞれの辺の中点において次の式が成り立ちます。

  • 3*(2*r - 3) = (a/2)*(a/2)
  • 2*(2*r - 2) = (b/2)*(b/2)
  • 1*(2*r - 1) = (c/2)*(c/2)

これらをまず次のように暫定的に解きます。

  • a = 2*sqrt(6*r - 9)
  • b = 4*sqrt(r - 1)
  • c = 2*sqrt(2*r - 1)

a の結果を (a/2)^2 + (r - 3)^2 = r^2 に代入しますと:
(6*r - 9) + (r - 3)^2 = r^2
これは恒等式でしたね。莞爾君の式と本質的に同じです。

それでは違うアプローチをしましょう。

辺 BC に対する中心角の半分を θ とします。
cos(θ) = (r^2 + (r-3)^2 - a^2/4) / (2*r*(r-3))
r*cos(θ) = r - 3
すなわち
r*(r^2 + (r-3)^2 - a^2/4) / (2*r*(r-3)) = r - 3

これを解きますと:
a = 2*sqrt(6*r - 9)

同様なことを b, c に対しておこないます。

b = 4*sqrt(r - 1)
c = 2*sqrt(2*r - 1)

0309 方式の結果と全く同じですね。

しかたがない。
2*r = a / sin(A) を使いましょう。

[ 以下、前回の単純計算ミスを訂正 (汗) ]

cos(A) = (b^2 + c^2 - a^2) / (2*b*c)

(b^2 + c^2 - a^2)
= 16*(r-1) + 4*(2*r-1) - 4*(6*r-9)
= 16

2*b*c
= 2*(4*sqrt(r-1))*(2*sqrt(2*r-1))
= 16*sqrt((r-1)*(2*r-1))

したがって:
cos(A) = 1 / sqrt((r-1)*(2*r-1)) -- ①

sin(A) = sqrt(1 - cos(A)^2)
= sqrt(1 - 1/((r-1)*(2*r-1)))
= sqrt((2*r^2-3*r)/(2*r^2-3*r+1))

2*r = a/sin(A)
2*r = 2*sqrt(6*r-9)/sqrt((2*r^2-3*r)/(2*r^2-3*r+1))
r = sqrt(6*r-9)/sqrt((2*r^2-3*r)/(2*r^2-3*r+1))
r*sqrt((2*r^2-3*r)/(2*r^2-3*r+1)) = sqrt(6*r-9)

両辺を 2 乗します。
(2*r^4-3*r^3)/(2*r^2-3*r+1) = 6*r-9
2*r^4-3*r^3 = (2*r^2-3*r+1)*(6*r-9)

整理しますと:
2*r^4 - 15*r^3 + 36*r^2 - 33*r + 9 = 0
(2*r-3)*(r^3 - 6*r^2 + 9*r - 3) = 0

r = 1.5 (2*r-3 = 0) は ① で cos(A) = 1 にしますから除外。
いずれにせよ、あきらかに r > 3 になる必要がありますから。

r^3 - 6*r^2 + 9*r - 3 = 0
の解の中で r > 3 という条件を満たすものを求めます。


[ 西尾三奈さんのコメント ]

今日 (2020/09/26) 読みましたが、とんでもない計算ですね。

補助線を引いて直角三角形を 3種類見つけピタゴラスの定理の式を立てることと
0309 方式を辺の中点 3箇所に使うことは
結局同じことだったわけですね。

そこで正弦定理 2*r = a / sin(A) が救世主として
登場するストーリー展開になりました。

この値が 2*r (外接円の直径) であることを使えば a, b, c, r の式ができます
。 a/sin(A) = b/sin(B) = c/sin(C) だと恒等式になる気がします。

それにしても、夫はどうやってもっともらしい出題図がプロットできたのでしょうか?
各辺の中点と円周との距離 1, 2, 3 は確かにそれらしく見えます。

r だけの 3 次方程式は Wolfram|Alpha に解かせればいいでしょう。
r から a, b, c が求まりますから、
あとは ヘロンの公式 で面積が計算できます。


[ 湯会老人のコメント ]

三奈さん、私の苦闘をわかってくれましたね。

最後の三角形 ABC の面積計算ですが、3個の二等辺三角形の面積の和
と考えればいいです。ヘロンの公式を使う必要はありません。

Area(ABC) = Area(OBC) + Area(OCA) + Area(OAB)
= a*(r-3)/2 + b*(r-2)/2 + c*(r-1)/2

というわけです。
r の値さえ充分正確に求めることができれば、めでたしめでたし。


[ 湯会老人の Final Answer ]

r3 - 6*r2 + 9*r - 3 = 0

これをプログラムを書いて絞り込むことによって解きました。
グラフは以下のとおりです。

r の解は 0.408, 1.653, 3.879 の 3 個ですが、
3 より大きい解は 3.879 だけです。
この値をもとに a, b, c および三角形 ABC の面積を求めました。

* a ≈ 7.556
* b ≈ 6.787
* c ≈ 5.199
* Area(ABC) ≈ 17.181

どなたか、ヘロンの公式を使って面積の検算をしてみてください。


[ 南門疾矢君のコメント ]

湯会老人、正解です。!!!

僕の場合は:
a, b, c を r の式にした上で、
プログラムで r の値を可能性のある範囲で細かく変動させ条件を満たす r を探す
という方法をとりました。インチキですかね。


[ 三方万理先生 (algorithm teacher) のコメント ]

凄い、湯会老人。私にも解けませんでした。

4 の式 (2*r = a / sin(A)) について補足します。

三角形 OBC に余弦定理を使います。
∠OBC は円周角 A に対応する中心角ですから ∠OBC = 2*A

cos(2*A) = (2*r2 - a2) / (2*r2)
cos(A)2 - sin(A)2 = 1 - a2) / (2*r2)
1 - 2*sin(A)2 = 1 - a2 / (2*r2)
2*sin(A)2 = a2 / (2*r2)
4*r2 = a2 / sin(A)2
2*r = a / sin(A)

余弦定理はピタゴラスの定理の一般化ですが、
こういうところにも威力を発揮します。


[ 西尾三奈さんのコメント ]

降参です。数学科卒の私にも解けませんでした。
だれかさんと遊んでばかりいたからかな。


[ 大宙麗亜ちゃんのコメント ]

三方万理先生、2*r = a/sin(A) の幾何学的証明法を見つけました。

C から円の中心を通る直線を引き、円周と交わる点を D とします。
CD は直径ですから 2*r
∠DBC は直径の円周角ですから 90°。
三角形 DBC は CD (= 2*r) を斜辺とする直角三角形になります。
∠BDC は A と同じく BC の円周角ですから ∠BDC = A

したがって:
2*r*sin(A) = a
2*r = a/sin(A)

というわけです。


[ 仲島克郎さんのコメント ]

なるほど。レイアちゃんも鋭いですね。
気がつきませんでした。
円の中心を貫き、角度が同じになる円周角を使うとは !!!

[ 0341: 次の記事 ]

[ 0340: 素数日プログラム ]

[ 0339: emirp 探し ]

[ 0338: 0331の解きなおし ]

[ 0337: ubuntu 20.04 へ upgrade ]

[ 0336: πの近似計算 ]

[ 0335: 0253 の振り返り ]

[ 0334: Data Camp Python ]

[ 0333: 原始ピタゴラス数をさがす ]

[ 0332: LaTex の使いかた ]

[ 0331: 青い三角形の面積 ]

[ 0330: 長方形の幅 ]

[ 0329: 三角関数の関数の最大最小 ]

[ 0328: IMO 過去問 9 ]

[ 0327: 1+2+3+...+無限 ]

[ 0326: 2分木 sort も含めた性能比較 ]

[ 0325: 最悪ケースでの sort 比較 ]

[ 0324: 0307の回答 ④ ]

[ 0323: 0307の回答 ③ ]

[ 0322: 0307の回答 ② ]

[ 0321: 0307の回答 ① ]

[ 0320: 前の記事 ]

[ トップページへ ]