裏 RjpWiki

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

算額(その1386)

2024年11月01日 | Julia

算額(その1386)

五九 北埼玉郡南河原村南河原 観福寺 万延二年(1861)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:計算
#Julia, #SymPy, #算額, #和算

甲, 乙, 丙の正方形がある。面積の合計は 1133 である。一辺の長さの差は 5 である(大きさは,甲,乙,丙の順)。
それぞれの一辺の長さを求めよ。

甲, 乙, 丙の一辺の長さをそのまま変数名として,以下の連立方程式を解く。

using SymPy

@syms 甲::positive, 乙::positive, 丙::positive

eq1 = (甲 - 乙) - 5
eq2 = (乙 - 丙) - 5
eq2 = 甲^2 + 乙^2 + 丙^2 - 1133
eq3 = sum([甲, 乙, 丙].^2) - 1133
solve([eq1, eq2, eq3], (甲, 乙, 丙))[1]

   (24, 19, 14)

甲 = 24, 乙 = 19, 丙 = 14 である。

検算

sum([24, 19, 14].^2)

   1133

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

算額(その1385)

2024年11月01日 | Julia

算額(その1385)

四五 秩父郡吉田町大字久長字頼母沢 野栗神社 安政3年(1856)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:計算
#Julia, #SymPy, #算額, #和算

甲, 乙, 丙, 丁, 戊, 己の立方体がある。体積の合計は 33291 である。
乙の体積は甲の体積の 7/9
丙の体積は乙の体積の 5/7
丁の体積は丙の体積の 3/5
戊の体積は丁の体積の 2/3
己の体積は戊の体積の 1/2
のとき,それぞれの一辺の長さを求めよ。

甲, 乙, 丙, 丁, 戊, 己の一辺の長さをそのまま変数名として,以下の連立方程式を解く。

using SymPy

@syms 甲::positive, 乙::positive, 丙::positive,
     丁::positive, 戊::positive, 己::positive

eq1 = 乙 - 7//9 * 甲
eq2 = 丙 - 5//7 * 乙
eq3 = 丁 - 3//5 * 丙
eq4 = 戊 - 2//3 * 丁
eq5 = 己 - 1//2 * 戊
eq6 = 甲^3 + 乙^3 + 丙^3 + 丁^3 + 戊^3 + 己^3 - 33291
eq6 = sum([甲, 乙, 丙, 丁, 戊, 己].^3) - 33291
solve([eq1, eq2, eq3, eq4, eq5, eq6], (甲, 乙, 丙, 丁, 戊, 己))[1]

   (27, 21, 15, 9, 6, 3)

甲 = 27, 乙 = 21, 丙 = 15, 丁 = 9, 戊 = 6, 己 = 3 である。

検算

sum([27, 21, 15, 9, 6, 3].^3)

   33291

 

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

算額(その1384)

2024年11月01日 | Julia

算額(その1384)

一八 大里郡岡部村岡 稲荷社 文化14年(1817)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:円9個,外円,弦2本
#Julia, #SymPy, #算額, #和算

外円の中に 2 本の弦を引き,甲円 1 個,乙円 1 個,丙円 6 個を容れる。甲円,乙円の直径が 22 寸,11 寸のとき,丙円の直径はいかほどか。

外円の半径と中心座標を R, (0, 0)
甲円の半径と中心座標を r1, (0, r1 - R)
乙円の半径と中心座標を r2, (0, R - r2)
丙円の半径と中心座標を r3, (x31, y31), (x32, y32), (x33, y33)
とおき,以下の連立方程式を解く。

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

using SymPy

@syms R::positive, x01::positive, x02::positive,
     r1::positive, r2::positive, r3::positive,
     x31::positive, y31::positive,
     x32::positive, y32::positive,
     x33::positive, y33::positive;

