- 注册时间
- 2008-11-26
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 149507
- 在线时间
- 小时
|
发表于 2021-1-20 15:37:31
|
显示全部楼层
本帖最后由 mathematica 于 2021-1-20 15:56 编辑
- Clear["Global`*"];(*mathematica11.2,win7(64bit)Clear all variables*)
- (*把三维空间中的三角形转化成球面a^2+b^2+c^2==1*)
- fun=(2*a^2-b^2)(2*b^2-c^2)(2*c^2-a^2)+x*(a^2+b^2+c^2-1);
- (*求解偏导数,解方程组*)
- ans=Solve[D[fun,{{a,b,c,x}}]==0,{a,b,c,x}];
- Grid[ans,Alignment->Left];
- (*求解原来的变量值,以及对应函数值*)
- aaa=Union@FullSimplify[{a^2,b^2,c^2,fun}/.ans];
- (*增加一列,是函数值的数值化*)
- bbb=Append[#,N[#[[4]]]]&/@aaa;
- (*按照第四列从大到小排序*)
- ccc=Sort[bbb,#1[[4]]>#2[[4]]&];
- Grid[ccc,Alignment->Left]
复制代码
拉格朗日方程组的解
解太多,此处略去
原来的函数值的最大最小值
\[
\begin{array}{lllll}
\frac{1}{9} \left(\sqrt{7}+5\right) & 0 & \frac{1}{9} \left(4-\sqrt{7}\right) & \frac{4}{243} \left(7 \sqrt{7}-10\right) & 0.140251 \\
\frac{1}{9} \left(4-\sqrt{7}\right) & \frac{1}{9} \left(\sqrt{7}+5\right) & 0 & \frac{4}{243} \left(7 \sqrt{7}-10\right) & 0.140251 \\
0 & \frac{1}{9} \left(4-\sqrt{7}\right) & \frac{1}{9} \left(\sqrt{7}+5\right) & \frac{4}{243} \left(7 \sqrt{7}-10\right) & 0.140251 \\
\frac{1}{3} & \frac{1}{3} & \frac{1}{3} & \frac{1}{27} & 0.037037 \\
1 & 0 & 0 & 0 & 0. \\
\frac{4}{7} & \frac{1}{7} & \frac{2}{7} & 0 & 0. \\
\frac{2}{7} & \frac{4}{7} & \frac{1}{7} & 0 & 0. \\
\frac{1}{7} & \frac{2}{7} & \frac{4}{7} & 0 & 0. \\
0 & 1 & 0 & 0 & 0. \\
0 & 0 & 1 & 0 & 0. \\
\frac{1}{9} \left(\sqrt{7}+4\right) & \frac{1}{9} \left(5-\sqrt{7}\right) & 0 & \frac{1}{243} (-4) \left(7 \sqrt{7}+10\right) & -0.469469 \\
\frac{1}{9} \left(5-\sqrt{7}\right) & 0 & \frac{1}{9} \left(\sqrt{7}+4\right) & \frac{1}{243} (-4) \left(7 \sqrt{7}+10\right) & -0.469469 \\
0 & \frac{1}{9} \left(\sqrt{7}+4\right) & \frac{1}{9} \left(5-\sqrt{7}\right) & \frac{1}{243} (-4) \left(7 \sqrt{7}+10\right) & -0.469469 \\
\end{array}
\]
如果单纯地用拉格朗日乘子法,求解出来的结果不对。
代码如下
- Clear["Global`*"];(*mathematica11.2,win7(64bit)Clear all variables*)
- fun=(2*a-b)(2*b-c)(2*c-a)+x*(a+b+c-1);
- (*求解偏导数,解方程组*)
- ans=Solve[D[fun,{{a,b,c,x}}]==0,{a,b,c,x}];
- Grid[ans,Alignment->Left]
- (*求解原来的变量值,以及对应函数值*)
- aaa=FullSimplify[{a,b,c,fun}/.ans];
- (*增加一列,是函数值的数值化*)
- bbb=Append[#,N[#[[4]]]]&/@aaa;
- (*按照第四列从大到小排序*)
- ccc=Sort[bbb,#1[[4]]>#2[[4]]&];
- Grid[ccc,Alignment->Left]
复制代码
求解结果如下:
\[\begin{array}{lllll}
\frac{1}{3} & \frac{1}{3} & \frac{1}{3} & \frac{1}{27} & 0.037037 \\
\frac{4}{7} & \frac{1}{7} & \frac{2}{7} & 0 & 0. \\
\frac{2}{7} & \frac{4}{7} & \frac{1}{7} & 0 & 0. \\
\frac{1}{7} & \frac{2}{7} & \frac{4}{7} & 0 & 0. \\
\end{array}\]
在边界上的最值,理论上还有检测abc当中有两个等于零的情况,以及三个等于零的情况,但是不演示了
- (*在边界上查看最值*)
- Clear["Global`*"];(*mathematica11.2,win7(64bit)Clear all variables*)
- c=0;(*三个边界感觉对称,只假设其中一个等于零就可以了*)
- fun=(2*a-b)(2*b-c)(2*c-a)+x*(a+b+c-1);
- (*求解偏导数,解方程组*)
- ans=Solve[D[fun,{{a,b,x}}]==0,{a,b,x}];
- Grid[ans,Alignment->Left]
- (*求解原来的变量值,以及对应函数值*)
- aaa=FullSimplify[{a,b,c,fun}/.ans];
- (*增加一列,是函数值的数值化*)
- bbb=Append[#,N[#[[4]]]]&/@aaa;
- (*按照第四列从大到小排序*)
- ccc=Sort[bbb,#1[[4]]>#2[[4]]&];
- Grid[ccc,Alignment->Left]
复制代码
求解结果
\[
\begin{array}{lllll}
\frac{1}{9} \left(4-\sqrt{7}\right) & \frac{1}{9} \left(\sqrt{7}+5\right) & 0 & \frac{4}{243} \left(7 \sqrt{7}-10\right) & 0.140251 \\
\frac{1}{9} \left(\sqrt{7}+4\right) & \frac{1}{9} \left(5-\sqrt{7}\right) & 0 & \frac{1}{243} (-4) \left(7 \sqrt{7}+10\right) & -0.469469 \\
\end{array}
\]
|
|