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

[讨论] 几何小题

[复制链接]
发表于 2023-8-21 10:04:34 | 显示全部楼层
这次直接用四个点都在圆上列方程组来解决问题。
  1. Clear["Global`*"];(*清除所有变量*)
  2. (*子函数,输入z=a+b*I,得到圆方程(a-x0)^2+(b-y0)^2-r0^2*)
  3. zCircle[z_]:=Module[{a,b},
  4.     {a,b}=ComplexExpand@ReIm[z];(*得到实数部分、虚数部分*)
  5.     (a-x0)^2+(b-y0)^2-r0^2(*得到圆的方程*)
  6. ]
  7. (*圆上的四个复数点赋值*)
  8. z1=-2-2*I;
  9. z2=-2;
  10. z3=a+b*I;(*求解变量a、b*)
  11. z4=c+d*I;(*求解变量c、d*)
  12. (*利用行列式等列方程组解决问题*)
  13. ans=Solve[
  14. {
  15.     zCircle[z1]==0,(*z1在圆上*)
  16.     zCircle[z2]==0,(*z2在圆上*)
  17.     zCircle[z3]==0,(*z3在圆上*)
  18.     zCircle[z4]==0,(*z4在圆上*)
  19.     ComplexExpand@ReIm[z4-z3*(1-I)]==0,(*顺时针旋转45°,放大根号2倍*)
  20.     a^2+b^2==1^2,(*z1的模长度=1*)
  21.     r0>0(*限制变量范围*)
  22. },{a,b,c,d,x0,y0,r0}]//FullSimplify
  23. Grid[ans,Alignment->Left](*列表显示*)
复制代码


求解结果
\[\begin{array}{lllllll}
a\to -\frac{1}{\sqrt{2}} & b\to -\frac{1}{\sqrt{2}} & c\to -\sqrt{2} & d\to 0 & \text{x0}\to -1-\frac{1}{\sqrt{2}} & \text{y0}\to -1 & \text{r0}\to \sqrt{\frac{5}{2}-\sqrt{2}} \\
a\to \frac{1}{\sqrt{2}} & b\to \frac{1}{\sqrt{2}} & c\to \sqrt{2} & d\to 0 & \text{x0}\to \frac{1}{\sqrt{2}}-1 & \text{y0}\to -1 & \text{r0}\to \sqrt{\sqrt{2}+\frac{5}{2}} \\
\end{array}\]

方程组就是牛逼!

点评

nyy
代码太清晰易懂了,连我自己都忍不住赞美一下!  发表于 2023-8-21 11:42
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-8-21 12:18:30 | 显示全部楼层
nyy 发表于 2023-8-21 09:10
请恕我直言:
你的方法太WC了!
你假设

有道理,改一下。

圆外接四边形ABCD,BC=2R

由三角形AOD:\(\D\frac{1}{\sin(a)}=\frac{2}{\sin(b)}=\frac{AD}{\sin(a+b)}\)   (1)

由三角形ABD:\(\D\frac{2}{\sin(b)}=\frac{AD}{\cos(a+b)}\)     (2)

\(\cdots\cdots\)

点评

nyy
我画图,发现对不上!  发表于 2023-8-21 16:21
nyy
配图  发表于 2023-8-21 16:08
nyy
mathematica解方程组太厉害了,我太喜欢了!  发表于 2023-8-21 12:38
nyy
配上你的图!  发表于 2023-8-21 12:32
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-8-21 14:16:42 | 显示全部楼层
王守恩 发表于 2023-8-21 12:18
有道理,改一下。

圆外接四边形ABCD,BC=2R

