裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

算額(その1403) 改訂版

2025年03月06日 | Julia

算額(その1403) 改訂版

算額(その1403)は,依拠した図がでたらめなものであったので,改訂版を書いた。

三十二 一関市舞川 観福寺内地蔵堂後額 明治34年(1901)

山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.
http://www.wasan.jp/yamamura/yamamura.html

今有如図 03086
https://w.atwiki.jp/sangaku/pages/158.html

キーワード:円2個,等脚台形,斜線
#Julia, #SymPy, #算額, #和算, #数学

合同な直角三角形を4個組み合わせて等脚台形を作り,大円 1 個,小円 1 個を容れる。小円の直径が与えられたときに大円の直径を得る術を述べよ。

山村の図は正しいものではない。「今有如図」の図に従って解を求めると,術に一致する解が得られた。

直角三角形の直角を挟む 2 辺の短い方,長い方の長さをそれぞれ a, h
大円の半径と中心座標を r1, (2a - r1, r1)
小円の半径と中心座標を r2, (a + r2, h - r2)
とおき,以下の連立方程式を解く。

include("julia-source.txt");
# julia-source.txt ソース https://blog.goo.ne.jp/r-de-r/e/ad3a427b84bb416c4f5b73089ae813cf

using SymPy

@syms a::positive, h::positive,
      r1::positive, r2::positive
eq1 = dist2(0, 0, a, h, 2a - r1, r1, r1)
eq2 = dist2(3a, 0, 2a, h, a + r2, h - r2, r2)
eq3 = ((a + r2) - (2a - r1))^2 + (h - r2 - r1)^2 - (r1 + r2)^2
res = solve([eq1, eq2, eq3], (r1, a, h))[5]

    (-5*r2 + sqrt(41)*r2, -3*r2/2 + sqrt(41)*r2/2, r2*(3 + sqrt(41))/2)

大円の半径 r1 は,小円の半径 r2 の (√41 - 5) = 1.4031242374328485 倍である。
小円の直径が 1 寸のとき,大円の直径は 1.4031242374328485 寸である。

function draw(r2, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    (r1, a, h) = (-5*r2 + sqrt(41)*r2, -3*r2/2 + sqrt(41)*r2/2, r2*(3 + sqrt(41))/2)
    plot([0, 3a, 2a, a, 0], [0, 0, h, h, 0], color=:green, lw=0.5)
    plot!([a, a, 2a, 2a], [0, h, 0, h], color=:green, lw=0.5)
    circle(2a - r1, r1, r1)
    circle(a + r2, h - r2, r2, :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(2a - r1, r1, "大円:r1\n(2a-r1,r1)", :red, :center, delta=-delta, deltax=2delta)
        point(a + r2, h - r2, "小円:r2\n(a+r2,h-r2)", :blue, :center, delta=-delta)
        point(a, h, "(a,h)", :green, :center, :bottom, delta=delta)
        point(2a, h, "(2a,h)", :green, :center, :bottom, delta=delta)
        point(3a, 0, "3a", :green, :right, :bottom, delta=delta/2, deltax=-delta)
    end
end;

draw(1/2, true)


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 算額(その1647) | トップ | 算額(その1404)改訂版 »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

Julia」カテゴリの最新記事