之前发现一个很奇怪的几何规律,第一感觉不像是对的。看上去很初级的样子,但很奇怪为什么没遇到过。通过数值验证它的确是没毛病的,但很好奇它的理论证明方法,想了很久没想出来,上网各种搜都没有答案。命题如下:
如图1所示,ABC为任意三角形,AE和BD相交于点O,CO和DE相交于点F。过C点作直线 r 与AB平行,延长线段AF和AE分别交直线 r 于点G、H。
证明:CG和GH长度相等。
我最想知道怎么用平面几何相关定理来证明,没办法后来只能退而求其次用解析几何的方法证明。如下:
建立直角坐标,点的坐标如图2所示。其中用紫色表示的坐标代表设定的参数,以表示任意的三角形ABC和任意点O。然后利用直线方程求出(x1,y1)、(x2,y2),然后表示出(x3,y3),最后表示出x4和x5,最后求出x4-c=x5-x4即得证。
但求到一半我受不了了,x3,y3太复杂没信心继续求下去。
x3 = ((a*c^2*f^2)/(a*d + c*f - d*e) + (a*d^2*e^2)/(a*f - c*f + d*e) - (a^2*c^2*d*f^2)/((a*d + c*f - d*e)*(a*f - c*f + d*e)) - (a^2*d^2*e^2*f)/((a*d + c*f - d*e)*(a*f - c*f + d*e)) - (a*c*d*e*f)/(a*d + c*f - d*e) - (a*c*d*e*f)/(a*f - c*f + d*e) + (a^2*c*d*e*f^2)/((a*d + c*f - d*e)*(a*f - c*f + d*e)) + (a^2*c*d^2*e*f)/((a*d + c*f - d*e)*(a*f - c*f + d*e)))/((a*c*f^2)/(a*d + c*f - d*e) + (a*d^2*e)/(a*f - c*f + d*e) - (a*c*d*f)/(a*f - c*f + d*e) - (a*d*e*f)/(a*d + c*f - d*e))
y3 = ((a*c*d*f^2)/(a*d + c*f - d*e) - (a*c*d*f^2)/(a*f - c*f + d*e) - (a*d^2*e*f)/(a*d + c*f - d*e) + (a*d^2*e*f)/(a*f - c*f + d*e) + (a^2*c*d*f^3)/((a*d + c*f - d*e)*(a*f - c*f + d*e)) + (a^2*d^3*e*f)/((a*d + c*f - d*e)*(a*f - c*f + d*e)) - (a^2*c*d^2*f^2)/((a*d + c*f - d*e)*(a*f - c*f + d*e)) - (a^2*d^2*e*f^2)/((a*d + c*f - d*e)*(a*f - c*f + d*e)))/((a*c*f^2)/(a*d + c*f - d*e) + (a*d^2*e)/(a*f - c*f + d*e) - (a*c*d*f)/(a*f - c*f + d*e) - (a*d*e*f)/(a*d + c*f - d*e))
今天想起来Matlab有简化多项式的函数,于是利用simplify函数求得:
x3 = (c*f + d*e)/(d + f)
y3 = (2*d*f)/(d + f)
原来这么简单,肯定里面好多分母相同的项之前没有仔细观察,要是换个初中高中生来做,应该会很快。进而得到:
x4 = (c*f + d*e)/(2*f)
x5 = (d*e)/f
于是
x4-c = -(c*f - d*e)/(2*f) = x5-x4
附——完整的Matlab代码:
syms a;syms c;syms d;syms e;syms f;[x1,y1]=getcross(0,0,c,d,e,f,a,0);[x2,y2]=getcross(a,0,c,d,0,0,e,f);[x3,y3]=getcross(c,d,e,f,x1,y1,x2,y2);[x4,y4]=getcross(c,d,0,d,x3,y3,0,0);[x5,y5]=getcross(c,d,0,d,e,f,0,0);ans=x5-x4-(x4-c);simplify(ans)
% 其中求两条线的交点的函数
function [x,y] = getcross( x11,y11,x12,y12,x21,y21,x22,y22 ) x=(x11*x21*y12 - x12*x21*y11 - x11*x22*y12 + x12*x22*y11 - x11*x21*y22 + x11*x22*y21 + x12*x21*y22 - x12*x22*y21)/(x11*y21 - x21*y11 - x11*y22 - x12*y21 + x21*y12 + x22*y11 + x12*y22 - x22*y12); y=(x11*y12*y21 - x12*y11*y21 - x11*y12*y22 + x12*y11*y22 - x21*y11*y22 + x22*y11*y21 + x21*y12*y22 - x22*y12*y21)/(x11*y21 - x21*y11 - x11*y22 - x12*y21 + x21*y12 + x22*y11 + x12*y22 - x22*y12); end
(简书换行的行距太大了o(╥﹏╥)o,所以代码没有换行)