- 积分
- 83
- 注册时间
- 2003-11-14
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2008-5-31 14:45:26
|
显示全部楼层
来自 新疆乌鲁木齐
已解决。
主函数- function ff=MainElipse(x)
- ff=12.*x(6)^2+18.8966*x(3)*x(6)+18.3815*x(3)*x(5)+19.9542*x(5)*x(6)+9.10511*x(3)^2+...
- 9.44832*x(5)^2+8.85028*x(1)*x(6)+7.96096*x(1)*x(4)+11.5988*x(4)*x(6)+...
- 3.84964*x(1)^2+4.42514*x(4)^2+3.71853*x(1)*x(2)+3.64590*x(1)*x(3)+...
- 4.73504*x(1)*x(5)+5.94353*x(2)*x(3)+4.73504*x(2)*x(4)+6.53216*x(2)*x(5)+...
- 6.53216*x(3)*x(4)+7.58636*x(4)*x(5)+7.58636*x(2)*x(6)+1.82295*x(2)^2;
复制代码 约束函数- function [c,ceq]=NonElipse(x)
- c=-(12.*x(6)^2+18.8966*x(3)*x(6)+18.3815*x(3)*x(5)+19.9542*x(5)*x(6)+9.10511*x(3)^2+...
- 9.44832*x(5)^2+8.85028*x(1)*x(6)+7.96096*x(1)*x(4)+11.5988*x(4)*x(6)+...
- 3.84964*x(1)^2+4.42514*x(4)^2+3.71853*x(1)*x(2)+3.64590*x(1)*x(3)+...
- 4.73504*x(1)*x(5)+5.94353*x(2)*x(3)+4.73504*x(2)*x(4)+6.53216*x(2)*x(5)+...
- 6.53216*x(3)*x(4)+7.58636*x(4)*x(5)+7.58636*x(2)*x(6)+1.82295*x(2)^2);
- ceq=x(2)^2-4*x(1)*x(3)+1;
复制代码 运行:- %% 调用函数
- clc
- x0=round(10*rand(1,6)); % Starting guess
- xdata=[0 0.099 0.15 0.1975 0.25 0.3265 0.411 0.5619 0.7265 0.951 1.126 1];
- ydata=[0.9 1.1 0.9 1.1 0.9 1.1 0.975 0.9859 0.877 0.724 0.4152 0];
- A=[];b=[];
- Aeq=[0 0 1 0 1 1;1 0 0 1 0 1;1.126^2 1.126*.4152 .4152^2 1.126 .4152 1];
- beq=zeros(3,1);
- [x,fval,exitflag,output] = fmincon(@MainElipse,x0,A,b,Aeq,beq,[],[],@NonElipse)
- f=@(x2,y2) 0.609856620799381*x2.^2+0.904625201010936*x2.*y2+...
- 0.745399237479023*y2.^2-1.216767995653643*x2-...
- 1.352310612333285*y2+0.606911374854262;
- ezplot(f,[0,1.2])
- hold on
- plot(xdata,ydata,'r*')
复制代码 结果图形:
优化结果:- x =
- Columns 1 through 5
- -0.609891418321910 -0.904934994768739 -0.745586510558483 1.216995510549203 1.352690602785776
- Column 6
- -0.607104092227293
- fval =
- 0.010647923391415
复制代码 其中:设定椭圆方程为一般式:A x^2 + B x y + C y^2 + D x + E y + F =0
以数据∑(A x^2 + B x y + C y^2 + D x + E y + F)^2最小为目标函数,以定点为约束条件,转为非线性约束优化问题求解,优化结果中:[x1,x2,...,x6]=[A,B,C,D,E,F]
[ 本帖最后由 bainhome 于 2008-5-31 15:38 编辑 ] |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|