使用托勒密定理来求解问题!

  1. Clear["Global`*"];(*清除所有变量*)
  2. (*子函数,输入z=a+b*I,得到圆方程(a-x0)^2+(b-y0)^2-r0^2*)
  3. zCircle[z_]:=Module[{a,b},
  4.     {a,b}=ComplexExpand@ReIm[z];(*得到实数部分、虚数部分*)
  5.     (a-x0)^2+(b-y0)^2-r0^2(*得到圆的方程*)
  6. ]
  7. (*圆上的四个复数点赋值*)
  8. z1=-2-2*I;
  9. z2=-2;
  10. z3=x3+y3*I;(*求解变量x3,y3*)
  11. z4=x4+y4*I;(*求解变量x4,y4*)
  12. (*计算四边形的四边的长度与对角线的长度*)
  13. a=ComplexExpand@Abs[z1-z2];(*边长a*)
  14. b=ComplexExpand@Abs[z2-z3];(*边长b*)
  15. c=ComplexExpand@Abs[z3-z4];(*边长c*)
  16. d=ComplexExpand@Abs[z4-z1];(*边长d*)
  17. e=ComplexExpand@Abs[z1-z3];(*对角线e*)
  18. f=ComplexExpand@Abs[z2-z4];(*对角线f*)
  19. (*用方程组来解决问题*)
  20. ans=Solve[
  21. {
  22.     a*c+b*d==e*f,(*四点共圆,因此满足托勒密定理*)
  23.     ComplexExpand@ReIm[z4-z3*(1-I)]==0,(*顺时针旋转45°,放大根号2倍*)
  24.     x3^2+y3^2==1^2,(*z1的模长度=1*)
  25.     (*下面三个方程只是为了求解圆心与半径*)
  26.     zCircle[z1]==0,(*z1在圆上*)
  27.     zCircle[z2]==0,(*z2在圆上*)
  28.     zCircle[z3]==0,(*z3在圆上*)
  29.     r0>0(*限制变量范围*)
  30. },{x3,y3,x4,y4,x0,y0,r0}]//FullSimplify
  31. Grid[ans,Alignment->Left](*列表显示*)
复制代码


求解结果
\[\begin{array}{lllllll}
\text{x3}\to \frac{1}{\sqrt{2}} & \text{y3}\to \frac{1}{\sqrt{2}} & \text{x4}\to \sqrt{2} & \text{y4}\to 0 & \text{x0}\to \frac{1}{\sqrt{2}}-1 & \text{y0}\to -1 & \text{r0}\to \sqrt{\sqrt{2}+\frac{5}{2}} \\
\end{array}\]

结果只能求解出一组,因为列方程时限制了z1 z3为对顶的顶点,而实际上另外一组解z1 z3不是顶点,因此不满足托勒密定理

点评

nyy
代码写的很清晰,就是让我自己求解就犯难!  发表于 2023-8-21 15:30
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-8-21 16:40:04 | 显示全部楼层
nyy 发表于 2023-8-21 08:59
利用复数的行列式与复数四点共圆条件,来判定四点共圆。

