|
本帖最后由 NHY007 于 2023-5-25 23:18 编辑
受教了,从侧面计算确实是一个高效的算法
但对于数值算法,和算法精度有很大关系:
- A=[0 0 1
- -1 0 -1
- 0 -1 0
- 1 0 0
- 0 1 -1];
- B=[0;-1;-1;0;0];
- options = optimoptions('fmincon',"Algorithm","active-set","EnableFeasibilityMode",true,'PlotFcn','optimplotfval');
- options.MaxFunctionEvaluations = 3.000000e+04;
- options.MaxIterations = 1.000000e+04;
- [pos0,fval]=fmincon(@disMin,[0.5 0.5 0.5],A,B,[],[],[0 0 0],[1 1 1],[],options)
- % x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
- function d=disMin(pos)
- d=[pos(:,3),-(pos(:,1)-1+pos(:,3)),1-pos(:,2),pos(:,1),pos(:,2)-pos(:,3)];
- d=-min(d);
- end
复制代码
可求得最大半径约为 \(0.2929\)
球心坐标为:
\[
pos_0 =
0.2929\ 0.7071\ 0.2929
\]
|
|