matlab 求解非线性约束方程

f(x)min=0.785*x3*((x1-0.03*x1*x5-x2)^2-(x6+10+0.03*x1*x5)^2*10-(x4)^2)+0.97*x1*x3*x5 %目标函数

g1(x)=0.45-x5<=0; %约束条件
g2(x)=x5-0.8<=0;
g3(x)=x2/x1-(1+x5)^2/(1+x5+32*x5)<=0;
g4(x)=0.05*x1-x3<=0;
g5(x)=x3-0.1*x1<=0;
g6(x)=4884/x3*(x1)^2-7.225<=0;
g7(x)=((4410.5*x3+10)*(2.5*x3+10))/(x1*x5*(3*x3+20)*(x2-6)^3)-15000<=0;
g8(x)=214.42-x1<=0;
g9(x)=x1-262.07<=0;
g10(x)=2596.33*x3/(x1-0.03*x1*x5-x2+x4)*x6^3-15000<=0;
g11(x)=949^2*54.09*x1*x5-82.5*x3*(x1-0.03*x1*x5-x2+x4)(0.5*x6+14)^2+x1*x5*((x6)/4+7)^2)*15000^2<=0;
g12(x)=0.5*x4-0.44*x1+0.5*x2+x6+0.08*x1*x5+28<=0;
g13(x)=x6+28+0.03*x1*x2+0.03*x1+0.16*(x2-x1-x4+0.03*x1*x5)<=0;
%求f(x)min x1,x2,x3,x4,x5,x6及编程

用fmincon函数就可以解决,以下是fmincon的说明,你照葫芦画就可以了。
这个函数的基本形式为
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
其中fun为你要求最小值的函数,可以单写一个文件设置函数,如以上给的例子中。
1.如果fun中有N个变量,如x y z, 或者是X1, X2,X3, 什么的,自己排个顺序,在fun中统一都是用x(1),x(2)....x(n) 表示的。
2. x0, 表示初始的猜测值,大小要与变量数目相同
3. A b 为线性不等约束,A*x <= b, A应为n*n阶矩阵,学过线性代数应不难写出A和b
4 Aeq beq为线性相等约束,Aeq*x = beq。 Aeq beq同上可求
5 lb ub为变量的上下边界, 正负无穷用 -Inf和Inf表示, lb ub应为N阶数组
6 nonlcon 为非线性约束,可分为两部分,非线性不等约束 c,非线性相等约束,ceq
可按下面的例子设置
function [c,ce] = nonlcon1(x)
c = -x(1)+x(2)^2-4;
ce = []; % no nonlinear equality constraints
7, 最后是options, 可以用OPTIMSET函数设置,见上例
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-16
这个题目做出来了吗
?
第2个回答  2010-04-18
54613