総合幾何学
総合幾何学
総合幾何シーンはWolfram言語ではGeometricSceneで表現される.シーンには名前付きの点および数量を表すパラメータの他,記号的な2D領域およびそれらのパラメータに関するアサーションで構成される仮定を含む.これらの仮定に付随する幾何学な定理や推測を表すために結果を加えることもできる.そのシーンに現れるすべてのパラメータの座標と値を指定することによって,シーンの特定の例を表すことができる.同じシーンの複数の例は1つのGeometricSceneオブジェクトで表すことができる.
| GeometricScene[{p1,p2,…},{hyp1,hyp2,…}] | 記号的点 pi についての仮定 hypi によって定義された二次元の抽象的幾何シーン |
| GeometricScene[{{p1,p2,…},{k1,k2,…}},hyps] | 仮定が記号的なスカラー値 ki に依存するシーン |
| GeometricScene[{p1{x1,y1},p2{x2,y2},…},hyps] | それぞれの点について目児的な座標を持つ幾何シーンの特定の例 |
| GeometricScene[{{p1{x11,y11},…},{p1{x21,y21},…},…},hyps] | シーンの複数の例の集合 |
| GeometricScene[…,…,{con1,con2,…}] | シーンと,それについての結論 coni |
| GeometricScene[{scene1,scene2,…}] | 複数のシーンの例を1つのシーンオブジェクトにまとめる |
scene = GeometricScene[{a, b, c, o}, {Triangle[{a, b, c}], CircleThrough[{a, b, c}, o], o == Midpoint[{a, c}]}];RandomInstanceを使ってシーンの特定な例を見付けることによって,幾何シーンを可視化することができる.
| RandomInstance[scene] | シーンのランダムな例を求める |
| RandomInstance[scene,n] | n 個の例を求める |
RandomInstance[scene]RandomInstance[scene, 3]| AngleBisector[{p,q,r}] | 角 ∠ p q r を二等分する無限直線 |
| Circle[p,r] | 点 p を中心とする半径 r の円 |
| CircleThrough[{p1,p2,…}] | 点 pi を通る円 |
| Circumsphere[{p1,p2,p3}] | 点 pi に外接する球 |
| Disk[p,r] | 点 p を中心とする半径 r の塗り潰された円板 |
| HalfLine[{p,q}] | 点 p から始まって点 q を通過する半直線 |
| InfiniteLine[{p,q}] | 点 p と点 q を通過する無限直線 |
| Insphere[{p1,p2,p3}] | 三角形△ p1 p2 p3の辺に内接する球 |
| Line[{p1,p2,…}] | 複数の点 pi をこの順で通過する線分 |
| Midpoint[{p,q}] | 線分 p q の中点 |
| PerpendicularBisector[{p,q}] | 線分 p q の垂直二等分線 |
| Point[p] | 点 p |
| Polygon[{p1,p2,…}] | 頂点 pi を持つ多角形 |
| RegionBoundary[reg] | 領域 reg の境界 |
| RegionCentroid[reg] | 領域 reg の重心 |
| RegionNearest[reg,p] | 点 p に最も近い,領域 reg の点 |
| Triangle[{p,q,r}] | 頂点 p,q,r の三角形 |
| TriangleCenter[{p,q,r},spec] | spec によって指定された三角形△ p q r の中心 |
| TriangleConstruct[{p,q,r},spec] | spec によって指定された三角形△ p q r で定義された,構築された幾何領域 |
GeometricSceneでサポートされる2D領域
scene2 = GeometricScene[{a, b, c, h, l, p}, {Triangle[{a, b, c}], l∈AngleBisector[{a, b, c}], h == TriangleConstruct[{a, b, c}, "Orthocenter"], p == Midpoint[{a, c}]}];RandomInstance[scene2, RandomSeeding -> 8]| ArcLength[reg] | 領域 reg の弧長 |
| Area[reg] | 領域 reg の面積 |
| EuclideanDistance[p,q] | 点 p と点 q の間のユークリッド距離 |
| Perimeter[reg] | 領域 reg の周長 |
| PlanarAngle[{p,q,r}] | 角∠ p q r の測度 |
| PolygonAngle[poly,p] | 頂点 p における多角形 poly の頂角 |
| RegionDistance[reg,p] | 点 p から領域 reg までの距離 |
| RegionMeasure[reg] | 領域 reg の測度 |
| SignedRegionDistance[reg,p] | 点 p から領域 reg までの符号付きの距離 |
| TriangleMeasurement[{p,q,r},spec] | spec によって指定された三角形△ p q r の測度 |
GeometricSceneでサポートされる幾何学量
| p∈reg | 点 p が領域 reg の要素であるというアサーション |
| x1… | 領域/幾何学量 xi が等しいというアサーション |
| GeometricAssertion[objs,prop] | オブジェクト objs が特性 prop を満足するというアサーション |
| GeometricStep[hyps,label] | 複数の仮定からなるステップ |
| RegionMember[reg,p] | 点 p が領域 reg のメンバーであるというアサーション |
GeometricSceneでサポートされるアサーション
scene3 = GeometricScene[{a, b, c, d, e, f, m}, {GeometricAssertion[Polygon[{a, b, c, d}], "Cyclic"], GeometricAssertion[{Line[{a, m, c}], Line[{b, m, d}]}, "Perpendicular"], GeometricAssertion[{Line[{f, m, e}], Line[{b, e, c}]}, "Perpendicular"], Line[{a, f, d}]}];
RandomInstance[scene3, RandomSeeding -> 9]GeometricSceneもスタイルをサポートする.
| Style[objs,opts] | スタイルを指定する |
| GeometricStylingRules | パターンにマッチする構造すべてにスタイルを付ける |
GeometricScene内のスタイル指定
RandomInstance[GeometricScene[
{a, b, c, d, e, o},
{
Polygon[{a, b, c, d, e}],
p1 == Style[Triangle[{a, b, o}], Red],
p2 == Style[Triangle[{b, o, c}], Blue],
p3 == Style[Triangle[{c, d, o}], Yellow],
p4 == Style[Triangle[{d, o, e}], Purple],
p5 == Style[Triangle[{e, o, a}], Orange],
GeometricAssertion[{p1, p2, p3, p4, p5}, "Similar"]
}
]]RandomInstance[GeometricScene[{a, b, c}, {GeometricStep[{Line[{a, b}]}], GeometricStep[{CircleThrough[{b, c}, a], CircleThrough[{a, c}, b]}],
GeometricStep[{Triangle[{a, b, c}]}]}, GeometricStylingRules ->
{"PointStyle" -> Brown, "StylingPatterns" -> {_CircleThrough -> Purple, Triangle[{a, b, c}] -> PatternFilling["Checkerboard", 10]}}]]| FindGeometricConjectures[scene] | scene に対して成り立つ可能性のある推測を求める |
| FindGeometricConjectures[{scene1,scene2,…}] | scenei の複数の例に対して成り立つ可能性のある推測を求める |
| FindGeometricConjectures[scenes,patt] | 形式 patt の推測を求める |
| FindGeometricConjectures[scenes,patt,n] | n 個までの推測を求める |
scene = GeometricScene[{a, b, c, o}, {Triangle[{a, b, c}], CircleThrough[{a, b, c}, o], o == Midpoint[{a, c}]}];RandomInstance[scene]FindGeometricConjectures[%]["Conclusions"]scene4 = GeometricScene[{a, b, c, d, e, f, x, y, z}, {Line[{{a, b, c}, {d, e, f}, {a, x, e}, {b, x, d}, {a, y, f}, {c, y, d}, {b, z, f}, {c, z, e}}], Style[InfiniteLine[{x, z}], Red]}];RandomInstance[scene4]FindGeometricConjectures[%, GeometricAssertion[_, "Collinear"]]["Conclusions"]scene5 = GeometricScene[{o, a, b, c, oa, ob, oc, k}, {o == TriangleCenter[{a, b, c}, "Circumcenter"], oa == TriangleCenter[{o, b, c}, "Circumcenter"], ob == TriangleCenter[{a, o, c}, "Circumcenter"], oc == TriangleCenter[{a, b, o}, "Circumcenter"], GeometricAssertion[{a, k, oa}, "Collinear"], GeometricAssertion[{b, k, ob}, "Collinear"],
Style[InfiniteLine[{c, oc}], Red]}];RandomInstance[scene5, RandomSeeding -> 6]FindGeometricConjectures[%, GeometricAssertion[_, "Collinear"]]["Conclusions"]scene6 = GeometricScene[{a, b, c, d, bb, cc, dd, q, r, s, t}, {GeometricAssertion[{Polygon[{a, b, c, d}], Polygon[{a, bb, cc, dd}]}, "Regular", "Counterclockwise"], q == Midpoint[{bb, d}], r == Midpoint[{a, c}], s == Midpoint[{b, dd}], t == Midpoint[{a, cc}], Style[Polygon[{q, r, s, t}], Opacity[0.4], Red]}];RandomInstance[scene6, RandomSeeding -> 1]FindGeometricConjectures[%, GeometricAssertion[_, "Regular"]]["Conclusions"]Wolfram言語はGeometricSolveValues等の関数を使って,幾何学的シーンに対して論理的推論を行うことができる.
| GeometricSolveValues[scene,expr] | scene によって定義された記号幾何学量 expr について解く |
| GeometricSolveValues[scene,{expr1,expr2,…}] | scene によって定義された複数の数量 expr1,expr2, … について解く |
scene = GeometricScene[{a, b, c, d, e, f}, {PlanarAngle[{b, a, c}] == 90 °, PlanarAngle[{a, c, b}] == 45 °, Line[{a, d, c}], Line[{b, f, c}], Line[{a, e, b}], Line[{e, f}], GeometricAssertion[{Line[{d, f}], Line[{b, c}]}, "Perpendicular"], EuclideanDistance[a, d] == 4, EuclideanDistance[d, c] == 8, EuclideanDistance[a, e] == 10}];
RandomInstance[scene]GeometricSolveValues[scene, Area[Polygon[{a, e, f, d}]]]scene = GeometricScene[{{a, b, c}, {x}}, {a == {0, 0}, b == {0, 4}, c == {x, 5}, x > 0, Polygon[{a, b, c}]}];
instance = RandomInstance[scene]{GeometricSolveValues[scene, Area[Polygon[{a, b, c}]]], GeometricSolveValues[instance, Area[Polygon[{a, b, c}]]]}幾何オブジェクトに対する推論はGeometricTestを使って行うことができる.
| GeometricTest[obj,prop] | 幾何オブジェクト obj が prop を満足するかどうかを判定する |
| GeometricTest[{obj1,obj2,…},prop] | obji が prop を満足するかどうかを判定する |
| GeometricTest[objs,prop1,prop2,…] | objs が各 propi を満足するかどうかを判定する |
GeometricTest[{{2, 3}, {4, 6}, {-2, -3}}, "Collinear"]GeometricTest[{{a, b}, {c, d}, {e, f}}, "Collinear"]GeometricTest[Polygon[{{a, b}, {c, d}, {e, f}, {g, h}, {i, j}}], "Clockwise", "Cyclic"]関連するガイド
-
▪
- 総合幾何学