Méthode strassen problème de découpe en blocs
Résolu
L28
Messages postés
159
Date d'inscription
Statut
Membre
Dernière intervention
-
L28 Messages postés 159 Date d'inscription Statut Membre Dernière intervention -
L28 Messages postés 159 Date d'inscription Statut Membre Dernière intervention -
Bonsoir!
alors j'avoue, le vrai titre aurai du être: Java.... et moi! en fin soyons sérieux,
j'ai un petit problème pour programmer un moyen de calcul de produit matricielle avec la méthode de strassen
(pour ceux à qui ça parle sinon pour les autres c'est pas grave je vais essayer d'être explicite, Strassen c'est un
mathématicien qui a voulu faire un système de produit de matrice autre que le standard pour avoir une complexité plus faible (n^2,8 au lieu de n^3))
voilà ça c'est pour introduire mon sujet.
et donc j'ai particulièrement un problème avec la découpe de la matrice en blocs, j'arrive à localiser plus ou moins d'où vient mon erreur (méthode copierPart()) MAIS je n'arrive pas à la résoudre alors que je sais que ça doit être évident:
alors voici une partie de mon code:
//et la méthode qui plante:
exemple: enfin si tout marchait bien...
voilà mais ça ne marche pas... et je n'ai pas envie de prendre sur le site de sun la méthode strassen car ce serait complètement inutile pour moi... j'ai envie de faire dans... l'original! donc si quelqu'un vois peux me dire qu'est ce qu'il y a à corriger dans copierPart ou même dans les Variables je lui en serai entièrement reconnaissant.
bonne soirée!
alors j'avoue, le vrai titre aurai du être: Java.... et moi! en fin soyons sérieux,
j'ai un petit problème pour programmer un moyen de calcul de produit matricielle avec la méthode de strassen
(pour ceux à qui ça parle sinon pour les autres c'est pas grave je vais essayer d'être explicite, Strassen c'est un
mathématicien qui a voulu faire un système de produit de matrice autre que le standard pour avoir une complexité plus faible (n^2,8 au lieu de n^3))
voilà ça c'est pour introduire mon sujet.
et donc j'ai particulièrement un problème avec la découpe de la matrice en blocs, j'arrive à localiser plus ou moins d'où vient mon erreur (méthode copierPart()) MAIS je n'arrive pas à la résoudre alors que je sais que ça doit être évident:
alors voici une partie de mon code:
classe calcul public static Matrice strassen(Matrice a, Matrice b,int Nmin){ int n = a.getTaille(); //taille de la matrice, celle ci étant carrée int m = 0; m = n/2; Matrice c = new Matrice(new double[n][n]); //matrice finale qui contient le résultat Matrice a1 = new Matrice(new double[m][m]); Matrice a2 = new Matrice(new double[m][m]); Matrice a3 = new Matrice(new double[m][m]); Matrice a4 = new Matrice(new double[m][m]); a1.copierPart(0,m,0,m, a); a2.copierPart(m,n,m,n, a); a3.copierPart(m,n,0,m, a); a4.copierPart(0,m,m,n, a); //permet de faire les blocs } classe matrice{ private double matrice1[][]; public Matrice(double matrice[][]){ matrice1 = matrice.clone(); } public double getVal(int i, int j){ return matrice1[i][j]; } <code>
//et la méthode qui plante:
public double[][] copierPart(int d,int b,int e,int c, Matrice a){ for (int i=0; i< b; i++ ){ // for (int j=0; j< c; j++ ){ // matrice1[i][j] = a.getVal(i + d, j + e); // d= n°ligne ou l'on commence à prendre les valeurs, b= n°ligne maximale, e début pour colonne, c fin pour colonne, a matrice où l'on prend les valeurs
exemple: enfin si tout marchait bien...
|1 1 2 9| |1 3 2 8| => |1 1| pour copierPart(0,1,0,1) |4 4 4 5| => |1 3| |0 3 7 3| et |2 9| pour copierPart(0,1,2,3) |2 8|
voilà mais ça ne marche pas... et je n'ai pas envie de prendre sur le site de sun la méthode strassen car ce serait complètement inutile pour moi... j'ai envie de faire dans... l'original! donc si quelqu'un vois peux me dire qu'est ce qu'il y a à corriger dans copierPart ou même dans les Variables je lui en serai entièrement reconnaissant.
bonne soirée!
A voir également:
- Méthode strassen problème de découpe en blocs
- Optimisation découpe panneau gratuit - Télécharger - Outils professionnels
- Découpe photo instagram - Guide
- Code blocs - Télécharger - Langages
- Découpe mp3 - Guide
- Logiciel decoupe video mp4 - Guide
5 réponses
Bonjour.
Je suis en train de travailler sur un devoir du même type, et j'ai regardé ta méthode copiepart.
Un probleme est déja que tu déclares public double[][] mais tu ne retournes pas de double[][] a la fin, tu ne fais que modifier la partie matrice1[i][j] de ta Matrice courante de d à b et e à c... enfin un truc du genre. Je ne sais pas trop comment m'exprimer.
Tu devrais instancier une autre Matrice C (par exemple) dans ta méthode, qui fait la taille du bloc que tu veux copier : Matrice C = new Matrice(new double[b][c]);
et ensuite tu modifies cette matrice la : C.getmatrice1[i][j] = a.getVal(i + d, j + e);
puis tu retournes C.
Tu vois ce que je veux dire?
tu serais pas a l'ESSTIN par hasard?
Je suis en train de travailler sur un devoir du même type, et j'ai regardé ta méthode copiepart.
Un probleme est déja que tu déclares public double[][] mais tu ne retournes pas de double[][] a la fin, tu ne fais que modifier la partie matrice1[i][j] de ta Matrice courante de d à b et e à c... enfin un truc du genre. Je ne sais pas trop comment m'exprimer.
Tu devrais instancier une autre Matrice C (par exemple) dans ta méthode, qui fait la taille du bloc que tu veux copier : Matrice C = new Matrice(new double[b][c]);
et ensuite tu modifies cette matrice la : C.getmatrice1[i][j] = a.getVal(i + d, j + e);
puis tu retournes C.
Tu vois ce que je veux dire?
tu serais pas a l'ESSTIN par hasard?
eh zut! je me suis fait repéré! mdr^^!!!
oui ben oui TPP3, non au final j'ai complètement changé de manière de faire car je n'arrivais pas à enlever cette arrayindexoutofBoundException! donc j'ai fait une méthode qui créer une petite matrice qui sera le bloc et elle prend les valeurs de la grande matrice en fonction d'un décalage donné en paramètre, au lieur d'avoir 4 paramètres j'en ai deux.
maintenant j'ai D'autres problème, la matrice que strassen me donne est fausse... et ça c pas terrible...
puis je n'arrive pas à déterminer si la matrice est de taille n avec n multiple de 2 (la méthode %2 ne marche pas.... sur mon code)
voilà....
puis je n'arrive pas à refaire la matrice finale avec touts les bloc calculés...aussi
oui ben oui TPP3, non au final j'ai complètement changé de manière de faire car je n'arrivais pas à enlever cette arrayindexoutofBoundException! donc j'ai fait une méthode qui créer une petite matrice qui sera le bloc et elle prend les valeurs de la grande matrice en fonction d'un décalage donné en paramètre, au lieur d'avoir 4 paramètres j'en ai deux.
maintenant j'ai D'autres problème, la matrice que strassen me donne est fausse... et ça c pas terrible...
puis je n'arrive pas à déterminer si la matrice est de taille n avec n multiple de 2 (la méthode %2 ne marche pas.... sur mon code)
voilà....
puis je n'arrive pas à refaire la matrice finale avec touts les bloc calculés...aussi
si ca peut t'aider j'ai fait une methode "recoller" mais j'sais pas si elle marche beaucoup plus que "copierpart"
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question