Skip to content
Snippets Groups Projects
Select Git revision
  • master
  • v2.0
  • v1.0
3 results

poo2019numeric

  • Forked from steven.liatti / poo2019numeric
    24 commits behind, 33 commits ahead of the upstream repository.
    loick.pipolo's avatar
    loick.pipolo authored
    9c8e000e
    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.