0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

大人用です。長方形の対角線と三角形「【数学実況#14】図形」様を、計算はsympyで作図は手抜きのつもりでした。

0
Last updated at Posted at 2026-09-18

GeminiはAIであり、不正確な情報を表示することがあります

オリジナル

AKITOの特異点 様 (0:00〜7:03) はじめまして。 よろしくお願いします。
↓【数学実況#14】図形
https://youtu.be/3MOYnJCVwok

いつものsympyで(オリジナル Youtbe様の方法を参考に)

ver0.1

・先生の丸写しです。図形の証明は省略です。ステキです。
・0:58 中学生の知識。

# ver0.1
from sympy import *
var('x',real=True,positive=True)
print("#",together(solve(Eq(x**2/sqrt(1+x**2),1/sqrt(1+x**2)+x/sqrt(1+x**2)),x)[0]))
# (1 + sqrt(5))/2

いつもの sympyで

ver1.1

・?大人の知識。
 CAD風です。大人は、補助線、そ~じが苦手。左下が原点A(0,0)
 solve は言う事キカン? solveset でテキトウにです。
 後半で、IntervalについてGemini先生に聞いています。

# ver1.1
from sympy import *
var('x',real=True,positive=True)
AB,CD  =x,1
A,B,C,D=map(Point,[(0,0),(AB,0),(AB,CD),(0,CD)])
E      =Line(B,D).projection(C)                                                    # ;print(E)
# sol  =solve(Eq(Line(E,D).angle_between(Line(E,A)),pi/4),x)
sol    =solveset(Eq(Line(E,D).angle_between(Line(E,A)),pi/4),x,Interval(1,5)).args[0]
print("#",together(sol))
# (1 + sqrt(5))/2

ver1.2

・上と同じ。?無理すれば、何をやっているかわからなくなります。
 ver1.1 ありきです。さすがにEまで押し込むのはどうかと思いました。
 作図が不便です。ver1.1 のように、Eを残して、作図でEを見たい。

# ver1.2
from sympy import *
var('x',real=True,positive=True)
AB,CD  =x,1
A,B,C,D=map(Point,[(0,0),(AB,0),(AB,CD),(0,CD)])
E      =Line(B,D).projection(C)                                                    # ;print(E)
print("#",together(solveset(Eq(Line(E,D).angle_between(Line(E,A)),pi/4),x,Interval(1,5)).args[0]))
# (1 + sqrt(5))/2

ver2.1

・0:52 高校の知識。
・Gemini先生へ、ver1.1 を丸投げです。何だか怪しい。

 geometry モジュールを使わずに、tan の処理のソースコードと計算結果を背景黒で。教えて下さい。(ver1.1 のソースコードの表示を省略)

 0:55 高校生知識。高校の知識。
 6:25 高校生知識。tan を使った処理。
SymPyを用いた幾何問題の代数的解法(tanを利用)

# ver2.1
from sympy import *

x = Symbol('x', real=True, positive=True)

# 各頂点の座標(平面ベクトル)
A = Matrix([0, 0])
B = Matrix([x, 0])
C = Matrix([x, 1])
D = Matrix([0, 1])

# 点Cから直線BD(方向ベクトル BD = D - B)への射影点 E
BD = D - B
t = (C - B).dot(BD) / BD.dot(BD)
E = B + t * BD

# ベクトル ED と EA
v1 = D - E
v2 = A - E

# tan(pi/4) = 1 となる条件: |v1 x v2| / (v1 . v2) == 1
# 2次元の外積(行列式)と内積の計算
cross_val = abs(v1[0]*v2[1] - v1[1]*v2[0])
dot_val = v1.dot(v2)

# 方程式 |v1 x v2| / (v1 . v2) = tan(pi/4) = 1
eq = Eq(cross_val / dot_val, 1)

# 解の導出
sol = solveset(eq, x, Interval(1, 5))
ans = together(sol.args[0])

