Somme de vecteurs en langage C (correction)
Valou
-
Valou -
Valou -
Bonjour,
J'ai créé un programme qui permet de m'afficher de manière très classique deux vecteurs v et w de taille 10, on ne peut plus normaux. Je voulais afficher le vecteur u qui est la somme des vecteurs v et w, en utlisant la commande gsl_vector_add(v,W) : "int gsl_vector_add(gsl_vector * v, const gsl_vector * w)" qui ajoutent les éléments de v à ceux de w.
Le problème c'est qu'il m'affiche correctement v et w, mais pour u, il m'affiche le vecteur nulle de taille 10... Pas très logique. Quelqu'un pourrait-il m'aider à trouver mon erreur svp?
Un grand merci d'avance.
Voici mon code :
int main(void){
int i;
gsl_vector * v = gsl_vector_alloc(10);
gsl_vector * w = gsl_vector_alloc(10);
gsl_vector * u = gsl_vector_alloc(10);
for(i=0; i<10; i++){
gsl_vector_set(v, i, 1.23+i);
}
for(i=0; i<10; i++){
printf("v_%d = %g\n", i, gsl_vector_get(v,i));
}
for(i=0; i<10; i++){
gsl_vector_set(w, i, i+2.23);
}
for(i=0; i<10; i++){
printf("w_%d = %g\n", i, gsl_vector_get(w,i));
}
for(i=0; i<10; i++){
gsl_vector_set(u, i, gsl_vector_add(v,w));
}
for(i=0; i<10; i++){
printf("u_%d = %g\n", i, gsl_vector_get(u,i));
}
gsl_vector_free(v);
gsl_vector_free(w);
gsl_vector_free(u);
return 0;
}
J'ai créé un programme qui permet de m'afficher de manière très classique deux vecteurs v et w de taille 10, on ne peut plus normaux. Je voulais afficher le vecteur u qui est la somme des vecteurs v et w, en utlisant la commande gsl_vector_add(v,W) : "int gsl_vector_add(gsl_vector * v, const gsl_vector * w)" qui ajoutent les éléments de v à ceux de w.
Le problème c'est qu'il m'affiche correctement v et w, mais pour u, il m'affiche le vecteur nulle de taille 10... Pas très logique. Quelqu'un pourrait-il m'aider à trouver mon erreur svp?
Un grand merci d'avance.
Voici mon code :
int main(void){
int i;
gsl_vector * v = gsl_vector_alloc(10);
gsl_vector * w = gsl_vector_alloc(10);
gsl_vector * u = gsl_vector_alloc(10);
for(i=0; i<10; i++){
gsl_vector_set(v, i, 1.23+i);
}
for(i=0; i<10; i++){
printf("v_%d = %g\n", i, gsl_vector_get(v,i));
}
for(i=0; i<10; i++){
gsl_vector_set(w, i, i+2.23);
}
for(i=0; i<10; i++){
printf("w_%d = %g\n", i, gsl_vector_get(w,i));
}
for(i=0; i<10; i++){
gsl_vector_set(u, i, gsl_vector_add(v,w));
}
for(i=0; i<10; i++){
printf("u_%d = %g\n", i, gsl_vector_get(u,i));
}
gsl_vector_free(v);
gsl_vector_free(w);
gsl_vector_free(u);
return 0;
}
A voir également:
- Somme de vecteurs en langage C (correction)
- Langage ascii - Guide
- Votre appareil ne dispose pas des correctifs de qualité et de sécurité importants - Guide
- Formule somme excel colonne - Guide
- Somme si couleur - Guide
- Somme en anglais excel - Guide
Cependant, je débute en C et je ne suis pas familier avec les notions...
Qu'entends-tu par "quel est le prototype de gsl_vector_set?"
=> cette fonction renvoie un void et prend en argument un vecteur, un entier et un réel, enfin il est dit :
void gsl_vecteor_set(gsl_vector * v, size_t i, double x) : this function sets the value of the i-th element of a vector v to x.
Concernant la fonction gsl_vector_add, je crois qu'elle retourne un entier?
=> int gsl_vector_add(gsl_vector * a, const gsl_vector * b) : this function adds the elemets of vector b to the elements of vector a, c_i = a_i + b_i.
Valentin.