找回密码
 欢迎注册
楼主: mathematica

[提问] 如何使得角度最大?

[复制链接]
 楼主| 发表于 2020-1-17 14:52:35 | 显示全部楼层
mathe 发表于 2020-1-16 18:56
对A,B两点张角相等的点应该是过A,B两点的圆弧绕AB轴得到的图形。角度不同,得到的图不同,但是同样,和目 ...
  1. Clear["Global`*"];
  2. a=0
  3. b=1
  4. c=0
  5. d=6
  6. e=2
  7. f=2
  8. (*子函数,用来计算两点的距离*)
  9. dis[x1_,y1_,z1_,x2_,y2_,z2_]=Sqrt[(x1-x2)^2+(y1-y2)^2+(z1-z2)^2]
  10. (*计算出两个矢量的夹角的余弦值*)
  11. alpha=((a-x)*(d-x)+(b-0)*(e-0)+(c-0)*(f-0))/(dis[a,b,c,x,0,0]*dis[d,e,f,x,0,0])//FullSimplify
  12. (*求解余弦值对x的导数*)
  13. kx=D[alpha,{x}]//FullSimplify
  14. (*求解导数等于零的x*)
  15. out=Solve[kx==0,{x}]//FullSimplify
  16. (*画出夹角关于x的函数图*)
  17. Plot[ArcCos[alpha]*180/Pi,{x,-20,20},PlotRange->All]
复制代码

A(0,1,0) B(6,2,2)
求解结果
{{x -> 2.38836}, {x -> -2.99418 - 3.48385 I}, {x -> -2.99418 + 3.48385 I}}

结合上图的结果,我猜测:如果最大角能够大于90度,那么就只有一个极值,如果最大角小于90度,那么就有三个极值!

