Colinéarité des vecteurs

Hum je dois dire que j’ai un peu honte, mais bon la honte ne tue pas alors :slight_smile:
Je suis en train de me prendre la tête, je dois programmer une fonction qui dit si deux vecteurs sont colinéaires ou non… et je n’arrive pas à le faire.
Les dex vecteurs peuvent être à n dimensions (d’où la difficulté).
Ils sont définis sous la forme d’un tableau non contraint de réels.
Je programme ça en Ada, mais bon c’est surtout l’idée qui me manque, donc si vous avez un bout de code en C ou en Java je m’en sortirais très bien.

Merci d’avance !

Mmh… Je n’ai aucune expérience de l’ADA, mais si je devais faire ça en C ce serait un truc du genre:

int is_colineaire (float a[], float b[], int n_dim) { float rapport; int col = 1, i, j; for (i = 0; (b[ i] == 0) && col && (i < n_dim); i++) if (a[ i] != 0) col = 0; rapport = a[ i] / b[ i]; for (j = i; (i < n_dim) && col; j++) { if (b[j] == 0) { if (a[j] != 0) col = 0; } elseif ((a[j] / b[j]) != rapport) col = 0; } return col; } [/quote] où a et b sont tes vecteurs (supposés de même dimension -- sinon ils ne sont de toute évidence pas colinéaires) et n_dim est la dimension desdits vecteurs. is_colinéaire renvoie 1 si les vecteurs sont colinéaires, 0 sinon.

[edit] le BBCode foutait le bordel dans mon beau code…
[edit2] Raah, c’est malin, m’a niqué mes tabulations maintenant… C’est pas possible de désactiver le BBCode dans les blocs [ code] ?

[edit3] Oups, le code que j’avais filé ne marchait pas, mais alors pas du tout. Voici une nouvelle version un chouïa plus longue mais qui devrait fonctionner.

[Edité le 20/3/2003 par Wild_Cat]

[Edité le 20/3/2003 par Wild_Cat]

[Edité le 20/3/2003 par Wild_Cat]

Oula Attention pas de politique sur Cafzone !

hein … quoi !? c’est pas de la politique c’est des Math … ?

Eh Caféine ! on peut pas interdire les Math aussi ?
C’est pas interdit par la convention de Geneve de venir torturer les gens sur un Forum ?

Allez c’est parti …

:wink:

Oups, c’est parce que je suis aux facs là, si j’étais à la maison, je t’aurais filé ca volontier…J’ai un bout de code C qui fait ca…Je l’avais pour je sais plus quoi en démonstration…