nyy 发表于 2023-3-8 18:55:10

nyy 发表于 2023-3-8 14:15
假设B点为原点,然后BD=1BC=c,A点(xa,ya),E点(xe,ye)

结果太复杂了,以致于我都怀疑软件算错了


(k12-(k31+k34)/(1+k31*k34)
这行代码错了,分母上应该是减,难怪我的代码运行结果很异常!我总感觉自己代码运行正确

nyy 发表于 2023-3-9 08:24:29

Clear["Global`*"];
(*以B为原点建立坐标系,BD=1,BC=c>1,列方程组解决问题*)
k1=ya/xa(*AB斜率*)
k2=ye/xe(*EB斜率*)
k3=(ye-0)/(xe-c)(*EC斜率*)
k4=(ye-0)/(xe-1)(*ED斜率*)
k5=(ya-0)/(xa-1)(*AD斜率*)
k12=(k1-k2)/(1+k1*k2)//Simplify(*∠ABE正切值*)
k31=(k3-k1)/(1+k3*k1)//Simplify(*∠BAE正切值*)
k34=(k3-k4)/(1+k3*k4)//Simplify(*∠CED正切值*)
ans=Solve[{
    (k2+k5//Simplify//Together//Numerator)==0,(*BF=DF*)
    xe^2+ye^2==1^2,(*BD=BE=1*)
    Det[{{xa,ya,1},{xe,ye,1},{c,0,1}}]==0,(*AEC三点共线*)
    (xa-1)^2+(ya-0)^2==c^2,(*AD=EC*)
    (k12-(k31+k34)/(1-k31*k34)//Simplify//Together//Numerator)==0,(*∠ABE=∠BAE+∠CED*)
    (ya>0&&ye>0&&c>1)(*限制变量范围*)
},{xa,ya,xe,ye,c},Method->Reduce]//FullSimplify;
Grid(*列表显示*)
Grid,Alignment->Left](*数值化*)
aaa=Select(*过滤出符合要求的解*)
bbb=N[{xa,ya,xe,ye,c}/.aaa,200](*高精度数值解*)
ccc=Simplify@ToRadicals@RootApproximant]](*由数值解得到精确解*)
ddd=((k5-k4)/(1+k5*k4)//Simplify)/.Thread[{xa,ya,xe,ye,c}->ccc](*求解角度*)
eee=ToRadicals@RootApproximant@N(*得到正切值的根式表达*)
kk=ArcTan(*求解角度*)
N(*角度数值化*)


修改后的代码:

求解结果
\[\left\{\frac{1}{4} \left(-\sqrt{5}-\sqrt{2 \sqrt{5}+3}+2\right),\frac{\sqrt{5} \sqrt{\sqrt{2 \sqrt{5}+3}+3}}{2 \sqrt{2}},\frac{1}{4} \left(\sqrt{5}+1\right),\frac{1}{2} \sqrt{\frac{1}{2} \left(5-\sqrt{5}\right)},\frac{1}{4} \left(\sqrt{5}+\sqrt{6 \sqrt{5}-2}+3\right)\right\}\]

正切值
\[\sqrt{5-2 \sqrt{5}}\]

角度
\[\frac{\pi }{5}\]

数值化36.0000000000000000000000000000

nyy 发表于 2023-3-9 08:42:43

我觉得你的复数办法,与解析法没多大的本质区别,但是mathematica善于解多项式方程组,而不善于解三角函数方程组。
所以我觉得用多项式方程组可能要好些

nyy 发表于 2023-3-9 08:46:17

王守恩 发表于 2023-3-9 08:32
接6楼。这个直接计算各个角度的关系就可以出来了
记∠EBD=2B,∠BAD=∠ACB=C,
∠CED+∠BAC=(90-B-C)+(C+ ...

∠BAD=∠ACB=C 这个是怎么得到的?????????????
你这胡乱加条件

王守恩 发表于 2023-3-9 10:13:57

mathe 发表于 2023-2-16 17:22
这个直接计算各个角度的关系就可以出来了
接6楼。这个直接计算各个角度的关系就可以出来了

记∠EBD=2B,∠BAD=∠ACB=C,

三角形ABD≌三角形BCE(2边夹角)

∠CED+∠BAC=(90-B-C)+(C+2B-C),∠ABE=180-4B-C,

得B=18,∠ADE=36,C=23.6107

mathe!这个精确度应该没有问题了吧?

N/180] Sin/180] Sin/180] == Sin/180] Sin[(36+C)\/180] Sin[(C)\/180], 90>C>0}, {C}], 100]

