nyy
发表于 2023-8-21 10:04:34
这次直接用四个点都在圆上列方程组来解决问题。
Clear["Global`*"];(*清除所有变量*)
(*子函数,输入z=a+b*I,得到圆方程(a-x0)^2+(b-y0)^2-r0^2*)
zCircle:=Module[{a,b},
{a,b}=ComplexExpand@ReIm;(*得到实数部分、虚数部分*)
(a-x0)^2+(b-y0)^2-r0^2(*得到圆的方程*)
]
(*圆上的四个复数点赋值*)
z1=-2-2*I;
z2=-2;
z3=a+b*I;(*求解变量a、b*)
z4=c+d*I;(*求解变量c、d*)
(*利用行列式等列方程组解决问题*)
ans=Solve[
{
zCircle==0,(*z1在圆上*)
zCircle==0,(*z2在圆上*)
zCircle==0,(*z3在圆上*)
zCircle==0,(*z4在圆上*)
ComplexExpand@ReIm==0,(*顺时针旋转45°,放大根号2倍*)
a^2+b^2==1^2,(*z1的模长度=1*)
r0>0(*限制变量范围*)
},{a,b,c,d,x0,y0,r0}]//FullSimplify
Grid(*列表显示*)
求解结果
\[\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}\]
方程组就是牛逼!
王守恩
发表于 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 14:16:42
王守恩 发表于 2023-8-21 12:18
有道理,改一下。
圆外接四边形ABCD,BC=2R
使用托勒密定理来求解问题!
Clear["Global`*"];(*清除所有变量*)
(*子函数,输入z=a+b*I,得到圆方程(a-x0)^2+(b-y0)^2-r0^2*)
zCircle:=Module[{a,b},
{a,b}=ComplexExpand@ReIm;(*得到实数部分、虚数部分*)
(a-x0)^2+(b-y0)^2-r0^2(*得到圆的方程*)
]
(*圆上的四个复数点赋值*)
z1=-2-2*I;
z2=-2;
z3=x3+y3*I;(*求解变量x3,y3*)
z4=x4+y4*I;(*求解变量x4,y4*)
(*计算四边形的四边的长度与对角线的长度*)
a=ComplexExpand@Abs;(*边长a*)
b=ComplexExpand@Abs;(*边长b*)
c=ComplexExpand@Abs;(*边长c*)
d=ComplexExpand@Abs;(*边长d*)
e=ComplexExpand@Abs;(*对角线e*)
f=ComplexExpand@Abs;(*对角线f*)
(*用方程组来解决问题*)
ans=Solve[
{
a*c+b*d==e*f,(*四点共圆,因此满足托勒密定理*)
ComplexExpand@ReIm==0,(*顺时针旋转45°,放大根号2倍*)
x3^2+y3^2==1^2,(*z1的模长度=1*)
(*下面三个方程只是为了求解圆心与半径*)
zCircle==0,(*z1在圆上*)
zCircle==0,(*z2在圆上*)
zCircle==0,(*z3在圆上*)
r0>0(*限制变量范围*)
},{x3,y3,x4,y4,x0,y0,r0}]//FullSimplify
Grid(*列表显示*)
求解结果
\[\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 16:40:04
nyy 发表于 2023-8-21 08:59
利用复数的行列式与复数四点共圆条件,来判定四点共圆。
现在来看一下,四点共圆的行列式判别与复数判别的联系。
Clear["Global`*"];(*清除所有变量*)
(*圆上的四个复数点赋值*)
z1=a+b*I;
z2=c+d*I;
z3=e+f*I;
z4=g+h*I;
(*得到四点共圆矩阵*)
aaa={#1^2+#2^2,#1,#2,1}&@@@ComplexExpand@ReIm[{z1,z2,z3,z4}]//Factor
bbb=Det(*计算矩阵对应的行列式*)
ccc=ComplexExpand@Im[(z1-z2)(z3-z4)/((z1-z3)(z2-z4))]//Factor
ddd=bbb/Numerator//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 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 ...
直接抛弃复数,使用解析几何的办法。
Clear["Global`*"];(*清除所有变量*)
deg=Pi/180;(*角度制下1°所对应的弧度*)
(*子函数,定义圆的方程*)
circle:=(x-x0)^2+(y-y0)^2-r0^2(*(x0,y0)为圆心,r0为半径*)
(*四个点坐标赋值,以两个正方形的公共点为原点建立坐标系*)
pt1={-2,-2};
pt2={-2,0};
pt3={a,b};
pt4=Sqrt*RotationMatrix[-45deg].pt3//Simplify(*顺时针旋转45°,放大根号2倍*)
(*得到四点共圆矩阵*)
aaa={#1^2+#2^2,#1,#2,1}&@@@{pt1,pt2,pt3,pt4}//Factor
(*列方程组求解出pt3(a,b),然后再求解出圆心与半径*)
ans=Solve[{
Det==0,(*矩阵对应的行列式等于零*)
a^2+b^2==1^2,(*长度=1*)
(*以下三个方程仅仅只是为了求解圆心与半径*)
circle@@pt1==0,(*pt1在圆上*)
circle@@pt2==0,(*pt2在圆上*)
circle@@pt3==0,(*pt3在圆上*)
r0>0(*限制变量范围*)
},{a,b,x0,y0,r0}]//Simplify(*指明求解变量*)
Grid(*列表显示*)
求解结果
\[\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}\]
EulerKepler
发表于 2023-8-21 19:22:53
nyy 发表于 2023-8-18 14:12
假设圆的方程为
\[-\text{r0}^2+(x-\text{x0})^2+y^2==0\]
然后解析几何来解决问题
请问这个里面用的是什么软件计算出来的结果?
nyy
发表于 2023-8-22 13:33:32
王守恩 发表于 2023-8-22 10:45
19楼点评,有问题吗?
小学生做不了:∠ADC=90+b=>∠ABC=90-b=>AB所得对圆心角=2b=>AB所得对圆周角=b=>BOD ...
这一次我选用托勒密定理与余弦定理相结合来解决问题,来求解方程组。
Clear["Global`*"];(*清除所有变量*)
deg=Pi/180;(*角度制下1°所对应的弧度*)
(*子函数,利用三边计算角的余弦值,角是c边所对的角*)
cs:=((a^2+b^2-c^2)/(2*a*b))
(*用余弦定理与托勒密定理建立方程组解决问题*)
ans=Solve[{
cs==Cos,(*△ABG中用余弦定理求BG*)
cs,Sqrt,CF]==Cos,(*△ACF中用余弦定理求CF*)
(*求四边形BCFG的两条对角线的长度*)
cs,BF]==Cos[(90+45)deg+beta],
cs,1,CG]==Cos[(90+45)deg+beta],
2*1+BG*CF==BF*CG,(*托勒密定理*)
0<=beta<=360deg&&BG>0&&CF>0&&BF>0&&CG>0(*限制变量范围*)
},{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是圆的直径,所以圆的半径也就容易求解了!
nyy
发表于 2023-8-22 14:02:20
nyy 发表于 2023-8-22 13:33
这一次我选用托勒密定理与余弦定理相结合来解决问题,来求解方程组。
继续用楼上图,如果用对角互补,与余弦定理,肯定能求解出来,但是方程组mathematica解不出来。
Clear["Global`*"];(*清除所有变量*)
deg=Pi/180;(*角度制下1°所对应的弧度*)
(*子函数,利用三边计算角的余弦值,角是c边所对的角*)
cs:=((a^2+b^2-c^2)/(2*a*b))
(*用余弦定理与四点共圆对角互补建立方程组解决问题*)
ans=Solve[{
cs==Cos,(*△ABG中用余弦定理求BG*)
cs,Sqrt,CF]==Cos,(*△ACF中用余弦定理求CF*)
(*四点共圆对角互补,∠CBG+∠CFG=180°*)
(ArcCos@cs+90deg)+(ArcCos@cs,CF,Sqrt]+45deg)==180deg,
BG>0&&CF>0&&0<=beta<=360deg(*限制变量范围*)
},{BG,CF,beta},Method->Reduce]//FullSimplify
我把方程组丢在这,也许有后来人能改进!
nyy
发表于 2023-8-22 14:23:11
nyy 发表于 2023-8-22 14:02
继续用楼上图,如果用对角互补,与余弦定理,肯定能求解出来,但是方程组mathematica解不出来。
Clear["Global`*"];(*清除所有变量*)
deg=Pi/180;(*角度制下1°所对应的弧度*)
(*以A为原点建立坐标系*)
(*4个点赋值*)
{xa,ya}={0,0}
{xb,yb}={-2,0};
{xc,yc}={-2,-2};
(*顺时针旋转45°,放大根号2倍*)
{xf,yf}=Sqrt*RotationMatrix[-45deg].{xg,yg}//Simplify
(*计算斜率*)
k1=(yg-yb)/(xg-xb)(*BG斜率*)
k2=(yf-ya)/(xf-xa)(*AF斜率*)
k3=(yf-yc)/(xf-xc)(*CF斜率*)
k32=(k3-k2)/(1+k3*k2)(*k2转到k3的角的正切*)
(*列方程组解决问题*)
ans=Solve[{
xg^2+yg^2==1^2,(*AG=1*)
(*四点共圆对角互补,∠CBG+∠CFG=180°*)
(k1+k32)/(1-k1*k32)==1(*两个角相加等于180-90-45=45°*)
},{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}\]
坐标都求解出来了,剩下的一切都很简单了。
配图如下:
nyy
发表于 2023-8-22 15:27:29
本帖最后由 nyy 于 2023-8-22 15:32 编辑
nyy 发表于 2023-8-22 13:33
这一次我选用托勒密定理与余弦定理相结合来解决问题,来求解方程组。
正弦版本的求解来了。
假设a b 两个角,如图上所标示:
用正弦定理列方程组求解问题:
Clear["Global`*"];(*清除所有变量*)
deg=Pi/180;(*角度制下1°所对应的弧度*)
ans=Solve[{
2/Sin==1/Sin,(*△ABG中正弦定理*)
Sqrt/Sin==Sqrt/Sin,(*△ACF中正弦定理*)
beta==a+b,
0<=b<=a<=180deg&&0<=beta<=360deg(*限制变量范围*)
},{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角的正弦与正切,
aaa={Sin,Sin,Tan,Tan}/.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的化简结果太丑了,所以我人工化简一下