{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "#!/usr/bin/env python3\n",
    "# -*- coding: utf-8 -*-"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 2C16 Exercice 49 page 325 : CORRECTION\n",
    "# Programme permettant de représenter et de modéliser la caractéristique U=f(I) d'un dipole"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Question a : Compléter les deux cellules suivantes selon les consignes puis les exécuter."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np                        \n",
    "from matplotlib import pyplot as plt      \n",
    "\n",
    "# Définition de 2 listes pour les 2 variables I et U\n",
    "I=[0.00,0.99,2.00,2.98,3.95,4.96,5.92] # I (en mA)\n",
    "U=[0.00,1.02,2.03,3.02,4.00,5.03,6.01] # U (en V)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "[encoded data, 9788 characters]\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Affichage du nuage de points expérimentaux de coordonnées (I,U): U=f(I)\n",
    "plt.title('Caractéristique U=f(I)')# Titre du graphe\n",
    "plt.xlabel('I (en mA)')            # Légende axe I\n",
    "plt.ylabel('U (en V)')             # Légende axe U\n",
    "plt.axis([min(I),max(I),min(U),max(U)])# Minimum et maximum des axes\n",
    "\n",
    "plt.plot(I,U,'r+',ms=10,label='U=f(I) exp')# Trace le nuage de points\n",
    "\n",
    "plt.grid()                         # Affiche une grille\n",
    "plt.legend()                       # Affiche la légende\n",
    "plt.show()                         # Affiche la figure"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Question b : Compléter les trois cellules suivantes selon les consignes puis les exécuter."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Modélisation du nuage de points par la fonction np.polyfit()\n",
    "# Calcule les coefficients de la fonction modélisant le nuage de points et les range dans un tableau nommé Modele\n",
    "Modele = np.polyfit(I,U,1)\n",
    "a,b = [coef for coef in Modele] # Affecte les coefficients du modèle aux variables a,b,c...(à choisir)  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "[encoded data, 16612 characters]\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Choix du modéle linéaire et affichage de la modélisation de la caractéristique \n",
    "\n",
    "U_mod = [a*i for i in I] # Liste des ordonnées de la modélisation\n",
    "\n",
    "plt.title('Caractéristique U=f(I)')# Titre du graphe\n",
    "plt.xlabel('I (en mA)')            # Légende axe I\n",
    "plt.ylabel('U (en V)')             # Légende axe U\n",
    "plt.axis([min(I),max(I),min(U),max(U)])# Minimum et maximum des axes\n",
    "\n",
    "plt.plot(I,U,'r+',ms=10,label='U=f(I) exp')    # Trace le nuage de points\n",
    "plt.plot(I,U_mod,'b-',label='U=f(I) modélisé') # Trace les points de coordonnées I et U_mod en bleu et reliés  \n",
    "\n",
    "plt.grid()                         # Affiche une grille\n",
    "plt.legend()                       # Affiche la légende\n",
    "plt.show()                         # Affiche la figure"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Expression du modèle\n",
      "U(en V)= 1.0134 x I(en mA)\n"
     ]
    }
   ],
   "source": [
    "print('Expression du modèle') \n",
    "print('U(en V)=',round(a,4),'x I(en mA)')       # Affiche l’équation du modèle en précisant les unités."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
