{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Chapitre 3\n", "## Exercice 46 p 76 : Détermination d'une composition finale d'un système par un outil numérique \n", "**Correction**\n", "\n", "Programme permettant de determiner l'état final d'un système siège d'une transformation chimique considérée comme totale \n", "ainsi que l'avancement maximal de la réaction d'équation $~~2~R_1 + R_2 \\rightarrow P_1 + 3~P_2 ~~$ à partir de l'état initial connu : $n(R_1)_i = 3,0~\\text{mol}$; $n(R_2)_i = 2,0~\\text{mol}$; $n(P_1)_i = n(P_2)_i = 0~\\text{mol}$.\n", "\n", "**Initialisation des données :**" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "a=[2,1] # Affecte la liste des nombres stoechiométriques associés aux réactifs\n", "b=[1,3] # Affecte la liste des nombres stoechiométriques associés aux produits\n", "nR=[3.0,2.0] # Affecte la liste des quantités initiales des réactifs\n", "nP=[0,0] # Affecte la liste des quantités initiales des produits\n", "x=0 # Initialise l'avancement\n", "dx=0.01 # Affecte l'intervalle d'avancement" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Simulation de l'avancement progressif de la transformation :**" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "while nR[0]>0 and nR[1]>0: # Tant que les quantités des deux réactifs restent strictement positives...\n", " x=dx # ... l'avancement augmente de dx\n", " nR[0]-=a[0]*dx # ... n(R1) diminue \n", " nR[1]-=a[1]*dx # ... n(R2) diminue\n", " nP[0]+=b[0]*dx # ... n(P1) augmente\n", " nP[1]+=b[1]*dx # ... n(P2) augmente" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Affichage des résultats :**" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Affichage de la valeur de l'avancement final, maximal :\n", "print(\"Si la réaction est considérée comme totale, alors xf = xmax =\",'{:.2f}'.format(x),\"mol.\")\n", "\n", "# Affichage des quantités restantes en chacun des réactifs (une boucle est envisageable, cf. ci-après) :\n", "print(\"La quantité finale de réactif R1 vaut :\",'{:.2f}'.format(nR[0]),\"mol\")\n", "print(\"La quantité finale de réactif R2 vaut :\",'{:.2f}'.format(nR[1]),\"mol\")\n", "\n", "# Affichage des quantités formées en chacun des produits :\n", "for k in range(2): #Pour chacun des deux produits...\n", " print(\"La quantité finale de produit P\"+str(k+1)+\" vaut :\",'{:.2f}'.format(nP[k]),\"mol\") #... affiche la quantité" ] } ], "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 }