找回密码
 快速注册
搜索
查看: 357|回复: 8

解析几何工具包

[复制链接]

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2021-7-3 04:00 |阅读模式
在Mathematica中做解析几何的一个工具包
$type GeoProver.nb (145.35 KB, 下载次数: 88)

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

TSC999 发表于 2022-4-13 10:53
这个包包如何放入程序中以便调用?包包中的东西如何修改、添加和删除?

最好能举个例子说明。

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

 楼主| hbghlyj 发表于 2022-4-25 12:13
本帖最后由 hbghlyj 于 2023-3-9 15:17 编辑 回复 2# TSC999


    informatik.uni-leipzig.de/~compalg/software/geoprover/
The GeoProver is a small package for mechanized (plane) geometry manipulations with non degeneracy tracing, available for different CAS platforms (Maple, MuPAD, Mathematica, and Reduce).

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

 楼主| hbghlyj 发表于 2023-3-9 21:37
TSC999 发表于 2022-4-13 03:53
这个包包如何放入程序中以便调用?包包中的东西如何修改、添加和删除?

最好能举个例子说明。 ...

github.com/hg-graebe/GeoProver
The GeoProver is a small package for mechanized (plane) geometry manipulations with non degeneracy tracing, available for different CAS platforms (Maple, MuPAD, Maxima, Mathematica, and Reduce).

The latest version 1.3 was finished at Jan 20, 2003 and was since that time under casual revision. In particular, in 2017 a version for Maxima was added.

The different packages are build from a common generic source description (macro definitions) and CAS-specific basic inline code together with help system and tests.

After a change of the format of the generic source description this build process has to be fixed.

The precompiled versions for the different target CAS are available in the src directory. See the README.md in the different directories for more details.

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

 楼主| hbghlyj 发表于 2023-3-9 22:22
The GeoProver Package for Mechanized (Plane) Geometry Theorem Proving

Basic Data Types

Basic data types are Points, Lines, and Circles.

A point A:=Point(a,b) represents a point with coordinates $(a_1,a_2)$.

A line l:=Line(a,b,c) represents the line $\{ (x,y) : ax+by+c=0 \}$.

A circle c:=Circle(c1,c2,c3,c4) represents the circle $\{ (x,y) : c_1(x^2+y^2)+c_2x+c_3y+c_4=0 \}$.

Available functions

