| 
注册时间2016-5-4最后登录1970-1-1威望 星金币 枚贡献 分经验 点鲜花 朵魅力 点上传 次下载 次积分270在线时间 小时 
 | 
 
| 
本帖最后由 yuange1975 于 2023-10-22 20:54 编辑
×
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?欢迎注册  
 圆上点P到两点AB距离的和最大最小值。
 
 AB两点坐标(-a,0)、(a,0),a>=0。PA+PB=2m,椭圆方程x^2/m^2+y^2/(m^2-a^2)=1。
 
 圆的圆心坐标(b,c)半径r。圆的方程(x-b)^2+(y-c)^2=r^2。
 
 线段AB如果和圆相交最小值就是2m。
 
 椭圆和圆相切有重根。
 
 圆方程换元
 x=b+r*2t/(1+t^2)
 y=c+r*(1-t^2/(1+t^2)
 
 带入椭圆方程,得到:
 f=m*m-a*a)*(b*(1+t*t)+2*r*t)**2+m*m*(c*(1+t*t)+r*(1-t*t))**2-m*m*(m*m-a*a)*(1+t*t)**2=0
 
 现在就是关于m和t的多项式方程,有重根就是方程和导数方程有同根。
 f是t的四次方程,对t求导得到一个t的三次方程,联立方程就可以解出来m和t。
 
 这两个方程对于已知的abcr都不好直接解,更别说都是参数的已知条件。
 
 我们换元的好处出来了,一个是t的四次方程一个是t的三次方程,就可以辗转相除法消去t。过程比较复杂好在有程序可以处理。
 
 消去t后得到m的一个高次方程,好在能分解。这个分解一定有内在原因,可以找找这个分解的原因。
 
 
 分解后的方程:
 
 g=
 (-a**4*b**4 + a**4*b**2*r**2 - m**8 + m**6*(2*a**2 + 2*b**2 + 2*c**2 - 2*c*r + 2*r**2) + m**4*(-a**4 - 4*a**2*b**2 - 2*a**2*c**2 + 2*a**2*c*r - 4*a**2*r**2 - b**4 - 2*b**2*c**2 + 2*b**2*c*r + b**2*r**2 - c**4 + 2*c**3*r - 2*c**2*r**2 + 2*c*r**3 - r**4) + m**2*(2*a**4*b**2 + 2*a**4*r**2 + 2*a**2*b**4 + 2*a**2*b**2*c**2 - 2*a**2*b**2*c*r - 2*a**2*b**2*r**2 + 2*a**2*c**2*r**2 - 4*a**2*c*r**3 + 2*a**2*r**4))**2
 
 *(a**8*b**4 - 2*a**8*b**2*r**2 + a**8*r**4 - 2*a**6*b**6 + 2*a**6*b**4*c**2 + 6*a**6*b**4*r**2 - 4*a**6*b**2*c**2*r**2 - 6*a**6*b**2*r**4 + 2*a**6*c**2*r**4 + 2*a**6*r**6 + a**4*b**8 + 2*a**4*b**6*c**2 - 4*a**4*b**6*r**2 + a**4*b**4*c**4 - 6*a**4*b**4*c**2*r**2 + 6*a**4*b**4*r**4 - 2*a**4*b**2*c**4*r**2 + 6*a**4*b**2*c**2*r**4 - 4*a**4*b**2*r**6 + a**4*c**4*r**4 - 2*a**4*c**2*r**6 + a**4*r**8 + m**8*(a**4 - 2*a**2*b**2 + 2*a**2*c**2 + b**4 + 2*b**2*c**2 + c**4) + m**6*(-2*a**6 + 2*a**4*b**2 - 6*a**4*c**2 - 4*a**4*r**2 + 2*a**2*b**4 - 4*a**2*b**2*c**2 + 6*a**2*b**2*r**2 - 6*a**2*c**4 - 6*a**2*c**2*r**2 - 2*b**6 - 6*b**4*c**2 - 2*b**4*r**2 - 6*b**2*c**4 - 4*b**2*c**2*r**2 - 2*c**6 - 2*c**4*r**2) + m**4*(a**8 + 2*a**6*b**2 + 4*a**6*c**2 + 6*a**6*r**2 - 6*a**4*b**4 + 8*a**4*b**2*c**2 - 8*a**4*b**2*r**2 + 6*a**4*c**4 + 10*a**4*c**2*r**2 + 6*a**4*r**4 + 2*a**2*b**6 + 8*a**2*b**4*c**2 + 4*a**2*b**4*r**2 + 10*a**2*b**2*c**4 + 6*a**2*b**2*c**2*r**2 - 6*a**2*b**2*r**4 + 4*a**2*c**6 + 2*a**2*c**4*r**2 + 6*a**2*c**2*r**4 + b**8 + 4*b**6*c**2 - 2*b**6*r**2 + 6*b**4*c**4 - 6*b**4*c**2*r**2 + b**4*r**4 + 4*b**2*c**6 - 6*b**2*c**4*r**2 + 2*b**2*c**2*r**4 + c**8 - 2*c**6*r**2 + c**4*r**4) + m**2*(-2*a**8*b**2 - 2*a**8*r**2 + 2*a**6*b**4 - 6*a**6*b**2*c**2 + 4*a**6*b**2*r**2 - 6*a**6*c**2*r**2 - 6*a**6*r**4 + 2*a**4*b**6 - 4*a**4*b**4*c**2 - 8*a**4*b**4*r**2 - 6*a**4*b**2*c**4 + 6*a**4*b**2*c**2*r**2 + 10*a**4*b**2*r**4 - 6*a**4*c**4*r**2 - 2*a**4*c**2*r**4 - 4*a**4*r**6 - 2*a**2*b**8 - 6*a**2*b**6*c**2 + 6*a**2*b**6*r**2 - 6*a**2*b**4*c**4 + 10*a**2*b**4*c**2*r**2 - 6*a**2*b**4*r**4 - 2*a**2*b**2*c**6 + 2*a**2*b**2*c**4*r**2 - 2*a**2*b**2*c**2*r**4 + 2*a**2*b**2*r**6 - 2*a**2*c**6*r**2 + 4*a**2*c**4*r**4 - 2*a**2*c**2*r**6))
 
 =0
 
 
 分解成了两个偶数次的8次因子,有一个还是2次幂,相当于两个4次方程了,就可以正常求解了。
 
 求出来的正根m如果带入方程t有实数解,那就是一个符合的切点。所有符合的切点m的最大最小值就是所求的最大最小值。
 
 此方法很多光滑曲线距离问题或者说相切问题都可以。
 
 
 Python代码如下:
 
 # 曲线相切问题 copy by yuange 2023.10.22
 from sympy import *
 rn="\r\n"
 a,b,c,r,t=symbols('a b c r t',real=True)
 m=symbols('m',positive=True)
 f=(m*m-a*a)*(b*(1+t*t)+2*r*t)**2+m*m*(c*(1+t*t)+r*(1-t*t))**2-m*m*(m*m-a*a)*(1+t*t)**2
 g=diff(f,t)/4
 re,h=div(f,g,t)
 h1,h2=fraction(cancel(h))
 re,i=div(g,h1,t)
 i1,i2=fraction(cancel(i))
 re,j=div(h,i1,t)
 j1,j2=fraction(cancel(j))
 
 jf=collect(factor(j1),m)
 print(rn,rn,"jf=",jf)
 
 j=jf.evalf().subs({a:2.5,b:0.7,c:2.4,r:6})
 
 print(rn,rn,"j=",j)
 res=solve(j,m)
 print(rn,"ok!",res)
 
 
 最后带入这图中题目数据,得到m的方程为:
 j= (-m**8 + 68.2*m**6 - 1358.655*m**4 + 8412.3625*m**2 + 679.68359375)**2*(144.0*m**8 - 19152.0*m**6 + 763479.0*m**4 - 12321121.5*m**2 + 70929005.625)
 
 可以解方程求出精确解,数值解为:
 
 ok! [4.17001776116019, 6.22537143642668, 8.83832239143296]
 Pytho3IDE run end!
 
 
 
 结果三个相切情况,距离最大最小17..68和8.34。
 
 
 
 这题做出来通解还是有些难度的,没有数据的通解太复杂了。所幸有程序可以帮着处理一些数据,辗转相除没有程序手工不可能做出来,还有最后的分解。
 
 拉格朗日系数法、切线法等方法可以得到两个方程,最后要得到m的直接方程的形式也是很复杂的。
 
 换元得到多项式形式导数低一次就辗转相除可以消元。
 
 这方法距离之差双曲线等两曲线相切别的很多情况,都可以这么做。
 
 
 
 | 
 
  
  |