{{C -> 23.61067398440286574175686748261641508184530372365210379366798651614976556820862469724779236145748104}}

nyy 发表于 2023-3-9 10:57:38

王守恩 发表于 2023-3-9 10:13
接6楼。这个直接计算各个角度的关系就可以出来了

记∠EBD=2B,∠BAD=∠ACB=C,


我还知道AB^2=BD*BC,但是做题目,重要的是详细过程,而不是突然掉下来一个结论给别人

nyy 发表于 2023-3-9 12:37:05

传一张图,这样更容易找相似关系。不过我需要的是推理过程,我不需要别人给我结果,因为我自己能得到结果!

nyy 发表于 2023-3-9 14:10:42

nyy 发表于 2023-3-9 12:37
传一张图,这样更容易找相似关系。不过我需要的是推理过程,我不需要别人给我结果,因为我自己能得到结果!

这个图片具有误导性,不够精确,让人误以为角度都是整的,我上传一张带小数的图片,这样不容易误导别人。

nyy 发表于 2023-3-9 14:16:54

nyy 发表于 2023-3-9 14:10
这个图片具有误导性,不够精确,让人误以为角度都是整的,我上传一张带小数的图片,这样不容易误导别人。 ...

Clear["Global`*"];
deg=Pi/180;(*角度制下1°所对应的弧度*)
(*假设∠CED=x,∠BAC=y,然后用x与y来表达各个角*)
(*方法1:用正弦定理列两个方程,解决问题*)
ans=Solve[{
    (*AB/AD=AB/BC对应角度使用正弦定理*)
    Sin/Sin==Sin/Sin,
    (*AD/BD=BE/BE对应角度使用正弦定理*)
    Sin/Sin==Sin/Sin,
    (0<x<90deg)&&(0<y<45deg)(*限制变量范围*)
},{x,y},Method->Reduce]//FullSimplify//ToRadicals
N[({x,y}/deg)/.ans,20](*转化成角度制并且数值化,看角度多少*)
(*方法2:先画图看交点大概在什么地方,再用牛顿迭代法找比较精确的解*)
(*绘制图,看曲线交点大概在什么地方*)
ContourPlot[{
    Sin*Sin==Sin*Sin,
    Sin*Sin==Sin*Sin
},{x,0,90deg},{y,0,45deg}]
(*找到初始值,用牛顿迭代法找精确数值解*)
aaa=FindRoot[{
    Sin*Sin==Sin*Sin,
    Sin*Sin==Sin*Sin
},{{x,0.7},{y,0.7}},WorkingPrecision->100]
bbb=({x,y}/deg)/.aaa(*转化成角度制,看角度多少*)


思路:
(*假设∠CED=x,∠BAC=y,然后用x与y来表达各个角*)
利用三角形的内角和等于180、等边对等角,很容易用x与y来表达平面上的各个角度(具体略)

求解方程组结果
\[\left\{\left\{x\to 2 \tan ^{-1}\left(\frac{1}{\sqrt{\frac{5}{8 \sqrt{5}-4 \sqrt{5 \left(4-\sqrt{5}\right)}-5}}}\right),y\to \frac{\pi }{5}\right\}\right\}\]
转化成角度,并且数值化,得到
{{48.389326015597134258, 36.000000000000000000}}

如果觉得求解比较麻烦,画一张等值线图,然后看交点在哪里,再用牛顿迭代法求解出角度。
等值线如下图所示:

牛顿迭代法得到的数值是
{x -> 0.84455306179311898717397168680265742013568042663601503051046483\
26296453485430084156744048815847691741,

y -> 0.62831853071795864769252867665590057683943387987502116419498891\
84615632812572417997256069650684234136}
角度制下是
{48.389326015597134258243132517383584918154696276347896206332013483850\
23443179137530275220763854251896, \
36.0000000000000000000000000000000000000000000000000000000000000000000\
0000000000000000000000000000000}

nyy 发表于 2023-3-9 14:32:34

nyy 发表于 2023-3-9 14:16
思路:
(*假设∠CED=x,∠BAC=y,然后用x与y来表达各个角*)
利用三角形的内角和等于180、等边对等角 ...

∠CED的角度等于\(\tan ^{-1}\left(\sqrt{\frac{1}{11} \left(4 \sqrt{5}+5\right)}\right)\)
页: 1 [2] 3
查看完整版本: 用 mathematica 如何解这个复数方程