愛媛県松山市桜谷町 伊佐爾波神社 明治11年(1878)
愛媛和算研究会:愛媛の和算研究ー現代解法を通してー,明朗社,愛媛県砥部町,平成29年8月1日.
https://ehimewasan.com/wp-content/uploads/2024/12/e5bd925b7d9f489aff074333f26ce7ae.pdf
キーワード:円5個
#Julia #SymPy #算額 #和算 #数学
甲円,乙円,丙円に挟まれて丁円がそれぞれに外接している。甲円,乙円,丁円の直径がそれぞれ 27 寸,21 寸,9 寸のとき,丙円の直径はいかほどか。

求めるものが違うだけで「算額(その774)」と基本的に同じ問題である。
甲円の半径と中心座標を \(r_1,\ (0,\ 0)\)
乙円の半径と中心座標を \(r_2,\ (x_2,\ y_2)\)
丙円の半径と中心座標を \(r_3,\ (0, r_1 + 2r_4 + r_3)\)
丁円の半径と中心座標を \(r_4,\ (0,\ r_1 + r_4)\)
とおき,以下の連立方程式を解く。
include("julia-source.txt"); # julia-source.txt ソース
using SymPy
@syms r1::positive, r2::positive, x2::positive, y2::positive, r3::positive, r4::positive
eq1 = x2^2 + y2^2 - (r1 + r2)^2
eq2 = x2^2 + (r1 + 2r4 + r3 - y2)^2 - (r2 + r3)^2
eq3 = x2^2 + (r1 + r4 - y2)^2 - (r2 + r4)^2
res = solve([eq1, eq2, eq3], (r3, x2, y2))[1];
# r3: 丙円の半径
ans_r3 = res[1]
@show(ans_r3)
ans_r3 = r4^2*(r1 + r2 + r4)/(r1*r2 - r1*r4 - r4^2)
\(\displaystyle \frac{r_{4}^{2} \left(r_{1} + r_{2} + r_{4}\right)}{r_{1} r_{2} - r_{1} r_{4} - r_{4}^{2}}\)
ans_r3(r1 => 27//2, r2 => 21//2, r4 => 9//2)
\(\displaystyle \frac{19}{2}\)
# x2: 乙円の中心 x 座標
ans_x2 = res[2]
@show(ans_x2)
ans_x2 = 2*sqrt(r1)*sqrt(r2)*sqrt(r4)*sqrt(r1 + r2 + r4)/(r1 + r4)
\(\displaystyle \frac{2 \sqrt{r_{1}} \sqrt{r_{2}} \sqrt{r_{4}} \sqrt{r_{1} + r_{2} + r_{4}}}{r_{1} + r_{4}}\)
ans_x2(r1 => 27//2, r2 => 21//2, r4 => 9//2)
\(\displaystyle \frac{3 \sqrt{399}}{4}\)
# y2: 乙円の中心 y 座標
ans_y2 = res[3]
@show(ans_y2)
ans_y2 = (r1^2 + r1*r2 + r1*r4 - r2*r4)/(r1 + r4)
\(\displaystyle \frac{r_{1}^{2} + r_{1} r_{2} + r_{1} r_{4} - r_{2} r_{4}}{r_{1} + r_{4}}\)
ans_y2(r1 => 27//2, r2 => 21//2, r4 => 9//2)
\(\displaystyle \frac{75}{4}\)
甲円の直径が 27,乙円の直径が 21,丁円の直径が 9 のとき,丙円の直径 は 19 である。
その他のパラメータは以下のとおりである。
\(r_3 = 9.5,\ x_2 = 14.9812,\ y_2 = 18.75\)
描画関数プログラムのソースを見る
function draw(r1, r2, r4, more=false)
pyplot(size=(400, 400), grid=false, aspectratio=1, showaxis=false, label="", fontfamily="IPAMincho")
r3 = r4^2*(r1 + r2 + r4)/(r1*r2 - r1*r4 - r4^2)
x2 = 2*sqrt(r1)*sqrt(r2)*sqrt(r4)*sqrt(r1 + r2 + r4)/(r1 + r4)
y2 = (r1^2 + r1*r2 + r1*r4 - r2*r4)/(r1 + r4)
@printf("甲円の直径 = %g; 乙円の直径 = %g; 丁円の直径 = %g のとき,丙円の直径 = %g\n", 2r1, 2r2, 2r4, 2r3)
@printf("r3 = %g; x2 = %g; y2 = %g\n", r3, x2, y2)
plot()
circle(0, 0, r1)
circle2(x2, y2, r2, :magenta)
circle(0, r1 + 2r4 + r3, r3, :green)
circle(0, r1 + r4, r4, :blue)
if more
delta = (fontheight = (ylims()[2]- ylims()[1]) / 500 * 10 * 2) /3 # size[2] * fontsize * 2
hline!([0], color=:gray80, lw=0.5)
vline!([0], color=:gray80, lw=0.5)
point(0, 0, " 甲円:r1,(0, 0)", :magenta, :center, delta=-delta/2)
point(x2, y2, "乙円:r2,(x2,y2)", :red, :center, delta=-delta/2)
point(0, r1 + 2r4 + r3, "丙円:r3\n(0,r1+2r4+r3) ", :green, :center, delta=-delta)
point(0, r1 + r4, "丁円:r4\n(0,r1+r4)", :blue, :right, :vcenter, deltax=-6delta)
end
end;
draw(27/2, 21/2, 9/2, true)
甲円の直径 = 27; 乙円の直径 = 21; 丁円の直径 = 9 のとき,丙円の直径 = 19
r3 = 9.5; x2 = 14.9812; y2 = 18.75
以下のアイコンをクリックして応援してください