Yoda Posted August 6, 2008 Posted August 6, 2008 je suis le seul à rien capter ici ? Non. Il parait que seuls ceux qui portent des chemisettes avec des cravattes peuvent comprendre... Quote
NicoPaviot Posted August 6, 2008 Posted August 6, 2008 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. Quote
FF Posted August 6, 2008 Author Posted August 6, 2008 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 Quote
LaurentRomejko Posted August 6, 2008 Posted August 6, 2008 Dire que j'ai pris une option pour en bouffer de ça, je vais le regretter Quote
Floolf Posted August 6, 2008 Posted August 6, 2008 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. Au fait, 2+2 ça fait combien? Quote
NicoPaviot Posted August 6, 2008 Posted August 6, 2008 Au fait, 2+2 ça fait combien? matlab le calcule très bien suffit de multiplier la matrice identité par 2 puis de multiplier à gauche par la matrice I2+E2,1 et de récuperer la valeur de la composante 1,1 du résultat Quote
Pogi Posted August 6, 2008 Posted August 6, 2008 Au fait je suis à la recherche d'une TI, ma Casio Graph 100+ ayant récemment lâché, si certains en possédant une seraient prèts à la vendre je suis preneur Quote
LaurentRomejko Posted August 6, 2008 Posted August 6, 2008 matlab le calcule très bien suffit de multiplier la matrice identité par 2 puis de multiplier à gauche par la matrice I2+E2,1 et de récuperer la valeur de la composante 1,1 du résultat Je suis sur que tu te plairais avec mes profs http://www.insa-rennes.fr/~mcamared/ Quote
NicoPaviot Posted August 6, 2008 Posted August 6, 2008 Je suis sur que tu te plairais avec mes profs http://www.insa-rennes.fr/~mcamared/ un mec de "calcul scientifique" merci bien... nous autres de "probablités et statistiques" on ne se mélange pas avec la canaille... Quote
LaurentRomejko Posted August 6, 2008 Posted August 6, 2008 un mec de "calcul scientifique" merci bien... nous autres de "probablités et statistiques" on ne se mélange pas avec la canaille... Donc tu aimerais : http://www.ensai.com/fr/mise à jour-e/c1a2i9175/fo...tin-patilea.htm Il est beaucoup moins impressionant, mais très sympa, il m'a fait aimer les stats Quote
Pogi Posted August 6, 2008 Posted August 6, 2008 Donc tu aimerais : <a href="http://www.ensai.com/fr/mise à jour-e/c1a2i9175/formation/liens-pages-enseignants/valentin-patilea.htm" target="_blank">http://www.ensai.com/fr/mise à jour-e/c1a2i9175/fo...tin-patilea.htm</a> Il est beaucoup moins impressionant, mais très sympa, il m'a fait aimer les stats Il existe plus Quote
NicoPaviot Posted August 7, 2008 Posted August 7, 2008 Merci pour le topo. Je teste dès que j'ai un peu de temps bon ok la solution en deux lignes m'est apparue Ah! ah! : M est ta matrice de taille mxn, v ton vecteur de taille (1,n) et simplement faire ce qui suit est la solution M-ones(m,1)*v Quote
NicoPaviot Posted August 7, 2008 Posted August 7, 2008 j'ai trouvé la solution au probleme Merde, il en reste encore un... Va falloir que je reposte un truc intelligent pour m'en debarrasser Quote
LaurentRomejko Posted August 7, 2008 Posted August 7, 2008 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 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 Quote
Casimir Posted August 7, 2008 Posted August 7, 2008 Va falloir que je reposte un truc intelligent pour m'en debarrasser Ben il n'est pas encore parti Quote
NicoPaviot Posted August 7, 2008 Posted August 7, 2008 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... 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 Quote
LaurentRomejko Posted August 7, 2008 Posted August 7, 2008 Tente plutôt l'histoire ou le droit, c'est plus fait pour les roses apparemment Histoire ou droit tu déconnes, c'est pour les faibles Quote
NicoPaviot Posted August 7, 2008 Posted August 7, 2008 Histoire ou droit tu déconnes, c'est pour les faibles ca ne va pas plaire à tout le monde Quote
RufusTFirefly Posted August 7, 2008 Posted August 7, 2008 Je suis sur que tu te plairais avec mes profs http://www.insa-rennes.fr/~mcamared/ Ptain t'es à l'INSA toi en plus... t'as pas honte d'insulter des collegues... Quote
Casimir Posted August 7, 2008 Posted August 7, 2008 Quand on voit comment 3 pauvres lignes inoffensives de Matlab les/vous retourne... Coupable mon général. J'ai encore mal au crâne des trois seules lignes que je suis arrivé à lire. Histoire ou droit tu déconnes, c'est pour les faibles On se rassure comme on peut Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.