0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

大人用です。半円に直角三角形「高校入試チャレンジ問題 赤い部分の面積は?」様を、計算はsympyで作図は手抜きのつもりでした。

0
Last updated at Posted at 2026-08-15

・勉強になりました。ありがとうございました。
 Right Triangle Altitude Theoremでした。
・三角関数でできなかったのは残念でした。
・加筆済み。割円のリンクと説明。

オリジナル

YUUU0123 様 (0:00〜4:45) いつもお世話になっております。
↓高校入試チャレンジ問題 赤い部分の面積は?
https://youtu.be/7oMmz_BsPZ4

いつものsympyで(オリジナル Youtbe様の方法を参考に)

ver0.1

・先生の丸写しです。図形の証明は省略です。
・eq1がRight Triangle Altitude Theoremです。Eq(y/6,x/y)に同じです。

# ver0.1
from sympy import *
var('x,y',real=True,positive=True)
eq1  =Eq(y**2     ,6*x )
eq2  =Eq(x**2+y**2,4**2)
sol  =solve([eq1,eq2],[x,y])   #;print(sol)
CD,DB=sol[0][0],sol[0][1]      #;print(CD,DB)
DOB  =DB**2*pi*60/360          #;print(DOB)
AOD  =DB*DB/2*1/2              #;print(AOD)
print("#",DOB+AOD)
# 3*sqrt(3) + 2*pi

いつもの sympyで

ver1.1

・中心A半径6の円が見えました。円と円の交点計算の方程式solveです。
 後半に、作図あります。
・私は、高校入試チャレンジ問題 様の「割円、弓形、円の一部の面積の対応」はバッチリです。
 いつでもどうぞ状態です。
 本ページ最後参照

# ver1.1
from sympy import *
var('r',real=True,positive=True)
def segment_area_chord(r, c):
    theta = 2 * asin(c / (2*r))
    return r**2 * (theta - sin(theta)) / 2
A,O,B,C=map(Point,[(-r,0),(0,0),(r,0),(r,4)])
D      =Circle(O,r).intersection(Circle(A,6))[1]         #;print(D)
C      =Line(B,B+Point(0,1)).intersection(Line(A,D))[0]  #;print(C)
r_sol  =solve(Eq(C.y,4),r)[0]                            #;print(rep)
rep    ={r:r_sol}                                        #;print(rep)
B,D    =B.subs(rep),D.subs(rep)
print("#",(Rational(1,2)*(2*r_sol)*D.y+segment_area_chord(r_sol,B.distance(D))).simplify())
# 3*sqrt(3) + 2*pi

ver1.2

・普通はコチラ。角度を使わない。線分の長さだけ。典型的なダブル三平方?トリプル?

# ver1.2
from sympy import *
var('r,DC',real=True,positive=True)
def segment_area_chord(r, c):
    theta = 2 * asin(c / (2*r))
    return r**2 * (theta - sin(theta)) / 2
AD,BC   =6,4
eq1     =Eq((2*r)**2+BC**2,(AD+DC) **2)
eq2     =Eq((2*r)**2-AD**2,BC**2-DC**2)   
sol     =solve([eq1,eq2],[r,DC])          #;print(sol)
r_sol,DC=sol[0][0],sol[0][1]              #;print(r_sol)                                  #;print(rep)
BD      =sqrt((eq2.lhs).subs({r:r_sol}))  #;print(BD)                                     #;print(rep)
print("#",(Rational(1,2)*2*r_sol*BC*AD/(AD+DC)+segment_area_chord(r_sol,BD)).simplify())
# 3*sqrt(3) + 2*pi

ver1.3

できませんでした。 何が何でも、三角関数で3元連立方程式です。
 AD と BC が離れていても、ABが共通で角Aもでした。ステキ。と思ったんですけどねー。
・Gemini先生へ。以下解がでません。

# # ver1.3
# from sympy import *
# var('r,DC,θ',real=True,positive=True)
# AD,BC=6,4
# eq1  =Eq(cos(θ),(2*r)/(AD+DC))
# eq2  =Eq(sin(θ), BC  /(AD+DC))   
# eq3  =Eq(tan(θ), BC  /(2*r)  )   
# sol  =solve([eq1,eq2,eq3],[r,DC,θ])  ;print(sol)
## Gemini先生へ。以下解がでません。

ver1.4

・面積は足さなくても、半円の面積から弓形の面積を引きました。

# ver1.4
from sympy import *
var('r',real=True,positive=True)
def segment_area_chord(r, c):
    theta = 2 * asin(c / (2*r))
    return r**2 * (theta - sin(theta)) / 2
AD     =6
A,O,B,C=map(Point,[(-r,0),(0,0),(r,0),(r,4)])
D      =Circle(O,r).intersection(Circle(A,AD))[1]         #;print(D)
C      =Line(B,B+Point(0,1)).intersection(Line(A,D))[0]  #;print(C)
r_sol  =solve(Eq(C.y,4),r)[0]
print("#",Rational(1,2)*pi*r_sol**2-segment_area_chord(r_sol,AD).simplify())
# 3*sqrt(3) + 2*pi

(続けて)Gemini先生へ

PNG図のみ出力して下さい。
(ソースコードの表示を省略)

・Geminiでできなかったので、ChatGPTでSVG図→PNG図変換です。
image.png

いつもの? sympyの実行環境 と 参考のおすすめです。

sympyのweb上での実行方法

SymPy Live Shellで。
ソースコードの解説は、私よりGemini先生へのソースコードの丸投げがおすすめです。質問の追加はいくらでも。
モーダル対応?「実行して」。「作図して」「問題文章の丸投げ」いい時代です。

(テンプレート)

いつもと違うおすすめです。

sympy のdoc

・いらないカモ。

ver0.1

ver1.1

ver1.2

ver1.3

ver1.4

Qiita内で

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?