现在来看一下,四点共圆的行列式判别与复数判别的联系。

  1. Clear["Global`*"];(*清除所有变量*)
  2. (*圆上的四个复数点赋值*)
  3. z1=a+b*I;
  4. z2=c+d*I;
  5. z3=e+f*I;
  6. z4=g+h*I;
  7. (*得到四点共圆矩阵*)
  8. aaa={#1^2+#2^2,#1,#2,1}&@@@ComplexExpand@ReIm[{z1,z2,z3,z4}]//Factor
  9. bbb=Det[aaa](*计算矩阵对应的行列式*)
  10. ccc=ComplexExpand@Im[(z1-z2)(z3-z4)/((z1-z3)(z2-z4))]//Factor
  11. ddd=bbb/Numerator[ccc]//FullSimplify(*查看行列式与虚部的分子的比值*)
复制代码


行列式的值
b c^2 e - a^2 d e - b^2 d e + b d^2 e - b c e^2 + a d e^2 + a^2 c f +
b^2 c f - a c^2 f - a d^2 f - b c f^2 + a d f^2 - b c^2 g + a^2 d g +
  b^2 d g - b d^2 g + b e^2 g - d e^2 g - a^2 f g - b^2 f g +
c^2 f g + d^2 f g + b f^2 g - d f^2 g + b c g^2 - a d g^2 - b e g^2 +
  d e g^2 + a f g^2 - c f g^2 - a^2 c h - b^2 c h + a c^2 h +
a d^2 h + a^2 e h + b^2 e h - c^2 e h - d^2 e h - a e^2 h + c e^2 h -
  a f^2 h + c f^2 h + b c h^2 - a d h^2 - b e h^2 + d e h^2 +
a f h^2 - c f h^2

复数判别的虚部的值
(b c^2 e - a^2 d e - b^2 d e + b d^2 e - b c e^2 + a d e^2 + a^2 c f +
    b^2 c f - a c^2 f - a d^2 f - b c f^2 + a d f^2 - b c^2 g +
   a^2 d g + b^2 d g - b d^2 g + b e^2 g - d e^2 g - a^2 f g -
   b^2 f g + c^2 f g + d^2 f g + b f^2 g - d f^2 g + b c g^2 -
   a d g^2 - b e g^2 + d e g^2 + a f g^2 - c f g^2 - a^2 c h -
   b^2 c h + a c^2 h + a d^2 h + a^2 e h + b^2 e h - c^2 e h -
   d^2 e h - a e^2 h + c e^2 h - a f^2 h + c f^2 h + b c h^2 -
   a d h^2 - b e h^2 + d e h^2 + a f h^2 -
   c f h^2)/((a^2 + b^2 - 2 a e + e^2 - 2 b f + f^2) (c^2 + d^2 -
     2 c g + g^2 - 2 d h + h^2))
前者与后者的分子比值=1

复数判别的虚部的分母的化简
((a - e)^2 + (b - f)^2) ((c - g)^2 + (d - h)^2)
分母等于零的条件
z1=z3或者z2=z4

所以我认为行列式判别与复数商的判别的办法,两者完全是一回事!

点评

nyy
但是行列式的判别更好记忆。复数判别有点难记忆  发表于 2023-8-21 16:40
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-8-21 17:04:08 | 显示全部楼层
本帖最后由 nyy 于 2023-8-21 17:18 编辑
王守恩 发表于 2023-8-20 18:35
补充10#。圆外接四边形ABCD,O为AC,BD交点,AB=AO=2,CD=DO=1,

由三角形AOD:\(\D\frac{1}{\sin(a)}=\frac{2 ...


直接抛弃复数,使用解析几何的办法。

  1. Clear["Global`*"];(*清除所有变量*)
  2. deg=Pi/180;(*角度制下1°所对应的弧度*)
  3. (*子函数,定义圆的方程*)
  4. circle[x_,y_]:=(x-x0)^2+(y-y0)^2-r0^2(*(x0,y0)为圆心,r0为半径*)
  5. (*四个点坐标赋值,以两个正方形的公共点为原点建立坐标系*)
  6. pt1={-2,-2};
  7. pt2={-2,0};
  8. pt3={a,b};
  9. pt4=Sqrt[2]*RotationMatrix[-45deg].pt3//Simplify(*顺时针旋转45°,放大根号2倍*)
  10. (*得到四点共圆矩阵*)
  11. aaa={#1^2+#2^2,#1,#2,1}&@@@{pt1,pt2,pt3,pt4}//Factor
  12. (*列方程组求解出pt3(a,b),然后再求解出圆心与半径*)
  13. ans=Solve[{
  14.     Det[aaa]==0,(*矩阵对应的行列式等于零*)
  15.     a^2+b^2==1^2,(*长度=1*)
  16.     (*以下三个方程仅仅只是为了求解圆心与半径*)
  17.     circle@@pt1==0,(*pt1在圆上*)
  18.     circle@@pt2==0,(*pt2在圆上*)
  19.     circle@@pt3==0,(*pt3在圆上*)
  20.     r0>0(*限制变量范围*)
  21. },{a,b,x0,y0,r0}]//Simplify(*指明求解变量*)
  22. Grid[ans,Alignment->Left](*列表显示*)
复制代码


求解结果
\[\begin{array}{lllll}
a\to -\frac{1}{\sqrt{2}} & b\to -\frac{1}{\sqrt{2}} & \text{x0}\to -1-\frac{1}{\sqrt{2}} & \text{y0}\to -1 & \text{r0}\to \sqrt{\frac{5}{2}-\sqrt{2}} \\
a\to \frac{1}{\sqrt{2}} & b\to \frac{1}{\sqrt{2}} & \text{x0}\to \frac{1}{\sqrt{2}}-1 & \text{y0}\to -1 & \text{r0}\to \sqrt{\sqrt{2}+\frac{5}{2}} \\
\end{array}\]

QQ截图20230821171457.png

点评

nyy
红色的是需要求的变量  发表于 2023-8-21 17:19
nyy
上传一张图,这样更容易理解代码,虽然没图也能理解代码,但是我感觉我有强迫症  发表于 2023-8-21 17:19
nyy
个人认为这题用不用复数无所谓,和解析几何应该是等价的  发表于 2023-8-21 17:06
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-8-21 19:22:53 | 显示全部楼层
nyy 发表于 2023-8-18 14:12
假设圆的方程为
\[-\text{r0}^2+(x-\text{x0})^2+y^2==0\]
然后解析几何来解决问题

请问这个里面用的是什么软件计算出来的结果?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-8-22 13:33:32 | 显示全部楼层
王守恩 发表于 2023-8-22 10:45
19楼点评,有问题吗?
小学生做不了:∠ADC=90+b=>∠ABC=90-b=>AB所得对圆心角=2b=>AB所得对圆周角=b=>BOD ...

这一次我选用托勒密定理与余弦定理相结合来解决问题,来求解方程组。

  1. Clear["Global`*"];(*清除所有变量*)
  2. deg=Pi/180;(*角度制下1°所对应的弧度*)
  3. (*子函数,利用三边计算角的余弦值,角是c边所对的角*)
  4. cs[a_,b_,c_]:=((a^2+b^2-c^2)/(2*a*b))
  5. (*用余弦定理与托勒密定理建立方程组解决问题*)
  6. ans=Solve[{
  7.     cs[1,2,BG]==Cos[180deg-beta],(*△ABG中用余弦定理求BG*)
  8.     cs[Sqrt[8],Sqrt[2],CF]==Cos[90deg+beta],(*△ACF中用余弦定理求CF*)
  9.     (*求四边形BCFG的两条对角线的长度*)
  10.     cs[2,Sqrt[2],BF]==Cos[(90+45)deg+beta],
  11.     cs[Sqrt[8],1,CG]==Cos[(90+45)deg+beta],
  12.     2*1+BG*CF==BF*CG,(*托勒密定理*)
  13.     0<=beta<=360deg&&BG>0&&CF>0&&BF>0&&CG>0(*限制变量范围*)
  14. },{beta,BG,CF,BF,CG},Method->Reduce]//FullSimplify
复制代码


求解结果
\[\left\{\left\{\text{beta}\to \frac{\pi }{4},\text{BG}\to \sqrt{2 \sqrt{2}+5},\text{CF}\to \sqrt{4 \sqrt{2}+10},\text{BF}\to \sqrt{2}+2,\text{CG}\to 2 \sqrt{2}+1\right\}\right\}\]

由于β=45°,所以CAG共线,所以CF是圆的直径,所以圆的半径也就容易求解了!
QQ截图20230822132728.png

点评

nyy
不知道是否能结合正弦定理来求解  发表于 2023-8-22 13:36
nyy
方程组求解估计很难,具体我也不知道如何求解  发表于 2023-8-22 13:34
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-8-22 14:02:20 | 显示全部楼层
nyy 发表于 2023-8-22 13:33
这一次我选用托勒密定理与余弦定理相结合来解决问题,来求解方程组。

继续用楼上图,如果用对角互补,与余弦定理,肯定能求解出来,但是方程组mathematica解不出来。

  1. Clear["Global`*"];(*清除所有变量*)
  2. deg=Pi/180;(*角度制下1°所对应的弧度*)
  3. (*子函数,利用三边计算角的余弦值,角是c边所对的角*)
  4. cs[a_,b_,c_]:=((a^2+b^2-c^2)/(2*a*b))
  5. (*用余弦定理与四点共圆对角互补建立方程组解决问题*)
  6. ans=Solve[{
  7.     cs[1,2,BG]==Cos[180deg-beta],(*△ABG中用余弦定理求BG*)
  8.     cs[Sqrt[8],Sqrt[2],CF]==Cos[90deg+beta],(*△ACF中用余弦定理求CF*)
  9.     (*四点共圆对角互补,∠CBG+∠CFG=180°*)
  10.     (ArcCos@cs[BG,2,1]+90deg)+(ArcCos@cs[Sqrt[2],CF,Sqrt[8]]+45deg)==180deg,
  11.     BG>0&&CF>0&&0<=beta<=360deg(*限制变量范围*)
  12. },{BG,CF,beta},Method->Reduce]//FullSimplify
复制代码


我把方程组丢在这,也许有后来人能改进!

点评

nyy
方程组可以通过先数值解,再精确解的办法!  发表于 2023-8-24 09:24
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-8-22 14:23:11 | 显示全部楼层
nyy 发表于 2023-8-22 14:02
继续用楼上图,如果用对角互补,与余弦定理,肯定能求解出来,但是方程组mathematica解不出来。
  1. Clear["Global`*"];(*清除所有变量*)
  2. deg=Pi/180;(*角度制下1°所对应的弧度*)
  3. (*以A为原点建立坐标系*)
  4. (*4个点赋值*)
  5. {xa,ya}={0,0}
  6. {xb,yb}={-2,0};
  7. {xc,yc}={-2,-2};
  8. (*顺时针旋转45°,放大根号2倍*)
  9. {xf,yf}=Sqrt[2]*RotationMatrix[-45deg].{xg,yg}//Simplify
  10. (*计算斜率*)
  11. k1=(yg-yb)/(xg-xb)(*BG斜率*)
  12. k2=(yf-ya)/(xf-xa)(*AF斜率*)
  13. k3=(yf-yc)/(xf-xc)(*CF斜率*)
  14. k32=(k3-k2)/(1+k3*k2)(*k2转到k3的角的正切*)
  15. (*列方程组解决问题*)
  16. ans=Solve[{
  17.     xg^2+yg^2==1^2,(*AG=1*)
  18.     (*四点共圆对角互补,∠CBG+∠CFG=180°*)
  19.     (k1+k32)/(1-k1*k32)==1(*两个角相加等于180-90-45=45°*)
  20. },{xg,yg}]//FullSimplify
复制代码


解析几何,利用对角互补,得到两个角的反正切相加等于45°,然后列方程解决问题。
求解结果
\[\begin{array}{ll}
\text{xg}\to -\frac{1}{\sqrt{2}} & \text{yg}\to -\frac{1}{\sqrt{2}} \\
\text{xg}\to \frac{1}{\sqrt{2}} & \text{yg}\to \frac{1}{\sqrt{2}} \\
\end{array}\]

坐标都求解出来了,剩下的一切都很简单了。

配图如下:
QQ截图20230822142033.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-8-22 15:27:29 | 显示全部楼层
本帖最后由 nyy 于 2023-8-22 15:32 编辑
nyy 发表于 2023-8-22 13:33
这一次我选用托勒密定理与余弦定理相结合来解决问题,来求解方程组。


正弦版本的求解来了。

假设a b 两个角,如图上所标示:
用正弦定理列方程组求解问题:

  1. Clear["Global`*"];(*清除所有变量*)
  2. deg=Pi/180;(*角度制下1°所对应的弧度*)
  3. ans=Solve[{
  4.     2/Sin[a]==1/Sin[b],(*△ABG中正弦定理*)
  5.     Sqrt[8]/Sin[45deg-b]==Sqrt[2]/Sin[45deg-a],(*△ACF中正弦定理*)
  6.     beta==a+b,
  7.     0<=b<=a<=180deg&&0<=beta<=360deg(*限制变量范围*)
  8. },{a,b,beta},Method->Reduce]//FullSimplify
复制代码


\[\left\{\left\{a\to \frac{1}{4} \left(\pi +8 \tan ^{-1}\left(2 \sqrt{2}-\sqrt{4 \sqrt{2}+10}+1\right)\right),b\to -2 \tan ^{-1}\left(2 \sqrt{2}-\sqrt{4 \sqrt{2}+10}+1\right),\text{beta}\to \frac{\pi }{4}\right\}\right\}\]

beta求解出来了,剩下的一切都简单了!

计算一下a b角的正弦与正切,
  1. aaa={Sin[a],Sin[b],Tan[a],Tan[b]}/.ans//FullSimplify
复制代码

得到结果
\[\left(
\begin{array}{cccc}
\sqrt{\frac{2}{17} \left(5-2 \sqrt{2}\right)} & \sqrt{\frac{1}{34} \left(5-2 \sqrt{2}\right)} & 2-\sqrt{2} & \frac{1}{7} \left(2 \sqrt{2}-1\right) \\
\end{array}
\right)\]

mathematica的化简结果太丑了,所以我人工化简一下
QQ截图20230822152250.png

点评

nyy
由于对角互补,所以∠AFC=v180-90-45-b=45-b,再根据三角形内角和=180,得到∠ACF=45-a  发表于 2023-8-22 15:29
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-5-27 09:25 , Processed in 0.082342 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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