Filter löschen
Filter löschen

Info

Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.

how can i change this code

1 Ansicht (letzte 30 Tage)
praveen thakur
praveen thakur am 19 Feb. 2020
Geschlossen: MATLAB Answer Bot am 20 Aug. 2021
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 Kommentare
praveen thakur
praveen thakur am 19 Feb. 2020
i am getting an error in line 36 that si array indices should be positive or logical value
madhan ravi
madhan ravi am 19 Feb. 2020
Don’t use table as a variable name, there’s an inbuilt function table()

Antworten (1)

KSSV
KSSV am 19 Feb. 2020
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.

Tags

Produkte


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by