print("#", ans)
# # (1 + sqrt(5))/2

ver1.4

・Gemini先生へ。(連続して)

matrix も使わないで教えて下さい。
# ver2.2
# SymPyを用いた幾何問題の代数的解法(Matrix・geometry非使用)
from sympy import *

x = Symbol('x', real=True, positive=True)

# 各頂点の座標 (x, y)
Ax, Ay = 0, 0
Bx, By = x, 0
Cx, Cy = x, 1
Dx, Dy = 0, 1

# 点Cから直線BDへの射影点 E(Ex, Ey) の計算
# 直線BDの方向ベクトル: (Dx - Bx, Dy - By) = (-x, 1)
BDx, BDy = Dx - Bx, Dy - By
BCx, BCy = Cx - Bx, Cy - By

# 射影のパラメータ t = (BC · BD) / (BD · BD)
t = (BCx * BDx + BCy * BDy) / (BDx**2 + BDy**2)
Ex = Bx + t * BDx
Ey = By + t * BDy

# ベクトル ED と EA の成分
v1x, v1y = Dx - Ex, Dy - Ey
v2x, v2y = Ax - Ex, Ay - Ey

# 外積 z成分(平行四辺形の面積)と 内積
cross_val = abs(v1x * v2y - v1y * v2x)
dot_val = v1x * v2x + v1y * v2y

# tan(angle) = |外積| / 内積 = tan(pi/4) = 1
eq = Eq(cross_val / dot_val, 1)

# 解の導出
sol = solveset(eq, x, Interval(1, 5))
ans = together(sol.args[0])

print("#", ans)
# (1 + sqrt(5))/2

(続けて)Gemini先生へ。作図。

以下のpng図だけ出力して。matplotlib 不要。
(ver1.1 のソースコードの表示を省略)

・「間違っています。」を繰り返しました。紆余曲折の末です。

image.png

solveset の Interval について

以下のInterval で 私はテキトーに(1,5) にしていますが、根拠付けをお願いします。
(ver1.1 のソースコードの表示を省略)

Interval(1, 5) は、問題の幾何学的解である 黄金比 $x = \frac{1+\sqrt{5}}{2} \approx 1.618$
を探索範囲内に確実に収めつつ、不適解(代数的な虚解や範囲外の解)を除外するための 適切な開区間 です。
(途中省略)?黄金比
A. 実数全体かつ正の範囲指定 (Interval(0, oo))...
B. 黄金比を明確に囲むコンパクトな区間 (Interval(1, 2))...
??

いつもの? sympyの実行環境 と 参考のおすすめです。

sympyのweb上での実行方法

SymPy Live Shellで。
ソースコードの解説は、私よりGemini先生へのソースコードの丸投げがおすすめです。質問の追加はいくらでも。
モーダル対応?「実行して」。「作図して」「問題文章の丸投げ」いい時代です。

(テンプレート)

いつもと違うおすすめです。

sympy のdoc

・いらないカモ。

ver0.1

・together(*args, **kwargs)
https://docs.sympy.org/latest/modules/core.html#sympy.core.expr.Expr.together

ver1.1

・angle_between(l2) < Line
https://docs.sympy.org/latest/modules/geometry/lines.html#sympy.geometry.line.LinearEntity.angle_between
・Solveset
https://docs.sympy.org/latest/modules/solvers/solveset.html

ver1.2

・Matrices
https://docs.sympy.org/latest/tutorials/intro-tutorial/matrices.html
・dot(p)
https://docs.sympy.org/latest/modules/geometry/points.html#sympy.geometry.point.Point.dot

ver2.1

ver2.2

wikipedia内で

qiita 内で

後記

GeminiはAIであり、不正確な情報を表示することがあります

・後出しで、私の言い訳です。気をつけて確認しているつもりです。
 お気づきがあれば、アドバイスいただけると幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?