2010-10-21 10 views
0

J'ai un peu de code ci-dessous, et je n'arrive pas à trouver les matrices correctement formatées. J'ai essayé de faire en sorte que les matrices soient plus professionnelles (rapprochées) avec \ t et fprintf, mais je ne peux pas sembler le faire. J'ai aussi du mal à mettre des titres pour chaque colonne de la matrice. Toute aide serait très appréciée!La matrice MATLAB ne se met pas correctement en forme

clear all 
clc 

format('bank') 

% input file values % 
A = [4 6 5 1 0 0 0 0 0; 7 8 4 0 1 0 0 0 0; 6 5 9 0 0 1 0 0 0; 1 0 0 0 0 0 -1 0 0; 0 1 0 0 0 0 0 -1 0; 0 0 1 0 0 0 0 0 -1]; 
b = [480; 600; 480; 24; 20; 25]; 
c = [3000 4000 4000 0 0 0 0 0 0]; 

% Starting xb % 
xb = [1 2 3 4 5 6] 

% Starting xn % 
xn = [7 8 9] 


cb = c(xb) 
cn = c(xn) 

% Get B from A % 
B = A(:,xb) 

% Get N from A % 
N = A(:,xn) 

% Calculate z % 
z = ((cb*(inv(B))*A)-c) 

% Calculate B^(-1) % 
Binv = inv(B) 

% Calculate RHS of row 0 % 
RHS0 = cb*Binv*b 

% Calculates A % 
A = Binv*A 


%STARTING Tableau% 
ST = [z RHS0;A b] 
for j=1:A 
    fprintf(1,'\tz%d',j) 
end 

q = 0 
while q == 0 



    m = input('what is the index value of the ENTERING variable? ') 
    n = input('what is the index value of the LEAVING variable? ') 

    xn(xn==m)= n 
    xb(xb==n) = m 


    cb = c(xb) 
    cn = c(xn) 
    B = A(:,xb) 
    N = A(:,xn) 

    Tableuz = (c-(cb*(B^(-1))*A)) 
    RHS0 = (cb*(B^(-1))*b) 
    TableuA = ((B^(-1))*A) 
    Tableub = ((B^(-1))*b) 

    CT = [Tableuz RHS0; TableuA Tableub]; 
    disp(CT) 
    q = input('Is the tableau optimal? Y-1, N-0') 


end 

Répondre

2

Je ne l'ai pas creuser dans ce que vous faites vraiment profondément, mais quelques conseils: * Mettre des points-virgules à la fin des lignes que vous ne voulez pas l'impression à l'écran - il facilite la voir ce qui se passe ailleurs. * Pour j = 1: une boucle imprime uniquement j. Je pense que ce que vous voulez est plus comme ceci:

for row = 1:size(A,1) 
    for column = 1:size(A,2) 
     fprintf('%10.2f', A(row,column)); 
    end 
    fprintf('\n'); 
end 
  • Si vous ne l'avez pas utilisé le débogueur Matlab encore, faire un essai; cela rend beaucoup plus faciles à repérer ces problèmes. Tout ce que vous avez à faire pour commencer est d'ajouter un point d'arrêt au fichier en cliquant sur le tiret (-) à côté des numéros de ligne et en démarrant le script. Les recherches rapides sur le Web peuvent également accélérer la mise en place de la solution: une autre personne a généralement déjà rencontré un problème.

Bonne chance.

0

Essayez d'utiliser num2str avec un argument de format correspondant à la précision souhaitée. Il est destiné à convertir des matrices en chaînes. (note: ceci est différent de mat2str qui sérialise les matrices afin qu'elles puissent être désérialisées avec eval)

Questions connexes