В остроугольном треугольнике ABC проведены высоты ...
생성일: 2026년 6월 10일
답변에 사용된 모델 GPT-5.5 Thinking by Chat01
생성일: 2026년 6월 10일
답변에 사용된 모델 GPT-5.5 Thinking by Chat01
В остроугольном треугольнике ABC проведены высоты AA1, BB1, CC1, а H — его ортоцентр. Точку H отразили относительно прямых B1C1, C1A1, A1B1, получили точки HA, HB, HC соответственно. Докажите, что AHA, BHB, CHC пересекаются в одной точке. Реши без координат, без векторов, без тригонометрии, используя гомотетию и чистую семантику
pythonimport sympy as sp # Define arbitrary triangle T: X, Y, Z X=sp.Point(1,4) Y=sp.Point(-3,0) Z=sp.Point(5,0) def dist(P,Q): return P.distance(Q) a=dist(Y,Z) # side x b=dist(Z,X) # side y c=dist(X,Y) # side z I=sp.Point((a*X.x+b*Y.x+c*Z.x)/(a+b+c), (a*X.y+b*Y.y+c*Z.y)/(a+b+c)) Ix_ex=sp.Point((-a*X.x+b*Y.x+c*Z.x)/(-a+b+c), (-a*X.y+b*Y.y+c*Z.y)/(-a+b+c)) Iy_ex=sp.Point((a*X.x-b*Y.x+c*Z.x)/(a-b+c), (a*X.y-b*Y.y+c*Z.y)/(a-b+c)) Iz_ex=sp.Point((a*X.x+b*Y.x-c*Z.x)/(a+b-c), (a*X.y+b*Y.y-c*Z.y)/(a+b-c)) I, Ix_ex, Iy_ex, Iz_ex (Point2D(1, 32/(8 + 8*sqrt(2))), Point2D(1, -32/(-8 + 8*sqrt(2))), Point2D(1 + 4*sqrt(2), 4), Point2D(1 - 4*sqrt(2), 4))
pythondef reflect_point_across_line(P, A, B): return P.reflect(sp.Line(A,B)) Ri_x=reflect_point_across_line(I,Y,Z) Ri_y=reflect_point_across_line(I,Z,X) Ri_z=reflect_point_across_line(I,X,Y) Ri_x, Ri_y, Ri_z (Point2D(1, -32/(8 + 8*sqrt(2))), Point2D(5 - 32/(8 + 8*sqrt(2)), 4), Point2D(-3 + 32/(8 + 8*sqrt(2)), 4))
pythonLx=sp.Line(Ix_ex,Ri_x) Ly=sp.Line(Iy_ex,Ri_y) Lz=sp.Line(Iz_ex,Ri_z) P=Lx.intersection(Ly)[0] P, Lz.distance(P).simplify() (Point2D(1, 4), 0)
pythonX=sp.Point(0,4); Y=sp.Point(-2,0); Z=sp.Point(7,0) a=dist(Y,Z); b=dist(Z,X); c=dist(X,Y) I=sp.Point((a*X.x+b*Y.x+c*Z.x)/(a+b+c), (a*X.y+b*Y.y+c*Z.y)/(a+b+c)) Ex=sp.Point((-a*X.x+b*Y.x+c*Z.x)/(-a+b+c), (-a*X.y+b*Y.y+c*Z.y)/(-a+b+c)) Ey=sp.Point((a*X.x-b*Y.x+c*Z.x)/(a-b+c), (a*X.y-b*Y.y+c*Z.y)/(a-b+c)) Ez=sp.Point((a*X.x+b*Y.x-c*Z.x)/(a+b-c), (a*X.y+b*Y.y-c*Z.y)/(a+b-c)) Rx=I.reflect(sp.Line(Y,Z)); Ry=I.reflect(sp.Line(Z,X)); Rz=I.reflect(sp.Line(X,Y)) P=sp.Line(Ex,Rx).intersection(sp.Line(Ey,Ry))[0] float(P.x), float(P.y), P, float(sp.Line(Ez,Rz).distance(P)) (-1.4119403701461801, 3.3483789724108077, Point2D((-337*sqrt(65) + 715 + 377*sqrt(5) + 385*sqrt(13))/(2*(-131*sqrt(65) + 52 + 127*sqrt(13) + 208*sqrt(5))), (-341*sqrt(65) - 1001*sqrt(5) + 871 + 991*sqrt(13))/(2*(-131*sqrt(65) + 52 + 127*sqrt(13) + 208*sqrt(5)))), 0.0)
python# Compute side intersection/parallel for T non-isosceles def num(P): return (float(P.x),float(P.y)) for name,P0 in [('X',X),('Y',Y),('Z',Z),('I',I),('Ex',Ex),('Ey',Ey),('Ez',Ez),('Rx',Rx),('Ry',Ry),('Rz',Rz)]: print(name,num(P0)) print("slopes EyEz",sp.Line(Ey,Ez).slope, "RyRz", sp.Line(Ry,Rz).slope) print("slopes EzEx",sp.Line(Ez,Ex).slope, "RzRx", sp.Line(Rz,Rx).slope) print("slopes ExEy",sp.Line(Ex,Ey).slope, "RxRy", sp.Line(Rx,Ry).slope) for L1,L2 in [(sp.Line(Ey,Ez),sp.Line(Ry,Rz)),(sp.Line(Ez,Ex),sp.Line(Rz,Rx)),(sp.Line(Ex,Ey),sp.Line(Rx,Ry))]: print(L1.intersection(L2))
pythonprint(sp.Line(Ey,Ez).distance(X).simplify(), sp.Line(Ey,Ez).distance(X).evalf())
pythonprint(sp.Line(Ry,Rz).distance(X).evalf(), sp.Line(Ry,Rz).distance(X).simplify()) # It is parallel to EyEz through X but different line.
pythondef orient(P,Q,R): return sp.sign(sp.Matrix([[Q.x-P.x,Q.y-P.y],[R.x-P.x,R.y-P.y]]).det().evalf()) print(orient(Ex,Ey,Ez), orient(Rx,Ry,Rz))
pythonimport math, random def check(X,Y,Z): a=float(sp.Point(Y).distance(sp.Point(Z))) b=float(sp.Point(Z).distance(sp.Point(X))) c=float(sp.Point(X).distance(sp.Point(Y))) sx=a+b+c I=sp.Point((a*X[0]+b*Y[0]+c*Z[0])/sx,(a*X[1]+b*Y[1]+c*Z[1])/sx) # excenters opposite Y/Z Ey=sp.Point((a*X[0]-b*Y[0]+c*Z[0])/(a-b+c),(a*X[1]-b*Y[1]+c*Z[1])/(a-b+c)) Ez=sp.Point((a*X[0]+b*Y[0]-c*Z[0])/(a+b-c),(a*X[1]+b*Y[1]-c*Z[1])/(a+b-c)) XI=float(sp.Point(X).distance(I)) return float(sp.Point(X).distance(Ey)), float(sp.Point(X).distance(Ez)), XI for coords in [((0,0),(1,0),(0.2,0.1)), ((0,0),(1,0),(0.2,3)), ((0,0),(5,0),(1,0.5))]: print(coords, check(*coords))
Пусть — ортический треугольник исходного треугольника .
Ключевая идея: исходный треугольник является эксцентральным треугольником для , а треугольник имеет стороны, параллельные соответствующим сторонам этого эксцентрального треугольника. Значит, эти два треугольника гомотетичны, и соединяющие соответствующие вершины прямые проходят через центр гомотетии.
Сначала вспомним стандартный факт.
В ортическом треугольнике точка — его инцентр, а точки — его эксцентры.
Действительно, например, биссектриса угла : это получается обычной погоней углов через циклические четырёхугольники
Аналогично и — биссектрисы двух других углов. Поэтому — инцентр треугольника .
Далее, лежит на , то есть на внутренней биссектрисе при . При этом и , значит и — внешние биссектрисы при и . Поэтому — эксцентр треугольника . Аналогично и — два других эксцентра.
Теперь рассмотрим сторону . В треугольнике точки и — эксцентры, не соответствующие вершине . Поэтому обе они лежат на внешней биссектрисе угла при . Значит,
есть внешняя биссектриса при , а потому
С другой стороны, и получены отражением точки относительно прямых и . Эти две прямые симметричны относительно внутренней биссектрисы . Так как лежит на этой биссектрисе, то отражённые точки и симметричны относительно . Следовательно,
Значит,
Точно так же получаем ещё две параллельности:
Итак, треугольники
имеют попарно параллельные соответствующие стороны. Следовательно, они гомотетичны. Центр этой гомотетии лежит одновременно на прямых, соединяющих соответствующие вершины:
Значит, прямые , , пересекаются в одной точке.