您的位置:首页 > 编程语言 > MATLAB

MATLAB求解非线性规划问题的例子

2010-01-08 10:36 429 查看
function solve___
%求解未知数小于方程数的非线性规划问题
% 三个未知数,十个方程
% 约束条件:
% x1=a2*(1+5*b)=0;
% x2=1000*a1*(1+b)=0.1
% x3=1000*a1*(1+3*b)=0.15
% x4=1000*a1*(1+5*b)=0.2
% x5=a2*(1+b)=0.1
% x6=a2*(1+3*b)=0.15
% x7=a2*(1+5*b)=0.2
% x8=a2*(1+b)=0.3
% x9=a2*(1+3*b)=0.45
% x10=a2*(1+5*b)=0.6
% 求解任意区间上的a1,a2,b的最优解;我们给定a1,a2,b的范围是(-1000,1000)
% -1000<a1<1000
% -1000<a2<1000
% -1000<b<1000
% 求解(x1-0)^2+(x2-0.1)^2+(x3-0.15)^2+(x4-0.2)^2+(x5-0.1)^2+(x6-0.15)^2+(x7-0
% .2)^2+(x8-0.3)^2+(x9-0.45)^2+(x10-0.6)^2的最小值
A=[1 0 0;-1 0 0;0 1 0;0 -1 0;0 0 1;0 0 -1];
B=[1000 1000 1000 1000 1000 1000]';
m1 = [0; 0; 0];
[x,fval] = fmincon(@myfun,m1,A,B)%方差值最小

function f = myfun(m)
a1=m(1);a2=m(2);b=m(3);
x1=a2*(1+5*b);
x2=1000*a1*(1+b);
x3=1000*a1*(1+3*b);
x4=1000*a1*(1+5*b);
x5=a2*(1+b);
x6=a2*(1+3*b);
x7=a2*(1+5*b);
x8=a2*(1+b);
x9=a2*(1+3*b);
x10=a2*(1+5*b);
f = (x1-0)^2+(x2-0.1)^2+(x3-0.15)^2+(x4-0.2)^2+(x5-0.1)^2...
+(x6-0.15)^2+(x7-0.2)^2+(x8-0.3)^2+(x9-0.45)^2+(x10-0.6)^2;
% x = 0.0001
%     0.1965
%     0.0928
% fval =0.2598

% 结果为 a1=0.0001
%       a2=0.1965
%       b=0.0928
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: