裏 RjpWiki

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

算額(その1371)

2024年10月24日 | Julia

算額(その1371)

六十二 群馬県高崎市石原町 清水寺 天保10年(1837)
群馬県和算研究会:群馬の算額,上武印刷株式会社,高崎市,1987年3月31日.
キーワード:三角形,二等辺三角形3個
#Julia, #SymPy, #算額, #和算

三角形の中に斜線を 2 本引き,3 個の二等辺三角形を作る。それぞれの二等辺三角形の斜辺(×をつけた)の長さは小斜に等しい。中斜,小斜が与えられたとき,大斜を求める術を述べよ。

3 個の二等辺三角形の頂点の座標を,(x1, y1), (x2, y2), (x3, 0), (x4, 0)
中斜,小斜の長さを 「中斜」,「小斜」
とおき,以下の連立方程式を解く。
大斜 = x4 である。

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

using SymPy
@syms x1::positive, y1::positive,
     x2::positive, y2::positive,
     x3::positive, x4::positive,
     小斜::positive, 中斜::positive;
eq1 = x2^2 + y2^2 - 小斜^2
eq2 = (x3 - x2)^2+y2^2 - 小斜^2
eq3 = (x1 - x3)^2 + y1^2 - 小斜^2
eq3 = (x4 - x1)^2 + y1^2 - 小斜^2
eq4 = 小斜 + sqrt((x1 - x2)^2 + (y1 - y2)^2) - 中斜
eq5 = (x3 + x4)/2 - x1
eq6 = y2/x2 - y1/x1
res = solve([eq1, eq2, eq3, eq4, eq5, eq6], (x1, y1, x2, y2, x3, x4))[2]  # 2 of 2

   (中斜*(中斜^3 - 3*中斜^2*小斜 + 3*中斜*小斜^2 - 小斜^3)*sqrt(中斜^3 - 中斜^2*小斜 - 中斜*小斜^2 + 小斜^3)/(2*sqrt(小斜)*(中斜^4 - 4*中斜^3*小斜 + 6*中斜^2*小斜^2 - 4*中斜*小斜^3 + 小斜^4)), 中斜*sqrt(-中斜 + 3*小斜)/(2*sqrt(小斜)), sqrt(小斜)*(中斜^3 - 3*中斜^2*小斜 + 3*中斜*小斜^2 - 小斜^3)*sqrt(中斜^3 - 中斜^2*小斜 - 中斜*小斜^2 + 小斜^3)/(2*(中斜^4 - 4*中斜^3*小斜 + 6*中斜^2*小斜^2 - 4*中斜*小斜^3 + 小斜^4)), sqrt(小斜)*sqrt(-中斜 + 3*小斜)/2, sqrt(小斜)*(中斜^3 - 3*中斜^2*小斜 + 3*中斜*小斜^2 - 小斜^3)*sqrt(中斜^3 - 中斜^2*小斜 - 中斜*小斜^2 + 小斜^3)/(中斜^4 - 4*中斜^3*小斜 + 6*中斜^2*小斜^2 - 4*中斜*小斜^3 + 小斜^4), sqrt(中斜^3 - 中斜^2*小斜 - 中斜*小斜^2 + 小斜^3)/sqrt(小斜))

res[6] |> factor |> println

   sqrt(中斜 + 小斜)*Abs(中斜 - 小斜)/sqrt(小斜)

大斜(x4)は,「中斜と小斜の和を小斜で割ったもの平方根に中斜と小斜の差を掛ける」と得られる。

たとえば,中斜 = 1.5,小斜 = 0.6 のとき,大斜は 1.5459002853702086 である。

中斜 = 1.5
小斜 = 0.65
sqrt((中斜 + 小斜)/小斜)*(中斜 - 小斜)

   1.5459002853702086

function draw(中斜, 小斜, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (x1, y1, x2, y2, x3, x4) = (中斜*(中斜^3 - 3*中斜^2*小斜 + 3*中斜*小斜^2 - 小斜^3)*sqrt(中斜^3 - 中斜^2*小斜 - 中斜*小斜^2 + 小斜^3)/(2*sqrt(小斜)*(中斜^4 - 4*中斜^3*小斜 + 6*中斜^2*小斜^2 - 4*中斜*小斜^3 + 小斜^4)), 中斜*sqrt(-中斜 + 3*小斜)/(2*sqrt(小斜)), sqrt(小斜)*(中斜^3 - 3*中斜^2*小斜 + 3*中斜*小斜^2 - 小斜^3)*sqrt(中斜^3 - 中斜^2*小斜 - 中斜*小斜^2 + 小斜^3)/(2*(中斜^4 - 4*中斜^3*小斜 + 6*中斜^2*小斜^2 - 4*中斜*小斜^3 + 小斜^4)), sqrt(小斜)*sqrt(-中斜 + 3*小斜)/2, sqrt(小斜)*(中斜^3 - 3*中斜^2*小斜 + 3*中斜*小斜^2 - 小斜^3)*sqrt(中斜^3 - 中斜^2*小斜 - 中斜*小斜^2 + 小斜^3)/(中斜^4 - 4*中斜^3*小斜 + 6*中斜^2*小斜^2 - 4*中斜*小斜^3 + 小斜^4), sqrt(中斜^3 - 中斜^2*小斜 - 中斜*小斜^2 + 小斜^3)/sqrt(小斜))
   @printf("中斜が %g,小斜が %g のとき,大斜は %g である。\n", 中斜, 小斜, x4)
   @printf("x1 = %g;  y1 = %g;  x2 = %g;  y2 = %g;  x3 = %g;  x4 = %g\n", x1, y1, x2, y2, x3, x4)

   plot([0, x4, x1, 0], [0, 0, y1, 0], color=:magenta, lw=0.5)
   segment(x2, y2, x3, 0)
   segment(x3, 0, x1, y1)
   if more == true
       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(x2, y2, "(x2,y2) ", :black, :right, :bottom, delta=delta)
       point(x1, y1, "(x1,y1) ", :black, :right, :bottom, delta=delta)
       point(0, 0, "0", :black, :center, delta=-3delta)
       point(x3, 0, "x3", :black, :center, delta=-3delta)
       point(x4, 0, "x4", :black, :center, delta=-3delta)
       dimension_line(x1 + 2.5delta, y1, x4 + 2.5delta, 0, "小斜", :green, :left, deltax=2delta)
       dimension_line(-delta/2, 2delta, x1 - delta/2, y1 + 2delta, "中斜", :blue, :center, delta=6delta)
       dimension_line(0, -2delta, x4, -2delta, "大斜", :red, :center, delta=-4delta)
       point(x2/2, y2/2, "×", :black, :center, :vcenter, mark=false)
       point((x2+x3)/2, y2/2, "×", :black, :center, :vcenter, mark=false)
       point((x1+x3)/2, y1/2, "×", :black, :center, :vcenter, mark=false)
       point((x1+x4)/2, y1/2, "×", :black, :center, :vcenter, mark=false)
       segment(0, 0, x2, y2, :black)
       plot!(xlims=(-5delta, x4 + 5delta), ylims=(-10delta, y1 + 8delta))
   end
end;

draw(1.5, 0.65, true)

 


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

コメントを投稿

Julia」カテゴリの最新記事