Point(a:Scalar, b:Scalar) Point constructor. Returns a coding for the point with coordinates (a,b).
altitude(A:Point, B:Point, C:Point) The altitude from A onto g(BC).
angle_sum(a:Scalar, b:Scalar) Returns tan(alpha+beta), if a=tan(alpha), b=tan(beta).
centroid(A:Point, B:Point, C:Point) Centroid of the triangle ABC.
circle_center(c:Circle) The center of the circle c.
circle_slider(M:Point, A:Point, u:Scalar) Choose a point on the circle with center M and point A on the perimeter using a rational parametrization with parameter u.
circle_sqradius(c:Circle) The squared radius of the circle c.
circumcenter(A:Point, B:Point, C:Point) The circumcenter of the triangle ABC.
csym_point(P:Point, Q:Point) The point symmetric to P wrt. Q as symmetry center.
eq_angle(A:Point, B:Point, C:Point, D:Point, E:Point, F:Point) Test for equal angle w(ABC) = w(DEF).
eq_dist(A:Point, B:Point, C:Point, D:Point) Test for equal distance d(AB) = d(CD).
fixedpoint(A:Point, B:Point, u:Scalar) The point D=(1-u)*A+u*B on the line AB for a fixed value of u.
intersection_point(a:Line, b:Line) The intersection point of the lines a,b.
is_cc_tangent(c1:Circle, c2:Circle) Zero iff circles c_1 and c_2 are tangent.
is_cl_tangent(c:Circle, l:Line) Zero iff the line l is tangent to the circle c.
is_collinear(A:Point, B:Point, C:Point) Zero iff A,B,C are on a common line. For the signed area of the triangle ABC use triangle_area.
is_concurrent(a:Line, b:Line, c:Line) Zero iff the lines a,b,c pass through a common point.
is_concyclic(A:Point, B:Point, C:Point, D:Point) Zero iff four given points are on a common circle.
is_equal(A:Scalar, B:Scalar) Test for equality of A and B.
is_orthogonal(a:Line, b:Line) zero iff the lines a,b are orthogonal.
is_parallel(a:Line, b:Line) Zero iff the lines a,b are parallel.
l2_angle(a:Line, b:Line) Tangens of the angle between a and b.
line_slider(a:Line, u:Scalar) Chooses a point on a using parameter u.
median(A:Point, B:Point, C:Point) The median line from A to BC.
midpoint(A:Point, B:Point) The midpoint of AB.
on_bisector(P:Point, A:Point, B:Point, C:Point) Zero iff P is a point on the (inner or outer) bisector of the angle \angle ABC.
on_circle(P:Point, c:Circle) Zero iff P is on the circle c.
on_line(P:Point, a:Line) Zero iff P is on the line a.
ortho_line(P:Point, a:Line) The line through P orthogonal to the line a.
orthocenter(A:Point, B:Point, C:Point) Orthocenter of the triangle ABC.
other_cc_point(P:Point, c1:Circle, c2:Circle) c_1 and c_2 intersect at P. The procedure returns the second intersection point.
other_cl_point(P:Point, c:Circle, l:Line) c and l intersect at P. The procedure returns the second intersection point.
other_incenter(M:Point, A:Point, B:Point) Let ABC be a triangle and M the incenter of ABC. Returns the excenter of ABC on the bisector CM.
p3_angle(A:Point, B:Point, C:Point) Tangens of the angle between BA and BC.
p3_circle(A:Point, B:Point, C:Point) The circle through 3 given points.
p9_center(A:Point, B:Point, C:Point) Center of the nine-point circle of the triangle ABC.
p9_circle(A:Point, B:Point, C:Point) The nine-point circle (Feuerbach circle) of the triangle ABC.
p_bisector(B:Point, C:Point) The perpendicular bisector of BC.
pappus_line(A:Point, B:Point, C:Point, D:Point, E:Point, F:Point) The Pappus line of a conic 6-tuple of points.
par_line(P:Point, a:Line) The line through P parallel to line a.
par_point(A:Point, B:Point, C:Point) Point D that makes ABCD a parallelogram.
pc_circle(M:Point, A:Point) The circle with given center M and circumfere point A.
pedalpoint(P:Point, a:Line) The pedal point of the perpendicular from P onto a.
pp_line(A:Point, B:Point) The line through A and B.
radical_axis(c1:Circle, c2:Circle) The radical axis of two circles, i.e. the line of point with equal pc_degree wrt. to both circles. If the circles intersect this is the line through their intersection points. If the circles don't intersect this are the point with equal tangent segments to both circles.
rotate(C:Point, A:Point, angle:Scalar) Rotate point A (counterclockwise) around center C with angle angle*Pi.
sqrdist(A:Point, B:Point) Squared distance between A and B.
sqrdist_pl(A:Point, l:Line) Squared distance between point A and line l.
sym_line(a:Line, l:Line) The line symmetric to a wrt. the line l.
sym_point(P:Point, l:Line) The point symmetric to P wrt. line l.
triangle_area(A:Point, B:Point, C:Point) Signed area of the directed triangle ABC.
varpoint(A:Point, B:Point, u:Scalar) The point D=(1-u)*A+u*B that slides on the line AB, with parameter u.

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

TSC999 发表于 2023-3-10 11:19
本帖最后由 TSC999 于 2023-3-10 11:34 编辑 这个工具包其实也没啥好东西,应该是国外某个数学爱好者的作品。译文如下:

项目表.png

119

主题

446

回帖

3179

积分

积分
3179

显示全部楼层

TSC999 发表于 2023-3-10 12:30
复平面上解析几何部分公式:
复平面上解析几何部分公式.png

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

 楼主| hbghlyj 发表于 2023-3-10 16:07
根据Github链接,作者是莱比锡大学的Hans-Gert Gräbe

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

 楼主| hbghlyj 发表于 2023-3-10 16:10


除了Mathematica还有在Maple, MuPAD, Reduce平台的工具包
不知内容是否一样

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 12:25

Powered by Discuz!

× 快速回复 返回顶部 返回列表