<jupyter_start><jupyter_text>Interpolation linéairePour cette partie, nous allons importer une bibliothèque graphique nommée matplotlib qui va nous permettre d'afficher des graphiques:<jupyter_code>import math
import matplotlib.pyplot as pyplot<jupyter_output><empty_output><jupyter_text>Dans l'étape précédente, nous avons défini la position des moteurs à l'aide de position successives:<jupyter_code>xs = [0, 1.2, 2.5, 3.3, 4.2, 5]
ys = [0, 6, -3, 4, -2, 0]
pyplot.step(xs, ys, where='post')
pyplot.show()<jupyter_output><empty_output><jupyter_text>Le problème de cette méthode est que le mouvement des moteurs est discontinu. Cela implique des mouvements saccadés. Nous aimerions plutôt des transitions continues, par exemple linéaires:<jupyter_code>xs = [0, 1.2, 2.5, 3.3, 4.2, 5]
ys = [0, 6, -3, 4, -2, 0]
pyplot.plot(xs, ys)
pyplot.show()<jupyter_output><empty_output><jupyter_text>Pour ce faire, nous proposons d'écrire une fonction Python ``interpolate`` qui prend en paramètre un tableau ``xs``, ``ys`` ainsi qu'une abcisse ``x`` et retourne la position interpolée linéairement correspondant à ``x``.Par exemple, si on utilisait la courbe ci-dessus et que l'on appellait ``interpolate(xs, ys, 0.5)``, la fonction retournerait ``3``. Si ``x`` est plus petit que le premier abcisse, ou plus grand que le dernier, vous retournerez respectivement la première ordonnée ou la dernière.<jupyter_code>def interpolate(xs, ys, x):
    
    return 0<jupyter_output><empty_output><jupyter_text>Vous pouvez tester votre fonction avec le code ci-dessous, qui l'appellera pour toutes les valeurs par pas de 0.2 avec les points ci-dessus:<jupyter_code>xs = [0, 1.2, 2.5, 3.3, 4.2, 5]
ys = [0, 6, -3, 4, -2, 0]
x_interpoles = []
y_interpoles = []
x = -1

while x < 6:
    x_interpoles.append(x)
    y_interpoles.append(interpolate(xs, ys, x))
    x += 0.2

pyplot.scatter(x_interpoles, y_interpoles)
pyplot.show()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.11834625322997416, 'fraction_numerical': 0.029974160206718347, 'mean_word_length': 5.453333333333333, 'pattern_counts': {'":': 0, '<': 22, '<?xml version=': 0, '>': 21, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '238985', 'license': 'MIT', 'n_tokens_mistral': 776, 'n_tokens_neox': 753, 'n_words': 225, 'path': 'quadruped/Interpolation.ipynb', 'repo_name': 'Sdelpeuch/IntroductionRobotique', 'size': '1935'}