MATLAB程序可执行,两个程序注意比较
function [x,minf]=minRosen(f,A,b,x0,var,eps) %目标函数:f;
%约束矩阵:A;
%约束右端力量:b;
%初始可行点:x0;
%自变量向量:var;
%精度:eps;
%目标函数取最小值时的自变量值:x;
%目标函数的最小值:minf;
format long;
ifnargin == 5
eps=1.0e-6;
end
syms l;
x00=transpose(x0);
n=length(var);
sz=size(A);
m=sz(1);
gf=jacobian(f,var);
bConti=1;
whilebConti
k=0;
s=0;
A1=A;
A2=A;
b1=b;
b2=b;
fori=1:m
dfun=A(i,:)*x00-b(i);
if abs(dfun)<0.000000001
k=k+1;
A1(k,:)=A(i,:);
b1(k,1)=b(i);
else
s=s+1;
A2(s,:)=A(i,:);
b2(s,1)=b(i);
end
end
if k>0
A1=A1(1:k,:);
b1=b1(1:k,:);
end
if s>0
A2=A2(1:s,:);
b2=b2(1:s,:);
end