Info

이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.

how can i change this code

조회 수: 1 (최근 30일)
praveen thakur
praveen thakur 2020년 2월 19일
마감: MATLAB Answer Bot 2021년 8월 20일
clear all
close all
clc
clear workspace;
fun=[1,-1,-1];
coeff=[0,2.5,1; 0,1.5,2; 0,-1,5];
const=[70;100;0];
eqs=[1;1;1];
sign=[1,1,1];
slack=eye(3);
table=[zeros(1,1),fun,zeros(1,4);zeros(3,1),coeff,slack,const;zeros(1,8)];
disp('table=');
disp(table);
for i=2:4
tmp=-table(1,i);
for j=2:4
tmp = tmp + (table(j,i)*table(j,1));
end
table(5,i)=tmp;
end
minim=min(table(5,:));
while minim<0
index = find(table(5,2:7)==min(table(5,2:7)));
index = index+1;
mini = inf;
in = 0;
for i=2:4
tmp = table(i, 8)/table(i, index);
if tmp<mini && tmp>0
mini = tmp;
in = i;
end
end
pivot = table(in,index);
for j=2:8
table(in, j) = table(in, j)/pivot;
end
for i=2:5
if i~=in
tmp=table(i, index);
for j=2:8
table(i,j) = table(i,j)-((tmp*table(in,j))/pivot);
end
end
end
table(in, 1) = table(1,index);
minim = min(table(5,:));
end
disp(table);
disp('Maximum value of z=');
disp(table(5,8));
  댓글 수: 3
praveen thakur
praveen thakur 2020년 2월 19일
i am getting an error in line 36 that si array indices should be positive or logical value
madhan ravi
madhan ravi 2020년 2월 19일
Don’t use table as a variable name, there’s an inbuilt function table()

답변 (1개)

KSSV
KSSV 2020년 2월 19일
in = 0 ;
pivot = table(in,index);
In the above line you have indexed in to zero. There is no zero and negaitve indices in MATLAB. You should change it to 1.
in = 1 ;
pivot = table(in,index);
Also there are some warnings in the code. There is divison with zero. Read about matlab indexing.

태그

제품


릴리스

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by