R = r1 + r2
eq1 = x31^2 + y31^2 - (R - r3)^2
eq2 = x32^2 + y32^2 - (R - r3)^2
eq3 = x33^2 + y33^2 - (R - r3)^2
eq4 = (x31 - x32)^2 + (y31 - y32)^2 - 4r3^2
eq5 = (x31 - x33)^2 + (y31 - y33)^2 - 4r3^2
eq6 = dist(x01, sqrt(R^2 - x01^2), x02, -sqrt(R^2 - x02^2), 0, r1 - R) - r1^2
eq7 = dist(x01, sqrt(R^2 - x01^2), x02, -sqrt(R^2 - x02^2), 0, R - r2) - r2^2
eq8 = dist(x01, sqrt(R^2 - x01^2), x02, -sqrt(R^2 - x02^2), x32, y32) - r3^2
eq9 = dist(x01, sqrt(R^2 - x01^2), x02, -sqrt(R^2 - x02^2), x33, y33) - r3^2;
# res = solve([eq1, eq2, eq3, eq4, eq5, eq6, eq7, eq8, eq9], (x01, x02, r3, x31, y31, x32, y32, x33, y33))

using NLsolve

function nls(func, params...; ini = [0.0])
   if typeof(ini) <: Number
       r = nlsolve((vout, vin) -> vout[1] = func(vin[1], params..., [ini]), ftol=big"1e-40")
       v = r.zero[1]
   else
       r = nlsolve((vout, vin)->vout .= func(vin, params...), ini, ftol=big"1e-40")
       v = r.zero
   end
   return Float64.(v), r.f_converged
end;

function H(u)
   (x01, x02, r3, x31, y31, x32, y32, x33, y33) = u
   return [
       x31^2 + y31^2 - (R - r3)^2,
       x32^2 + y32^2 - (R - r3)^2,
       x33^2 + y33^2 - (R - r3)^2,
       (x31 - x32)^2 + (y31 - y32)^2 - 4r3^2,
       (x31 - x33)^2 + (y31 - y33)^2 - 4r3^2,
       dist(x01, sqrt(R^2 - x01^2), x02, -sqrt(R^2 - x02^2), 0, r1 - R) - r1^2,
       dist(x01, sqrt(R^2 - x01^2), x02, -sqrt(R^2 - x02^2), 0, R - r2) - r2^2,
       dist(x01, sqrt(R^2 - x01^2), x02, -sqrt(R^2 - x02^2), x32, y32) - r3^2,
       dist(x01, sqrt(R^2 - x01^2), x02, -sqrt(R^2 - x02^2), x33, y33) - r3^2
   ]
end;
(r1, r2) = (22, 11) ./ 2
R = r1 + r2

iniv = BigFloat[4, 13, 3.1, 13, 4, 13, -1.5, 10, 10]
res = nls(H, ini=iniv)

   ([4.069279408445208, 13.215553020559287, 3.0, 12.727922061357855, 4.5, 13.420835425335575, -1.459854953773714, 9.520851253161299, 9.570966064884825], true)

甲円,乙円の直径が 22 寸, 11 寸のとき,丙円の直径は 6 寸である。

全てのパラメータは以下のとおりである。
   R = 16.5;  x01 = 4.06928;  x02 = 13.2156;  r1 = 11;  r2 = 5.5;  r3 = 3;  x31 = 12.7279;  y31 = 4.5;  x32 = 13.4208;  y32 = -1.45985;  x33 = 9.52085;  y33 = 9.57097

