裏 RjpWiki

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

算額(その121)

2023年02月02日 | Julia

算額(その121)

一関市博物館 > 和算に挑戦 > 令和2年度出題問題(2) [中級問題](中学・高校生向き)
岩手県一関市の伊吹神社に明治17年(1884)に奉納された算額より
https://www.city.ichinoseki.iwate.jp/museum/wasan/r2/normal.html

図のように大円,中円,小円が配置されている。大円の中心と右側(左側)の中円,小円の中心は一直線上にある。小円の直径が 2 寸のとき,大円の直径はいかほどか。

出題は円の直径であるが,小数点がつかないように2倍して半径を用いる。また,昨図のために必要な座標をすべて求める。

大円の,中円の半径を r3, r2 とする。右の小円の中心座標を (x, y) とする。図のように記号を定め,方程式を解く。

using SymPy

@syms x, y, r1, r2, r3;

eq1 = r2^2 + (r2 - 2)^2 - (2 + r2)^2
eq2 = (x - r2)^2 +(r2 - y)^2 - (r2 - 2)^2
eq3 = x^2 + (r3 - y)^2 - (r3 + 2)^2
eq4 = (r3 - r2)^2 + r2^2 - r3^2
eq5 = (r3 - r2) * (x - r2) - (r2 - y) * r2
res = solve([eq1, eq2, eq3, eq5], (x, y, r2, r3))

   2-element Vector{NTuple{4, Sym}}:
    (16/5, 22/5, 8, 2)
    (64/5, 22/5, 8, 14)

2 組目が適切な解である。
大円の半径が 14 で,元の単位では直径が 14 寸である

中円の直径が 8 寸,右の小円の中心座標が (64/5, 22/5) である。

using Plots
using Printf

function circle(ox, oy, r, color=:red; beginangle=0, endangle=360)
   θ = beginangle:0.1:endangle
   x = r.*cosd.(θ)
   y = r.*sind.(θ)
   plot!(ox .+ x, oy .+ y, color=color, linewidth=0.5)
end;

function point(x, y, string="", color=:green, position=:left, vertical=:top; mark=true)
   mark && scatter!([x], [y], color=color, markerstrokewidth=0)
   annotate!(x, y, text(string, 10, position, color, vertical))
end;

function segment(x1, y1, x2, y2, color=:black; linestyle=:solid, linewidth=0.5)
plot!([x1, x2], [y1, y2], color=color, linestyle=linestyle, linewidth=linewidth)
end;

