Aller au contenu

Topic des Geeks


FF

Messages recommandés

bon en fait tout calculs faits je recapitule :

Disons que tu veux retirer un vecteur ligne v 1xn à toutes les lignes de la matrice M mxn.

1°) Tu colles v en première ligne à ta matrice M, tu obtiens donc une matrice disons N de taille (m+1)xn

2°) Tu as prédefini une matrice carrée O de taille (m+1) telle que : Oii=1 pour tout i et Ok,1=-1 pour k dans [2,(m+1)]

(c'est à dire des 1 sur la diagonale, des -1 sur le reste de la première colonne, des 0 partout ailleurs).

3°) Tu fait P=O*N

4°) Tu supprimes la première ligne de ta matrice (N(2:m+1,-_-) et tu récupères ainsi la matrice cherchée.

Franchement je vois pas comment faire moins d'operations que ça.

Je teste et je te file le code.

%à definir a part et une seule fois

m=6;n=4;

O=eye(m+1);

for i=2:m+1

	O(i,1)=-1;

end


%définition aléatoire de la matrice et du vecteur

M=floor(4*rand(m,n)+1)

v=floor(4*rand(1,n)+1)


%programme à proprement parler

N=[v;M];

P=O*N;

M=P(2:m+1,:)

voilà voila, ca m'a l'air de marcher. Le vrai code c'est les 3 dernières lignes bien sur.

Lien vers le commentaire
bon en fait tout calculs faits je recapitule :

Disons que tu veux retirer un vecteur ligne v 1xn à toutes les lignes de la matrice M mxn.

1°) Tu colles v en première ligne à ta matrice M, tu obtiens donc une matrice disons N de taille (m+1)xn

2°) Tu as prédefini une matrice carrée O de taille (m+1) telle que : Oii=1 pour tout i et Ok,1=-1 pour k dans [2,(m+1)]

(c'est à dire des 1 sur la diagonale, des -1 sur le reste de la première colonne, des 0 partout ailleurs).

3°) Tu fait P=O*N

4°) Tu supprimes la première ligne de ta matrice (N(2:m+1,-_-) et tu récupères ainsi la matrice cherchée.

Franchement je vois pas comment faire moins d'operations que ça.

Je teste et je te file le code.

%à definir a part et une seule fois
m=6;n=4;
O=eye(m+1);
for i=2:m+1
O(i,1)=-1;
end

%définition aléatoire de la matrice et du vecteur
M=floor(4*rand(m,n)+1)
v=floor(4*rand(1,n)+1)

%programme à proprement parler
N=[v;M];
P=O*N;
M=P(2:m+1,:)[/code]

voilà voila, ca m'a l'air de marcher. Le vrai code c'est les 3 dernières lignes bien sur.

Merci pour le topo. Je teste dès que j'ai un peu de temps B)

Lien vers le commentaire
bon en fait tout calculs faits je recapitule :

Disons que tu veux retirer un vecteur ligne v 1xn à toutes les lignes de la matrice M mxn.

1°) Tu colles v en première ligne à ta matrice M, tu obtiens donc une matrice disons N de taille (m+1)xn

2°) Tu as prédefini une matrice carrée O de taille (m+1) telle que : Oii=1 pour tout i et Ok,1=-1 pour k dans [2,(m+1)]

(c'est à dire des 1 sur la diagonale, des -1 sur le reste de la première colonne, des 0 partout ailleurs).

3°) Tu fait P=O*N

4°) Tu supprimes la première ligne de ta matrice (N(2:m+1,:ninja:) et tu récupères ainsi la matrice cherchée.

Franchement je vois pas comment faire moins d'operations que ça.

Je teste et je te file le code.

%à definir a part et une seule fois

m=6;n=4;

O=eye(m+1);

for i=2:m+1

	O(i,1)=-1;

end


%définition aléatoire de la matrice et du vecteur

M=floor(4*rand(m,n)+1)

v=floor(4*rand(1,n)+1)


%programme à proprement parler

N=[v;M];

P=O*N;

M=P(2:m+1,:)

voilà voila, ca m'a l'air de marcher. Le vrai code c'est les 3 dernières lignes bien sur.

Au fait, 2+2 ça fait combien? -_-

B)

Lien vers le commentaire

Je vous conseille de faire la méthode du gradient conjugué, ça ne sert à rien, ça m'a pris 5h pour comprendre et j'ai pas réussi àfaire l'exo de mon DS B)

function [x] = conjgrad(A,b,x0)


 r = b - A*x0;

 w = -r;

 z = A*w;

 a = (r'*w)/(w'*z);

 x = x0 + a*w;

 B = 0;


 for i = 1:size(A)(1);

	r = r - a*z;

	if( r < 1e-10 )

		 break;

	endif

	B = (r'*z)/(w'*z);

	w = -r + B*w;

	z = A*w;

	a = (r'*w)/(w'*z);

	x = x + a*w;

 end

-_-

Lien vers le commentaire
Ben il n'est pas encore parti :)

;)

c'est "intelligent" au sens des roses bien sur... Quand on voit comment 3 pauvres lignes inoffensives de Matlab les/vous retourne... :angry:

Bref j'aurais pas a fournir un effort monstrueux -_-

Je vous conseille de faire la méthode du gradient conjugué, ça ne sert à rien, ça m'a pris 5h pour comprendre et j'ai pas réussi àfaire l'exo de mon DS -_-

Tente plutôt l'histoire ou le droit, c'est plus fait pour les roses apparemment :ninja:

Lien vers le commentaire

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.