function draw(r1, r2, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
  (x01, x02, r3, x31, y31, x32, y32, x33, y33) = res[1]
   R = r1 + r2
   @printf("甲円,乙円の直径が %g, %g のとき,丙円の直径は %g である。\n", 2r1, 2r2, 2r3)
   @printf("R = %g;  x01 = %g;  x02 = %g;  r1 = %g;  r2 = %g;  r3 = %g;  x31 = %g;  y31 = %g;  x32 = %g;  y32 = %g;  x33 = %g;  y33 = %g\n",
       R, x01, x02, r1, r2, r3, x31, y31, x32, y32, x33, y33)
   plot()
   circle(0, 0, R, :magenta)
   circle(0, r1 - R, r1, :blue)
   circle(0, R - r2, r2, :green)
   circle2(x31, y31, r3)
   circle2(x32, y32, r3)
   circle2(x33, y33, r3)
   segment(x01, sqrt(R^2 - x01^2), x02, -sqrt(R^2 - x02^2))
   segment(-x01, sqrt(R^2 - x01^2), -x02, -sqrt(R^2 - x02^2))
   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(0, R - r2, "乙円:r2,(0,R-r2)", :black, :center, :bottom, delta=delta)
       point(0, r1 - R, "甲円:r1,(0,r1-R)", :blue, :center, delta=-delta)
       point(0, R, "R", :green, :center, :bottom, delta=delta)
       point(x01, sqrt(R^2 - x01^2), "(x01,y01)", :black, :left, :bottom, delta=delta)
       point(x02, -sqrt(R^2 - x02^2), "(x02,y02)", :black, :left, delta=-delta, deltax=-delta)
       point(x31, y31, "丙円:r3\n(x31,y31)", :red, :center, :bottom, delta=delta/2)
       point(x32, y32, "丙円:r3\n(x32,y32)", :red, :center, :bottom, delta=delta/2)
       point(x33, y33, "丙円:r3\n(x33,y33)", :red, :center, :bottom, delta=delta/2)
   end
end;

draw(22/2, 11/2, true)

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

算額(その1383)

2024年11月01日 | Julia

算額(その1383)

一八 大里郡岡部村岡 稲荷社 文化14年(1817)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:円12,外円,弦
#Julia, #SymPy, #算額, #和算

外円の中に水平な弦を引き,甲円 1 個,乙円 4 個,丙円 2 個,丁円 1 個,戊円 2 個,乙円,丁円,戊円を内包する無名円 1 個を容れる。乙円,丁円の直径が 2 寸,1.6 寸のとき,甲円の直径はいかほどか。

外円の半径と中心座標を R, (0, 0)
甲円の半径と中心座標を r1, (0, R - r1)
乙円の半径と中心座標を r2, (r2, y + r2), (0, y - r2), (0, r2 - R)
丙円の半径と中心座標を r3, (x3, y - r3)
丁円の半径と中心座標を r4, (0, 2r2 + r4 - R)
戊円の半径と中心座標を r5, (x5, y5)
無名円の半径と中心座標を r2 + r4, (0, r2 + r4 - R)
とおき,以下の連立方程式を解く。

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

using SymPy

@syms R::positive, r1::positive, r2::positive,
     r3::positive, x3::positive, r4::positive,
     r5::positive, x5::positive, y5::negative;
eq1 = r2^2 + (2R - r1 - 5r2 - 2r4)^2 - (r1 + r2)^2
eq2 = x3^2 + (r3 - r2)^2 - (r2 + r3)^2
eq3 = x3^2 + (4r2 + 2r4 - R - r3)^2 - (R - r3)^2
eq4 = x3^2 + (3r2 + r4 - r3)^2 - (r2 + r4 + r3)^2
eq5 = x5^2 + (y5 - r2 + R)^2 - (r5 + r2)^2
eq6 = x5^2 + (2r2 + r4 - R - y5)^2 - (r4 + r5)^2
eq7 = x5^2 + (y5 - r2 - r4 + R)^2 - (r2 + r4 - r5)^2
res = solve([eq1, eq2, eq3, eq4, eq5, eq6, eq7],
   (R, r1, r3, x3, r5, x5, y5))[1]

   ((r2 + r4)^2/r4, (2*r2 - r4)^2/(4*r4), r2*(2*r2 + r4)/(r2 + r4), 2*r2*sqrt(2*r2 + r4)/sqrt(r2 + r4), r2*r4*(r2 + r4)/(r2^2 + r2*r4 + r4^2), 2*r2*r4*(r2 + r4)/(r2^2 + r2*r4 + r4^2), -(r2 + r4)*(r2^3 + r2*r4^2 + r4^3)/(r4*(r2^2 + r2*r4 + r4^2)))

甲円の直径は (2r2 - r4)^2/(2r4) である。
乙円,丁円の直径が 2 寸,1.6 寸のとき,甲円の直径は 0.9 寸である。

2res[2] |> println
2res[2](r2 => 2//2, r4 => 16//20) |> println

   (2*r2 - r4)^2/(2*r4)
   9/10

全てのパラメータは以下のとおりである。

   r2 = 1;  r4 = 0.8;  y = 1.55;  R = 4.05;  r1 = 0.45;  r3 = 1.55556;  x3 = 2.49444;  r5 = 0.590164;  x5 = 1.18033;  y5 = -1.98443

function draw(r2, r4, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   # (R, r1, r3, x3) = ((r2 + r4)^2/r4, (2*r2 - r4)^2/(4*r4), r2*(2*r2 + r4)/(r2 + r4), 2*r2*sqrt(2*r2 + r4)/sqrt(r2 + r4))
   (R, r1, r3, x3, r5, x5, y5) = 
       ((r2 + r4)^2/r4, (2*r2 - r4)^2/(4*r4), r2*(2*r2 + r4)/(r2 + r4), 2*r2*sqrt(2*r2 + r4)/sqrt(r2 + r4), r2*r4*(r2 + r4)/(r2^2 + r2*r4 + r4^2), 2*r2*r4*(r2 + r4)/(r2^2 + r2*r4 + r4^2), -(r2 + r4)*(r2^3 + r2*r4^2 + r4^3)/(r4*(r2^2 + r2*r4 + r4^2)))
   y = 4r2 + 2r4 - R
   x = sqrt(R^2 - y^2)
   @printf("乙円,丁円の直径が %g, %g のとき,甲円の直径は %g である。\n", 2r2, 2r4, 2r1)
   @printf("r2 = %g;  r4 = %g;  y = %g;  R = %g;  r1 = %g;  r3 = %g;  x3 = %g;  r5 = %g;  x5 = %g;  y5 = %g\n",
       r2, r4, y, R, r1, r3, x3, r5, x5, y5)
   plot()
   circle(0, 0, R, :green)
   circle(0, R - r1, r1)
   circle2(r2, y + r2, r2, :blue)
   circle(0, y - r2, r2, :blue)
   circle(0, r2 + r4 - R, r2 + r4, :magenta)
   circle(0, r2 - R, r2, :blue)
   circle2(x3, y - r3, r3, :tomato)
   circle(0, 2r2 + r4 - R, r4, :orange)
   circle2(x5, y5, r5, :brown)
   segment(-x, y, x, y, :black)
   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(0, R - r1, "甲円:r1,(0,R-r1)", :black, :center, :bottom, delta=delta)
       point(r2, y + r2, "乙円:r2\n(r2,y+r2)", :blue, :center, delta=-delta)
       point(0, y, "y", :black, :center, :bottom, delta=delta)
       point(0, y - r2, "乙円:r2\n(0,y-r2)", :blue, :center, delta=-delta)
       point(x3, y - r3, "丙円:r3,(x3,y-r3)", :tomato, :center, delta=-delta)
       point(0, r2 + r4 - R, " r2+r4-R", :magenta, :center, delta=-delta)
       point(0, 2r2 + r4 - R, "丁円:r4\n(0,2r2+r4-R)", :orange, :center, :bottom, delta=delta)
       point(0, r2 - R, " r2-R", :blue, :center, delta=-delta)
       point(x5, y5, " 戊円:r5,(x5,y5)", :brown, :left, :vcenter)
       point(0, R, "R", :green, :center, :bottom, delta=delta)
   end
end;

draw(2/2, 1.6/2, true)

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

Mac: R のデータセットを使いたい

2024年11月01日 | Julia

Mac: R のデータセットを使いたい

Windows 版では問題なく動いているのだが,macOS 版では使えない。

解決法

~/.julia/packages/TimeZones/@@@@@/src/types/timezone.jl
の,41行目の TimeZone から,何もせずに直帰する。
'@@@@@' はバージョンにより異なるディレクトリになるので,その都度調整が必要。

function TimeZone(str::AbstractString, mask::Class=Class(:DEFAULT))
    return ##### この一行を加える
    tz, class = get(_TZ_CACHE, str) do
        :

以下ができるか確認

using RDatasets
iris = dataset("datasets", "iris");
mtcars = dataset("datasets", "mtcars");

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

算額(その1382)

2024年11月01日 | Julia

算額(その1382)

一七 大里郡岡部村岡 稲荷社 文化13年(1816)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:円1個,直角三角形,菱形2個
#Julia, #SymPy, #算額, #和算

直角三角形の中に,菱形を 2 個容れる。また,菱形の交差部分に円を容れる。直角三角形の底辺(股)と高さ(鈎)が 4 寸と 3 寸のとき,円の直径はいかほどか。

鈎,股の 辺上にある菱形の頂点座標を (0, y1), (0, y2), (x1, 0), (x2, 0) とおき,以下の連立方程式を解く。

求める円は 直角三角形 (0, 0), (0, y1), (x1, 0) に内接する円と合同なので,その直径は x1 + y1 - sqrt(x1^2 + y1^2) である。

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

using SymPy

@syms 鈎::positive, 股::positive, x1::positive, y1::positive,
     x2::positive, y2::positive

eq1 = 鈎 - y1 - sqrt(x1^2 + y1^2)
eq2 = y1/x1 - 鈎/股
eq3 = 股 - x2 - sqrt(x2^2 + y2^2)
eq4 = y2/x2 - 鈎/股
res = solve([eq1, eq2, eq3, eq4], (x1, y1, x2, y2))[1]

   (股*鈎/(鈎 + sqrt(股^2 + 鈎^2)), 鈎^2/(鈎 + sqrt(股^2 + 鈎^2)), 股^2/(股 + sqrt(股^2 + 鈎^2)), 股*鈎/(股 + sqrt(股^2 + 鈎^2)))

鈎,股が 3 寸,4 寸のとき,円の直径は 3/4 = 0.75 寸である。

r = (res[1] + res[2] - sqrt(res[1]^2 + res[2]^2))/2 |> simplify;
r |> println
r(鈎 =>3, 股 => 4) |> println
r(鈎 =>3, 股 => 4) |> float |> println

   鈎*(股 + 鈎 - sqrt(股^2 + 鈎^2))/(2*(鈎 + sqrt(股^2 + 鈎^2)))
   3/8
   0.375

function draw(鈎, 股, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   (x1, y1, x2, y2) = (股*鈎/(鈎 + sqrt(股^2 + 鈎^2)), 鈎^2/(鈎 + sqrt(股^2 + 鈎^2)), 股^2/(股 + sqrt(股^2 + 鈎^2)), 股*鈎/(股 + sqrt(股^2 + 鈎^2)))
   r = (x1 + y1 - sqrt(x1^2 + y1^2))/2
   @printf("鈎が %g,股が %g のとき,円の直径は %g である。\n", 鈎, 股, 2r)
   @printf("鈎 = %g;  股 = %g;  x1 = %g;  y1 = %g;  x2 = %g;  y2 = %g\n", 鈎, 股, x1, y1, x2, y2)
   plot([0, 股, 0, 0], [0, 0, 鈎, 0], color=:black, lw=0.5)
   circle(x1 - r, y2 - r, r)
   #segment(0, y1, x1, 0, :blue)
   #segment(x1, 0, x1, 鈎 - y1, :blue)
   plot!([0, x1, x1, 0, 0], [y1, 0, 鈎 - y1, 鈎, y1], color=:green, lw=1)
   #segment(0, y2, x2, 0, :red)
   #segment(0, y2, 股 - x2, y2, :red)
   plot!([0, x2, 股, 股 - x2, 0], [y2, 0, 0, y2 ,y2], color=:blue, lw=1)
   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(0, y1, "y1 ", :red, :right, :vcenter)
       point(0, y2, "y2 ", :red, :right, :vcenter)
       point(x1, 0, "x1", :red, :center, delta=-delta)
       point(x2, 0, "x2", :red, :center, delta=-delta)
       point(x1 - r, y2 - r, "円:r\n(x1-r,y2-r)", :red, :center, :bottom, delta=delta/2)
       point(0, 鈎, "鈎 ", :green, :right, :vcenter)
       point(股, 0, "鈎", :blue, :center, delta=-delta)
       plot!(xlims=(-7delta, 股 + 5delta), ylims=(-5delta, 鈎 + 5delta))
   end
end;

draw(3, 4, true)

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

算額(その1381)

2024年11月01日 | Julia

算額(その1381)

一七 大里郡岡部村岡 稲荷社 文化13年(1816)
埼玉県立図書館:埼玉県史料集 第二集『埼玉の算額』,昭和44年,誠美堂印刷所,埼玉県与野市.
キーワード:直角三角形,菱形
#Julia, #SymPy, #算額, #和算

直角三角形の中に,甲,乙,丙の菱形を容れる。甲,乙の菱形の一辺の長さ(菱面)が 4 寸,2 寸のとき,丙菱面はいかほどか。

菱形の下にできる直角三角形の底辺と高さ(記号は図を参照)について,関係式を記述する。
甲菱面 = 鈎 - y1;  乙菱面 = 甲菱面 - y2;  丙菱面 = 乙菱面 - y3 である。

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

using SymPy

@syms 鈎::positive, 股::positive, x1::positive, y1::positive,
     x2::positive, y2::positive, x3::positive, y3::positive,
     K1::positive, K2::positive

eq1 = y1/x1 - 鈎/股
eq2 = y2/(x2 - x1) - 鈎/股
eq3 = y3/(x3 - x2) - 鈎/股
eq4 = 鈎 - y1 - sqrt(x1^2 + y1^2)
eq5 = 鈎 - y1 - y2 - sqrt((x2 - x1)^2 + y2^2)
eq6 = 鈎 - y1 - y2 - y3 - sqrt((x3 - x2)^2 + y3^2)
eq7 = 鈎 - y1 - K1
eq8 = 鈎 - y1 - y2 - K2;

res = solve([eq1, eq2, eq3, eq4, eq5, eq6, eq7, eq8], (鈎, 股, x1, y1, x2, y2, x3, y3))[1]

   (K1^2/K2, K1^(5/2)*sqrt(-K1 + 2*K2)/(K2*(K1 - K2)), K1^(3/2)*sqrt(-K1 + 2*K2)/K2, K1*(K1 - K2)/K2, sqrt(K1)*sqrt(-K1 + 2*K2)*(K1^2 - K2^2)/(K2*(K1 - K2)), K1 - K2, sqrt(K1)*sqrt(-K1 + 2*K2)*(K1^2*K2 + K1^2*Abs(K1 - K2) - K2^3)/(K2*(K1*K2 + K1*Abs(K1 - K2) - K2^2 - K2*Abs(K1 - K2))), K2*Abs(K1 - K2)/(K2 + Abs(K1 - K2)))

菱面は,初項 = 甲菱面,公比 = 乙菱面/甲菱面 の等比数列になる。

問のように甲菱面 = 4 寸,乙菱面 = 2 寸とすると, 丙菱面は 1 寸にはなるが,x1 = x2 = x3 = 0 で,もはや菱形ではなく,線分である。

上に描いた図は,甲菱面 = 4,乙菱面 = 3 の場合であり,丙菱面 = 2.25 になる。

全てのパラメータは,以下の通りである。

鈎 = 5.33333;  股 = 15.0849;  x1 = 3.77124;  y1 = 1.33333;  x2 = 6.59966;  y2 = 1;  x3 = 8.72098;  y3 = 0.75

function draw(K1, K2, more)
    pyplot(size=(500, 500), grid=false, aspectratio=1, label="", fontfamily="IPAMincho")
   Abs = abs
   (鈎, 股, x1, y1, x2, y2, x3, y3) = (K1^2/K2, K1^(5/2)*sqrt(-K1 + 2*K2)/(K2*(K1 - K2)), K1^(3/2)*sqrt(-K1 + 2*K2)/K2, K1*(K1 - K2)/K2, sqrt(K1)*sqrt(-K1 + 2*K2)*(K1^2 - K2^2)/(K2*(K1 - K2)), K1 - K2, sqrt(K1)*sqrt(-K1 + 2*K2)*(K1^2*K2 + K1^2*Abs(K1 - K2) - K2^3)/(K2*(K1*K2 + K1*Abs(K1 - K2) - K2^2 - K2*Abs(K1 - K2))), K2*Abs(K1 - K2)/(K2 + Abs(K1 - K2)))
   @printf("甲菱面 = %g;  乙菱面 = %g;  丙菱面 = %g\n", 鈎 - y1, 鈎 - y1 - y2, 鈎 - y1 - y2 - y3)
   @printf("鈎 = %g;  股 = %g;  x1 = %g;  y1 = %g;  x2 = %g;  y2 = %g;  x3 = %g;  y3 = %g\n", 鈎, 股, x1, y1, x2, y2, x3, y3)
   plot([0, 股, 0, 0], [0, 0, 鈎, 0], color=:blue, lw=0.5)
   segment(0, y1, x1, 0)
   segment(x1, y2, x2, 0)
   segment(x2, y3, x3, 0)
   segment(x1, 0, x1, 鈎 - y1)
   segment(x2, 0, x2, 鈎 - y1 - y2)
   segment(x3, 0, x3, 鈎 - y1 - y2 - y3)
   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(0, y1, " (0,y1)", :red, :left, :bottom)
       point(x1, y2, " (x1,y2)", :red, :left, :bottom)
       point(x2, y3, " (x2,y3)", :red, :left, :bottom)
       point(x3, 0, " (x3,0)", :red, :left, :bottom)
       point(0, 鈎, " (0,鈎)", :red, :left, :bottom)
       point(股, 0, " (股,0)", :red, :left, :bottom)
       xlims!(-5delta, 股 + 25delta)
   end
end;

draw(4, 3, true)

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

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

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