QQ截图20200117145121.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-1-17 15:46:22 | 显示全部楼层
本帖最后由 sheng_jianguo 于 2020-1-19 15:29 编辑
mathematica 发表于 2020-1-17 14:52
A(0,1,0) B(6,2,2)
求解结果
{{x -> 2.38836}, {x -> -2.99418 - 3.48385 I}, {x -> -2.99418 + 3.48 ...


你的猜测不对,如:
A(0,2,1) B(0,3,2),最大夹角约14.5°(P点可在两个不同点都达到此最大值),但明显有三个极值!
这个例子也说明,最大值可发生在两个不同的点(解不是唯一的)。
我估计极值点个数与线段AB与x轴的距离有关,当超过一定距离时,只有一个极值点。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-2-19 20:43:41 | 显示全部楼层
mathematica 发表于 2020-1-9 12:55
你可以尝试三维空间的点,
比如A(a,b,c)   B(d,e,f)
然后直线是x轴,

利用空余时间,推导出三维空间的以下分析结果,不知是否还有更好的结果

【题目】三维欧氏空间中两定点A(a,b,c),B(d,e,f)及动点P(x,0,0),求x使PA与PB的夹角最大。

注:为使分析中的公式简洁统一,后面分析讨论中假定过A、B点直线与x轴不共面(b*f-c*e≠0,(b-e)^2+(c-f)^2≠0)。对于共面的情况,(即退化为二维欧氏空间情况),求解最大夹角方法较为简单,前面已详细分析讨论过。虽然假定过A、B点直线与x轴不共面,然而下面解答中有些推导分析结果,对某些过A、B点直线与x轴共面情况仍然是成立的。

一. 几何分析
设t为线段AB的半长,t=(1/2)*((a-d)^2+(b-e)^2+(c-f)^2)^(1/2);
s为过A、B点直线与x轴的距离,s=((b*f-c*e)^2))^(1/2)*((b-e)^2+(c-f)^2)^(-1/2);
Ra为过A、B和D三点(D点到AB中点C的距离为s,且CD⊥AB)的圆, Ra=(t^2+s^2)/(2*s);
Rb为过A、B和E((a+d)/2,0,0)三点圆的半径,Rb=a1*b1*c1/(4*S1)
其中:a1=2*t; b1= (((a-d)/2)^2+b^2+c^2)^(1/2); c1= (((a-d)/2)^2+e^2+f^2)^(1/2);
   S1=(s1*(s1-a1)*(s1-b1)*(s1-c1))^(1/2); s1=(a1+b1+c1)/2
1.如果以A、B点连线为直径的半圆绕AB旋转形成的球与x轴相交
  则过A、B点半径为R(R从Ra逐渐过渡到t)的小圆弧绕AB旋转形成的体(见图1)中,必有一个体与x轴相切,切点P就是要求的最大夹角点。
2.如果以A、B点连线为直径的半圆绕AB旋转形成的球与x轴不相交
  则过A、B点半径为R(R从t逐渐过渡到Rb)的大圆弧绕AB旋转形成的体(见图2)中,必有体与x轴相切,其第一个体(R最小的体)的切点P就是要求的最大夹角点。

注:图1和图2中的体具有以下特征:
  对某个确定的体(R不变),在体表面上(除了A、B两点)的任何动点D,DA与DB的夹角为不变定值(对于图1的不相同体,R越大DA与DB的夹角越大,对于图2的不相同体,R越大DA与DB的夹角越小);体内的任何点E,EA与EB的夹角大于DA与DB的夹角; 体外的任何点F,FA与FB的夹角小于DA与DB的夹角。体在切点P附近(除P外)的切线若都在体外,则P为极大值点;若都在体内,则P为极小值点(仅发生在图2的体);若一边点在体外,另一边点在体内,则P为拐点(仅发生在图2的体)。
ZDJJS03.db001.png
ZDJJS03.db002.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-2-19 20:44:56 | 显示全部楼层
二. 数值分析
设α(x)为PA与PB的夹角函数,则
α(x)=arccos(β(x)) 其中:
β(x)=((a-x)*(d-x)+b*e+c*f)/(((a-x)^2+b^2+c^2)^(1/2)*((d-x)^2+e^2+f^2)^(1/2))
由于当x →±∞时α(x) →0,且α(x)是大于0的有界可导函数,故α(x)的最大值存在,达到最大值的x必满足α'(x)=0,α'(x)是α(x)的导函数。
α'(x)=f(x)*g(x)
其中f(x)=(1-β(x)*β(x))^(-1/2)*(((x-a)^2+b^2+c^2)*((x-d)^2+e^2+f^2))^(-3/2)>0;
    g(x)=(e*(a-x)+b*(x-d))*(e*(a-x)^2-b*(x-d)^2+b^2*e-b*e^2)
    +c^2*((d-x)*((d-x)^2+e^2)+e*(e*(a-x)+b*(x-d)))
    +f^2*((a-x)*((a-x)^2+b^2)+b*(b*(d-x)+e*(x-a)))
    +c*f*((x-a)*((x-d)^2+e^2)+(x-d)*((x-a)^2+b^2))
    +c^2*f^2*((a-x)+(d-x))+c*f^3*(x-a)+c^3*f*(x-d) 是x的一元三次函数
故所求的x必满足g(x)=0,也就是说,所求的x必是g(x)=0的三个根中的某实根。
所以,若g(x)=0实根xi满足α(xi)≥α(xj)(xj是g(x)=0任一实根),则xi就是所求的x。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-2-19 20:45:51 | 显示全部楼层
三. 极值分析
为使分析PA与PB的夹角函数α(x)的极值分布状况简洁明了,将A、B两点移动到A1(-m,y0-h,z0)和B1(m,y0+h,z0)两点,使得PA1与PB1的夹角函数α1(x)=α(k*x+x0)(α(x)为PA与PB的夹角函数,x0为AB中点的x坐标,k=1或k=-1),由于α(x)和α(k*x+x0)的极值分布状况相同,故移动A、B两点后的夹角函数的极值大小及分布状况不变,故只要分析PA1与PB1的夹角函数的极值分布状况就可以了。具体方法步骤如下:
1. A、B两点绕x轴旋转,使得旋转后两点的z坐标都是正值且相等(两点旋转后的z坐标z0只能是过A、B点直线与x轴的距离s)。
2.若x0≠0,再沿x轴方向平移A、B两点,使得平移后x0=0。
3.若A点的x坐标大于B点的x坐标,再对换A、B两点(将B点称为A;将A点称为B)。
4.若y0<0(y0为AB中点的y坐标),再将A、B两点移动到y=0平面的对称点。
5.若A点的y坐标大于B点的x坐标,再将A、B两点移动到y=y0平面的对称点(这时将k=1改为k=-1)。
A、B两点按上面步骤移动后的坐标计算公式为
x坐标:Ax=-m; Bx=m; m=(1/2)*((a-d)^2)^(1/2) ≥0
y坐标:Ay=y0-h; By=y0+h;
    y0=(1/2)*((b^2-e^2+c^2-f^2)^2)^(1/2)*((b-e)^2+(c-f)^2)^(-1/2) ≥0;
     h=(1/2)*((b-e)^2+(c-f)^2)^(1/2) >0
z坐标:Az=Bz=z0; z0=((b*f-c*e)^2)^(1/2)*((b-e)^2+(c-f)^2)^(-1/2)=s >0
对于A1(-m,y0-h,z0)、B1(m,y0+h,z0)两点及动点P(x,0,0),PA1与PB1的夹角函数为
α1(x)=arccos(β1(x))
β1(x)=((x+m)*(x-m)+(y0^2-h^2)+s^2)/(((x+m)^2+(y0-h)^2+s^2)^(1/2)*((x-m)^2+(y0+h)^2+s^2)^(1/2))
α1(x)的导函数α1'(x)=f1(x)*g1(x)
f1(x)=-4*(1-β1(x)*β1(x))^(-1/2)*(((x+m)^2+(y0-h)^2+s^2)*((x-m)^2+(y0+h)^2+s^2))^(-3/2) <0;
g1(x)=a'*x^3+b'*x^2+c'*x+d' 是x的一元三次函数,其中
  a'=h^2;b'=3*m*h*y0;c'=2*m^2*y0^2+m^2*h^2+2*m^2*s^2+h^2*s^2+h^4-h^2*y0^2;
  d'=m*h*(m^2*y0-y0^3+h^2*y0-y0*s^2)
令Δ=(1/27)*p^3+(1/4)*q^2,其中
p=(3*a'*c'-b'^2)/(3*a'^2)=((2*m^2+h^2)*s^2-(m^2+h^2)*(y0^2-h^2))/h^2
q=(2*b'^3-9*a'*b'*c'+27*a'^2*d')/(27*a'^3)=-2*m*y0*(m^2+h^2)*s^2/h^3
当Δ<0时,方程g1(x)=0有三个不同的实根,α1(x)有两个极大值点和一个极小值点。
当Δ>0时,方程g1(x)=0只有一个实根,α1(x)只有一个极大值点。
当Δ=0时,方程g1(x)=0有一个(或二个)不同的实根,α1(x)有一个极大值点(或一个极大值点和一个拐点)。
1. m=0
g1(x)=h^2*(x^2-(y0^2-s^2-h^2))*x
故当s^2≥y0^2-h^2时g1(x)=0只有x=0的实根,α1(x)只有一个极大值点。
当s^2<y0^2-h^2时g1(x)=0有三个不同的实根,α1(x)有两个极大值的点(两极大值相等)和一个极小值点。
2. m≠0
1) y0≤h
因p>0,推得Δ>0故g1(x)=0只有一个实根,α1(x)只有一个极大值点。
2) y0>h且s≥sp(其中sp=((m^2+h^2)*(y0^2-h^2)/(2*m^2+h^2))^(1/2))
因p≥0,推得Δ>0故g1(x)=0只有一个实根,α1(x)只有一个极大值点。
3) y0>h且s<sp
因Δ=1/h^6*((1/27)*((2*m^2+h^2)*s^2-(m^2+h^2)*(y0^2-h^2))^3+(m*y0*(m^2+h^2)*s^2)^2)
说明Δ是s的单调递增函数,且s=0时,Δ<0;s=sp时,Δ>0,故存在唯一s,满足Δ=0,令满足Δ=0的s为s0。
当s<s0时,g1(x)=0有三个不同的实根,α1(x)有两个极大值点(两极大值不相等)和一个极小值点。
当s>s0时,g1(x)=0只有一个实根,α1(x)只有一个极大值点。
当s=s0时,g1(x)=0只有两个不同的实根,α1(x)有一个极大值点和一个拐点。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-11-23 10:11 , Processed in 0.023451 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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