Jump to content

Topic des Geeks


FF

Recommended Posts

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.

Link to comment
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)

Link to comment
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)

Link to comment

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

-_-

Link to comment
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:

Link to comment

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.