function draw(more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (x, y, r2, r3) = res[2]
   println("(x, y, r2, r3) = $((x, y, r2, r3))")
   plot()
   circle(0, r3, r3, :green)
   circle(r2, r2, r2, :red)
   circle(-r2, r2, r2, :red)
   circle(x, y, 2, :magenta)
   circle(-x, y, 2, :magenta)
   circle(0, 2, 2, :blue)
   if more == true
       segment(0, r3, x, y, :black)
       point(0, 2, " 2", :blue)
       point(0, r3, "r3 ", :green, :right)
       point(r2, r2, "(r2,r2) ", :red, :right)
       point(x, y, "(x,y)", :red, :top)
       hline!([0], color=:black, lw=0.5)
       vline!([0], color=:black, lw=0.5)
   else
       plot!(showaxis=false)
   end
end;

   (x, y, r2, r3) = (64/5, 22/5, 8, 14)

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

算額(その120)

2023年02月02日 | Julia

算額(その120)

一関市博物館 > 和算に挑戦 > 令和3年度出題問題(2) [中級問題](中学・高校生向き
岩手県平泉町の中尊寺阿弥陀堂に弘化2年(1845)年に奉納された算額より
https://www.city.ichinoseki.iwate.jp/museum/wasan/r3/normal.html

図のように正方形の中に大円と半円が 1 個ずつ,小円が 3 個入っている。小円の直径が 3 寸のとき,大円の直径はいかほどか。

出題は円の直径であるが,小数点がつかないように2倍して半径を用いる。また,昨図のために必要な座標をすべて求める。

正方形の一辺の長さを 2a,小円の半径を r = 3,大円の半径を R とし,図のように記号を定め,方程式を解く。

include("julia-source.txt");

using SymPy

@syms a::positive, x::positive, r::positive, R::positive;

eq1 = x^2 + r^2 - (a - r)^2
eq2 = x^2 + (2a - R - r)^2 - (R + r)^2
eq3 = 2R - 2r - a;
res = solve([eq1, eq2, eq3], (a, x, R))

  1-element Vector{Tuple{Sym, Sym, Sym}}:
 (10*r/3, 2*sqrt(10)*r/3, 8*r/3)

小円の半径 r が 3 のとき,大円の半径は 8 である。もとの単位では,大円の径(直径)は 8 寸である。また,正方形の一辺の長さは 10 寸である。右にある小円の中心の x 座標は 2√10 である。

using Plots

function draw(more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
    r = 3
    (a, x, R) = (10*r/3, 2*sqrt(10)*r/3, 8*r/3)

    println((a, x, r, R))
    plot([a, a, -a, -a, a], [0, 2a, 2a, 0, 0], color=:black, lw=0.5)
    circle(0, 2a - R, R, :green)
    circle(0, 0, a, :red, beginangle=0, endangle=180)
    circle(0, a-r, r, :magenta)
    circle(x, r, r, :blue)
    circle(-x, r, r, :blue)
    if more == true
        point(0, 2a - R, "2a-R")
        point(0, a, "a")
        point(0, a-2r, "a-2r")
        point(0, a-r, "a-r", :magenta)
        point(x, r, "(x,r)", :blue)
        hline!([0], color=:black, lw=0.5)
        vline!([0], color=:black, lw=0.5)
    else
        plot!(showaxis=false)
    end
end;

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

算額(その119)

2023年02月02日 | Julia

算額(その119)

二 岩手県花巻市大田 清水寺 嘉永三年(1850)
山村善夫:現存 岩手の算額,昭和52年1月30日,熊谷印刷,盛岡市.
http://www.wasan.jp/yamamura/yamamura.html

一関市博物館 > 和算に挑戦 > 令和4年度出題問題(2) [中級問題](中学・高校生向き)
岩手県花巻市の清水寺に嘉永3年(1850)に奉納された算額より
https://www.city.ichinoseki.iwate.jp/museum/wasan/r4/normal.html

図のように外円の中に直角三角形,大円,中円,小円が入っている。中円,小円の直径をそれぞれ 2 寸,1 寸としたとき,大円の直径を求めよ。

出題は円の直径であるが,小数点がつかないように2倍して半径を用いる。また,昨図のため外円の半径 R も求める。

図のように記号を定め,方程式を解く。

eq1 だけで R=10 がわかる(R=2 は不適切解)。

using SymPy

@syms r, R

eq1 = (R-4)^2 + (R - 2)^2 - R^2
solve(eq1) |> println

   Sym[2, 10]

次に eq2 を解いて大円の半径 4 を得る。もとの単位では直径 4 寸である

eq2 = 2(R-4)*(R-2) - r*(3R - 6)
solve(eq2(R => 10)) |> println

   Sym[4]

using Plots
using Printf

function circle(ox, oy, r, color=:red; beginangle=0, endangle=360)
   θ = beginangle:0.1:endangle
   x = r.*cosd.(θ)
   y = r.*sind.(θ)
   plot!(ox .+ x, oy .+ y, color=color, linewidth=0.5)
end;

function point(x, y, string="", color=:green, position=:left, vertical=:top; mark=true)
   mark && scatter!([x], [y], color=color, markerstrokewidth=0)
   annotate!(x, y, text(string, 10, position, color, vertical))
end;

function segment(x1, y1, x2, y2, color=:black; linestyle=:solid, linewidth=0.5)
 plot!([x1, x2], [y1, y2], color=color, linestyle=linestyle, linewidth=linewidth)
end;

function draw(more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (r, R) = (4, 10)
   println((R, r))
   x = R - 2
   y = R - 4
   plot()
   circle(0, 0, R, :black)
   circle(-x-1, 0, 1)
   circle(0, -y-2, 2, :magenta)
   circle(-x + r, -y + r, r, :blue)
   plot!([-x, x, -x, -x], [y, -y, -y, y], color=:black, lw=0.5)
   if more == true
       point(-x, y, "A  ", :black, :right)
       point(x, -y, " B", :black)
       point(-x, -y, "C  ", :black, :right)
       point(1 - R, 0, "1-R", :red, :top)
       point(0, 2 - R, "2-R", :magenta)
       point(-x + r, -y + r, "(r-x,r-y)", :blue, :top)
       hline!([0], color=:black, lw=0.5)
       vline!([0], color=:black, lw=0.5)
   else
       plot!(showaxis=false)
   end
end;

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村