- 注册时间
- 2018-12-8
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 3549
- 在线时间
- 小时
|
发表于 2020-6-7 14:02:15
|
显示全部楼层
本帖最后由 dlpg070 于 2020-6-7 14:17 编辑
验证用代码
"完整中学生解法"虽然只用初等方法计算,但讨论有些复杂
这是为中学生和他们的老师看的---小题小作也是一种乐趣
其实小题大作很简单,甚至不需要讨论各种条件
下面的代码用Minimize,源于2#
共计算4个例题
1 ,2 属于第2区间 正常费马点
3 属于第3区间 费马点F与E重合, 在BC线上
4 属于第1区间 费马点F与A重合, 在角A
代码:- (*验证*)
- Clear["Global`*"];
- (* Minimize求解 通用 ,ok 验证用 *)
- fs[a_,b_,c_]:=fs[a,b,c]=Module[{ans,out},
- Clear[x,y,FA,FE,FD];
- ans=Minimize[{FA+FE+FD,(*目标函数*)(*约数条件*)FA^2==(x-0)^2+(y-a)^2&&FD^2==(x-c)^2+(y-b)^2&&FE==y&&(*限制变量范围*)FA>=0&&FD>=0&&FE>=0},{x,y,FA,FD,FE}]//FullSimplify;
- out=RootApproximant@N[{x,y,FA,FD,FE}/.ans[[2]],300];
- {ans[[1]],out[[1]],out[[2]],out[[3]],out[[4]],out[[5]]}
- ]
- data={{4,8,16},{6,10,16},{6,8,32},{6,16,8}};
- Print["验证:"]
- lst=Table[ {a,b,c}=data[[n]];
- ans=fs[a,b,c];
- {min,xf,yf,FAm,FDm,FEm}=ans;
- Print["a=",a," b=",b," c=",c," min=",min, " =",N[min]," xf= ",xf," =",N[xf]," yf= ",yf," =",N[yf]];
- {n,a,b,c,min,xf,yf}
- ,{n,1,Length[data]}];
- Grid[lst,Alignment->Left]
复制代码
输出:
n a b c min xf yf
\(\begin{array}{lllllll}
1 & 4 & 8 & 16 & 8 \sqrt{3}+6 & 8-2 \sqrt{3} & \frac{1}{3} \left(18-8 \sqrt{3}\right) \\
2 & 6 & 10 & 16 & 8 \left(\sqrt{3}+1\right) & 8-2 \sqrt{3} & \frac{1}{3} \left(24-8 \sqrt{3}\right) \\
3 & 6 & 8 & 32 & 2 \sqrt{305} & \frac{96}{7} & 0 \\
4 & 6 & 16 & 8 & 2 \left(\sqrt{41}+3\right) & 0 & 6 \\
\end{array}\) |
|