单纯形法(Matlab 程序)
%%单纯形法( Matlab 程序)
a=input('input the major matrix A '); b=input('input the matrix b ');
n=input('input the judgement ');
%%为计数器(确定循环次数)
g=0;
while g<40
%%确定非负
alength=max(size(n));
blength=max(size(b));
m=0;
for i=1:alength
if n(i)>=0
m=m+1;
end
end;
if m==alength
x=b;
break
end;
%%找 K
s=min(n);
for i=1:alength
if n(i)==s
k=i;
break
end;
end;
%%a[i,k] 的非负性
m=0;
for i=1:blength
if a(i,k)<0
m=m+1;
end;
end;
if m==blength
disp('x does not exit');
judge=1;
break
end;
%%找 L 确定主元 cc=100000;
for i=1:blength
if a(i,k)>0
if
(b(i)/a(i,k))<
cc
cc=b(i)/a(i,k);
end
end end; for i=1:blength
if a(i,k)~=0
if (b(i)/a(i,k))==cc
l=i;
break
end
end end; %%计算 ,a 标准化 zu=a(l,k); aa=a; for i=1:l-1
for j=1:alength aa(i,j)=a(i,j)-
a(l,j)*a(i,k)/a(l,k);
end end; for i=l+1:blength
for j=1:alength aa(i,j)=a(i,j)-
a(l,j)*a(i,k)/a(l,k);
end end; for j=1:alength
aa(l,j)=a(l,j)/zu; end;
%%b勺判别 bb=b; bb(l)=b(l)/zu;
for i=1:l-1 bb(i)=b(i)-
b(l)*a(i,k)/a(l,k);
end;
for i=l+1:blength bb(i)=b(i)-
b(l)*a(i,k)/a(l,k);
end;
b=bb; %%确定判别数