- 注册时间
- 2021-11-19
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 9958
- 在线时间
- 小时
|
发表于 2023-8-29 12:43:01
|
显示全部楼层
重新梳理一下我写的代码,写的代码更清晰,可读性更强!
- Clear["Global`*"];(*清除所有变量*)
- (*子函数,给定两个点,计算通过这两个点的直线的斜率.输入两点:{a,b},{c,d},返回:(d-b)/(c-a)*)
- kk[pt1_,pt2_]:=Module[{dpt},dpt=pt2-pt1;dpt[[2]]/dpt[[1]]]
- (*6个点坐标赋值*)
- ptB={-3,-3*Sqrt[3]};
- ptC={xc,yc};(*此处两个待求解变量*)
- ptP={-3,-Sqrt[3]};
- ptE={xe,0};(*此处一个待求解变量*)
- ptO={0,0};(*原点坐标赋值*)
- ptD={xd,0};(*此处一个待求解变量*)
- (*计算斜率*)
- k1=kk[ptB,ptE]//Simplify(*BE斜率*)
- k2=kk[ptB,ptO]//Simplify(*BO斜率*)
- k3=kk[ptB,ptC]//Simplify(*BC斜率*)
- (*列方程组解决问题*)
- ans=Solve[{
- kk[ptC,ptP]*kk[ptC,ptE]==-1,(*CP⊥CE,斜率乘积等于负壹*)
- (k3-k2)/(1+k3*k2)==(k2-k1)/(1+k2*k1),(*∠CAE=∠CBO=∠OBE*)
- EuclideanDistance[ptP,ptC]==2*Sqrt[3],(*C点到圆心P的距离等于半径*)
- kk[ptC,ptD]==kk[ptD,ptB](*CDB三点共线*)
- },{xc,yc,xd,xe}]//Simplify(*列出求解待求解变量*)
- Grid[ans,Alignment->Left](*列表显示*)
- aaa=1/Abs[xd]-1/Abs[xe]/.ans//Simplify(*求解出目标函数值*)
复制代码
求解结果
\[\begin{array}{llll}
\text{xc}\to \frac{1}{4} (-3) \left(\sqrt{5}+5\right) & \text{yc}\to \frac{1}{4} (-3) \left(\sqrt{3}+\sqrt{15}\right) & \text{xd}\to -3 \left(\sqrt{5}+3\right) & \text{xe}\to -3 \left(\sqrt{5}+1\right) \\
\text{xc}\to \frac{3}{4} \left(\sqrt{5}-5\right) & \text{yc}\to \frac{3}{4} \sqrt{3} \left(\sqrt{5}-1\right) & \text{xd}\to 3 \left(\sqrt{5}-3\right) & \text{xe}\to 3 \left(\sqrt{5}-1\right) \\
\end{array}\]
目标值
\[\left\{\frac{1}{6} \left(2-\sqrt{5}\right),\frac{1}{6}\right\}\]
很显然第二组解才符合要求! |
|