Skip to content
Snippets Groups Projects
Select Git revision
  • a31926dac3176384835b3557846b7cd63a539edd
  • master default protected
  • v2.0
  • v1.0
4 results

poo2019numeric

Forked from steven.liatti / poo2019numeric
24 commits behind, 27 commits ahead of the upstream repository.
user avatar
fefe authored
Few fonctions made like .det() -> already tested , mul -> tested, creation function -> tested, info function tested
a31926da
History
Name Last commit Last update
src
.gitignore
README.md
pom.xml

Numeric

Ce repository contient l'énoncé du TP "numeric" et un squelette maven. Nous vous conseillons de vous abonner aux notifications (watch) pour ne pas manquer des annonces ou des changements.

Après avoir choisi votre binôme, vous devrez impérativement :

  • "Forker" ce repository dans votre namespace, le passer en privé et ajouter votre binôme (un seul repository par binôme).
  • Ajouter ce repository comme deuxième remote (différent de origin, nommé base par exemple : git remote add base ssh://git@ssh.hesge.ch:10572/steven.liatti/poo2019numeric.git).
  • Ajouter Joel Cavat (@joel.cavat), Jeremy Gobet (@jeremy.gobet) et Steven Liatti (@steven.liatti) en tant que Reporter de votre repository.
  • Lire attentivement l'énoncé.

Fonctionnalités à réaliser sur les vecteurs (itération 1)

Le projet contient déjà un ensemble de tests unitaires. Faites-en sorte que le projet compile et que les tests passsent.

Vous devez réaliser des fonctionnalités sur les calculs vectoriels (dans un premier temps). Utilisez le package ch.hepia.numeric pour mettre vos classes.

Opérations sur les vecteurs (méthodes d'instance)

(Regardez les tests unitaires pour comprendre comment elles fonctionnent)

  • add(), mul(), sub() pour les opérations de bases
  • norm() pour calculer la norme d'un vecteur
  • t() pour retourner la vesion transposée
  • dot() pour retourner le produit scalaire de deux vecteurs (en notation matricielle)
  • get() pour retourner un élément (le premier élément se trouve en position 0)
  • set() en tant que méthode non publique pour modifier une valeur
  • map() pour retourner une version transformée
  • concat() pour concatener deux vecteurs
  • copy() pour copier un vecteur
  • slice(), sliceTo(), sliceFrom() pour les opérations de slicing
  • removed() pour retourner une sans un des éléments
  • toString() et equals() pour une représentation et la comparaison de vecteur
  • Toutes ces fonctionnalités doivent exister sur un vecteur transposé.
  • Retourne RuntimeException() avec un message approprié en cas d'erreurs
Vecteur
x=[x1x2...xn]\vec{x} = \begin{bmatrix} x_1 \\ x_2 \\ ... \\ x_n \end{bmatrix}
Transposée
xt=[x1x2...xn]\vec{x}^t = \begin{bmatrix} x_1 & x_2 & ... & x_n \end{bmatrix}
Produit scalaire en notation matricielle
xty=[x1x2...xn][y1y2...yn]=i=1nxiyi\vec{x}^t \cdot \vec{y} = \begin{bmatrix} x_1 & x_2 & ... & x_n \end{bmatrix} \cdot \begin{bmatrix} y_1 \\ y_2 \\ ... \\ y_n \end{bmatrix} = \sum_{i=1}^n x_i \cdot y_i
Norme d'un vecteur
v(v1v2...vn)=v=v12+v22+...+vn2\vec{v} \begin{pmatrix} v_1 \\ v_2 \\ ... \\ v_n \end{pmatrix} = \lVert \vec{v} \rVert = \sqrt{v_1^2 + v_2^2 + ... + v_n^2}
Map
map(x,f)=[f(x1)f(x2)...f(xn)]map(\vec{x}, f) = \begin{bmatrix} f(x_1) \\ f(x_2) \\ ... \\ f(x_n) \end{bmatrix}

Opérations statiques (méthodes de classes)

(Regardez les tests unitaires pour comprendre comment elles fonctionnent)

  • of()
  • empty()
  • fill()
  • zeros()
  • ones()
  • linespace()
  • tabulate()
  • sum()
  • norms()

Remarques

Les constructeurs doivent être non publiques. Pour créer un élément, vous devez utilisez une fabrique (méthode statique) tel que of() ou empty()

Fonctionnalités à réaliser sur les matrices (prochaine itération)

TBD

Maven

Maven est un gestionnaire de projets et d'automatisation de production pour l'écosystème Java.

Le fichier pom.xml décrit le projet avec ses dépendances.

Exécutez votre projet

  • compilation et téléchargement des dépendances. Produit un jar dans le dossier target.
mvn package
  • exécutez à l'aide de java et du classpath:
java -cp target/my-app-0.1.jar ch.hepia.my_app.App
  • ou, à l'aide du plugin exec-maven-plugin (plus simple):
mvn exec:java

Exécutez les tests uniquement

mvn test

Notes

Le plugin maven-assembly-plugin est configuré et permet d'embarquer les dépendances dans un seul jar.