Problèmes itérations matrice
Bonjour,
J'ai grandement besoin de votre aide dans le cadre d'un travail où je suis bloqué
Mon but:
Créer une matrice 15x15 avec des valeurs T(i,j)
A la fin je dois avoir la somme des valeurs de chaque ligne égale aux différentes valeurs du vecteur O (somme des valeurs de la première ligne = O(1)- somme des valeurs de la 2eme ligne = O(2)). Je dois faire la même chose avec la somme des éléments de chaque colonne de la matrice et le vecteur D.
Mes formules pour calculer les T(i,j):
A(i) = 1/(somme de 1 à 15(B(j).D(j)))
B(j) = 1/(somme de 1 à 15(A(i).O(i)))
On commence par calculer A en posant B=1
Enfin, T(i,j) = A(i).B(j).O(i).D(j)
Mon code ne fonctionne pas sans que je sache pourquoi...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| function []= OD()
tic
O=[191;43;110;78;49;372;398;193;442;137;199;53;72;90;527];
D=[363 46 133 79 70 236 194 90 310 127 168 70 57 130 881];
n=15;
Results=[];
T=ones(12);
A=ones(n,1);
B=ones(1,n);
A1=[];
A1=1/dot(B,D);
A=A1*ones(n,1);
B1=[];
B=[];
T1=zeros(n,1);
T2=zeros(1,n);
dif1=ones(n,1);
dif2=ones(1,n);
dif11=2;
dif22=2;
while (dif11>1 && dif22>1)
B1=1/dot(A,O);
B=B1*ones(1,n)
A1=1/dot(B,D);
A=A1*ones(n,1)
for i=1:n
for j=1:n
if i==j
T(i,j)=0;
else
T(i,j)=A(i)*B(j)*O(i)*D(j);
end
end
end
for l=1:n
for k=1:n
T1(l)=T(l,k)+T1(l);
end
end
for p=1:n
for q=1:n
T2(p)=T(q,p)+T2(q);
end
end
dif1=O-T1
dif2=D-T2
dif11=sum(dif1,1);
dif22=sum(dif2,2);
end
clearvars n A B A1 B1 O D
save('Results','T','T1','T2')
toc
end |
Merci beaucoup pour votre aide
Cypette