summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--PVCM/cama/fr/ma25 Drones -- Exercice.ipynb70
-rw-r--r--PVCM/cama/fr/ma26 Vecteurs propres -- Exercices.ipynb54
-rw-r--r--PVCM/cama/fr/ma34 ACP -- Exercice.ipynb1863
-rw-r--r--PVCM/cama/fr/ma35 Système matriciel -- Exercices.ipynb81
-rw-r--r--PVCM/cama/fr/ma40 Méthodes itératives.ipynb4
-rw-r--r--PVCM/cama/fr/ma42 Surrelaxation pour Gauss-Seidel -- Exercice.ipynb4
6 files changed, 1938 insertions, 138 deletions
diff --git a/PVCM/cama/fr/ma25 Drones -- Exercice.ipynb b/PVCM/cama/fr/ma25 Drones -- Exercice.ipynb
index 019ce93..64ae0c5 100644
--- a/PVCM/cama/fr/ma25 Drones -- Exercice.ipynb
+++ b/PVCM/cama/fr/ma25 Drones -- Exercice.ipynb
@@ -1,25 +1,4 @@
{
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.11.8"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 5,
"cells": [
{
"cell_type": "markdown",
@@ -114,11 +93,29 @@
"execution_count": null,
"id": "4818926d",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[[ 1. 0. 0. 0.]\n",
+ " [ 0. 1. 0. 20.]\n",
+ " [ 0. 0. 1. 80.]\n",
+ " [ 0. 0. 0. 1.]]\n",
+ "[[-20. 20. 0. 0. 0. 0. 0.]\n",
+ " [ 0. 0. 0. 0. 0. -10. 10.]\n",
+ " [ 0. 0. -5. 5. 0. 0. 0.]]\n"
+ ]
+ }
+ ],
"source": [
- "\n",
"def circle(boat, t):\n",
- " "
+ " up = np.array([0,20,80])\n",
+ " goUp = np.identity(4)\n",
+ " goUp[:3,3] = up\n",
+ " print(goUp)\n",
+ " print(boat)\n",
+ "circle(boat,0)"
]
},
{
@@ -291,5 +288,26 @@
"outputs": [],
"source": []
}
- ]
-} \ No newline at end of file
+ ],
+ "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.13.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/PVCM/cama/fr/ma26 Vecteurs propres -- Exercices.ipynb b/PVCM/cama/fr/ma26 Vecteurs propres -- Exercices.ipynb
index c62c0b1..c9682db 100644
--- a/PVCM/cama/fr/ma26 Vecteurs propres -- Exercices.ipynb
+++ b/PVCM/cama/fr/ma26 Vecteurs propres -- Exercices.ipynb
@@ -9,7 +9,7 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
@@ -73,7 +73,7 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 5,
"metadata": {},
"outputs": [
{
@@ -83,7 +83,7 @@
" [1, 1]])"
]
},
- "execution_count": 3,
+ "execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
@@ -147,28 +147,28 @@
},
{
"cell_type": "code",
- "execution_count": 47,
+ "execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"def fibo(n):\n",
" F = np.array([[0,1],[1,1]], dtype=int)\n",
" D, P = lin.eig(F)\n",
- " return (P @ lin.matrix_power(np.diag(D),n) @ lin.inv(P))[0]"
+ " return (P @ lin.matrix_power(np.diag(D),n) @ lin.inv(P))[1,0]"
]
},
{
"cell_type": "code",
- "execution_count": 48,
+ "execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "array([5., 8.])"
+ "np.float64(8.0)"
]
},
- "execution_count": 48,
+ "execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
@@ -187,15 +187,15 @@
},
{
"cell_type": "code",
- "execution_count": 51,
+ "execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "84.8 μs ± 7.75 μs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n",
- "109 μs ± 6.71 μs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n"
+ "128 μs ± 71 μs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n",
+ "102 μs ± 6.96 μs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n"
]
}
],
@@ -224,7 +224,7 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 14,
"metadata": {},
"outputs": [
{
@@ -237,10 +237,10 @@
" [1, 1, 1, 0, 0, 0, 0, 0],\n",
" [0, 0, 1, 1, 1, 0, 1, 0],\n",
" [1, 1, 0, 1, 0, 1, 0, 1],\n",
- " [1, 0, 0, 0, 0, 0, 0, 0]])"
+ " [1, 0, 0, 0, 0, 0, 0, 0]], dtype=int32)"
]
},
- "execution_count": 2,
+ "execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
@@ -281,21 +281,21 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "[[0.774 0.387 1.419 1.419 1.032 1.29 1.548 0.129]]\n",
- "[[0.542 0.5 1.25 1.583 0.833 1.75 1.292 0.25 ]]\n",
- "[[0.742 0.426 1.127 1.608 0.756 1.636 1.526 0.179]]\n",
- "[[0.672 0.497 1.183 1.527 0.748 1.635 1.496 0.242]]\n",
- "[[0.694 0.487 1.19 1.542 0.766 1.613 1.489 0.219]]\n",
- "[[0.683 0.484 1.189 1.545 0.771 1.622 1.481 0.226]]\n",
- "[[0.686 0.482 1.187 1.546 0.767 1.624 1.485 0.222]]\n",
- "[[0.686 0.484 1.186 1.546 0.767 1.624 1.485 0.223]]\n",
+ "[[0.615 0.308 1.538 1.538 0.923 1.231 1.538 0.308]]\n",
+ "[[0.513 0.513 1.231 1.538 0.821 1.846 1.333 0.205]]\n",
+ "[[0.776 0.439 1.114 1.62 0.743 1.62 1.519 0.169]]\n",
+ "[[0.668 0.493 1.184 1.523 0.756 1.622 1.501 0.252]]\n",
+ "[[0.689 0.489 1.196 1.539 0.764 1.618 1.486 0.218]]\n",
+ "[[0.685 0.483 1.186 1.547 0.772 1.621 1.481 0.224]]\n",
+ "[[0.685 0.482 1.187 1.546 0.767 1.624 1.485 0.223]]\n",
+ "[[0.686 0.484 1.186 1.545 0.767 1.624 1.485 0.223]]\n",
"[[0.686 0.484 1.187 1.545 0.767 1.623 1.485 0.223]]\n",
"[[0.686 0.484 1.187 1.545 0.767 1.623 1.485 0.223]]\n",
"[[0.686 0.484 1.187 1.545 0.767 1.623 1.485 0.223]]\n",
@@ -311,8 +311,8 @@
"\n",
"while (np.absolute(np.max(vprime - v)) > 1e-5): # which norm is used here?\n",
" v = vprime\n",
- " vprime = \n",
- " vprime *= \n",
+ " vprime = A @ v\n",
+ " vprime *= N / vprime.sum()\n",
" print(vprime.T)\n"
]
},
@@ -333,7 +333,9 @@
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "val"
+ ]
},
{
"cell_type": "code",
diff --git a/PVCM/cama/fr/ma34 ACP -- Exercice.ipynb b/PVCM/cama/fr/ma34 ACP -- Exercice.ipynb
index 9cd80ca..9f21377 100644
--- a/PVCM/cama/fr/ma34 ACP -- Exercice.ipynb
+++ b/PVCM/cama/fr/ma34 ACP -- Exercice.ipynb
@@ -1,25 +1,4 @@
{
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.8.10"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2,
"cells": [
{
"cell_type": "code",
@@ -67,7 +46,7 @@
"source": [
"#### réponse :\n",
"\n",
- "..."
+ "On pose $y = x^2$"
]
},
{
@@ -87,21 +66,37 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"N = 50\n",
- "x = ... # x varie entre -3 et 3\n",
- "z = ...\n",
+ "x = 6 * np.random.random(N) - 3 # x varie entre -3 et 3\n",
+ "z = -1.3 * np.square(x) + 0.2 * x + 1.54 + (2 * np.random.random(N) - 1)\n",
"nuage = np.array([x,z])"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 34,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABFYAAANlCAYAAABWiX3rAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAewgAAHsIBbtB1PgAAdu9JREFUeJzt3QmUXGWZP+AvkECMIEkImyQShARQUZAkCgRBkIggmxjUERBwAdwyqAOjjmzKfwYcxMgIQQeCoAwMLrigDBhZBCOETUGBxEgwEWQLiBAgCfT/vHesmupOdS23q7u25zmnT9+quvfWrbW7fvV+7zesp6enJwEAAABQt7Xq3wQAAACAIFgBAAAAyEmwAgAAAJCTYAUAAAAgJ8EKAAAAQE6CFQAAAICcBCsAAAAAOQlWAAAAAHISrAAAAADkJFgBAAAAyEmwAgAAAJCTYAUAAAAgJ8EKAAAAQE6CFQAAAICcBCsAAAAAOQlWAAAAAHISrAAAAADkJFgBAAAAyEmwAgAAAJCTYAUAoAUdeeSRadiwYdnPRRdd1OzDaVvuRwAGm2AFgLa1ZMmS4gem+InT9dhjjz2K255yyimDdpwAAHQuwQoAADTY9ddfXwxuI8QFoHMJVgAAAAByGp53QwAAaHXRV0VvFQAGk4oVAAAAgJwEKwAAAAA5CVYAoM6pWlesWJHOPffcNH369LTJJpukddddN02YMCG9733vSzfffHNDr3/ixIlrzHq0bNmy9IUvfCG94Q1vSKNHj04vf/nL07bbbps+8YlPpAcffDDXPhsxXe1zzz2XrrzyyvTJT36yeN+ss846ab311suu8+CDD04XXHBBWrlyZV33wZNPPpm+9KUvpSlTpqQxY8Zk+9tmm23Shz70obRgwYLieqUzRNXiiSeeSGeddVbae++9s8dv5MiR2f35mte8Jn3sYx9Lt912WxoscT8deOCBafPNN8+eP+PHj8+O45JLLkmrV6/Otc+enp70gx/8IH3gAx9IkydPThtssEF2m+K2HXTQQelb3/pW7n2XEzNp9Z1V69lnn01f//rX02677ZY23XTT7Pq32GKL9P73vz/dcMMNdd+eK664IntdbbXVVtnjHj+x/A//8A/pu9/9brZOI56/5W5L3FcXX3xxetvb3lZ8nDbbbLPsvvzJT35S9X5561vfWjwvbnvp87PwE6+Lcn7xi1+kD37wg2n77bfPnpPDhw9Po0aNyp4ncd/+4z/+Y3YM9b6WABgkPQDQph544IH4VFX8idP12H333YvbnnzyyWXX+cAHPlBcZ+7cuT2/+93verbbbrte19v356STTmrQLezp2WKLLXrdvh/84Ac9G2ywQb/X/bKXvaznJz/5SV37rKbvfVDOr3/965711luv4v1S+Jk4cWLPHXfcUdPt/8UvftGzySab9LuvtdZaq+eUU07J1i09v5r/+I//qHg/xs+wYcN6jj766J4XXnihp1H+9re/9ey7774Vr3f69Ok9Dz/8cE33e8FvfvObnh122KHqfb/NNttkz+FGiNdM6evnvvvuq/ra+PCHP9yzevXqqvteuHBhz4477lj19uy00049ixcvrrivWu7Hvrdl2bJlPbvsskvF6z7qqKN6XnzxxYr7qvYTr8VSzzzzTM8BBxxQ8/bf/OY3q96XAAw+zWsBoEYPPfRQ9u31ww8/nH2LXPhW/vHHH8++Yf7rX/+arXfaaadlVQ/vec97Gnr9P//5z9Oxxx6bXnzxxfSqV70q7bzzzukVr3hFeuCBB7KpXeMb9qgaOfTQQ9M999yTttxyyzRUoqrkmWeeyZY33njj9NrXvjb7dj2qaaLC5w9/+EO69dZbs2OMKpndd9893XHHHWnrrbfud5+//vWv0zvf+c5s+xDf8E+dOjXbd3xTH/tbtGhRViEwbty4mo81vu2fPXt28XRsG/dlPJbPP/98uvPOO7P7L7KaCy+8MHvcr7rqqrTWWgMr9F21alXab7/90o033lg8L67zLW95S1p//fWz++imm27KfqK659WvfnVN+4397b///unpp5/OTo8YMSK7nyZNmpQtx/0d+4zbdv/996dddtklzZ8/P2233XapUeK5/453vCN7LkZlR0wvHJUyURV03XXXpaeeeipb75vf/GZ2HFEJ0p977703e3489thjxfOicmOHHXbIngPx+Nx9993Z+bfffnt2e+I+iCqdRojn8T777JM9B6JKJF7ncVv+9re/Zbfl0UcfzdabO3duVjl14okn9tp+2rRpWcXTn//856wyKbzyla/MHtO+Ntxww16nDzvssPSjH/2oeDpeHzvuuGMaO3Zs9vyJ+yRuey2VZgAMoSEIbwCgIypW1l133ez3iSee2PPss8/2Wu+JJ57o2XPPPYvrvvrVr+556aWXegaqtLokrv/lL395zyWXXLLGvu+5556ezTffvNe36UNdsfK5z32u5+677+53P4888kjP4YcfXtzXXnvt1e+6zz33XM+kSZOK62655ZY9t9566xrrXX755T2jRo0qPjbVKlYuuOCC4jqveMUrsm/8V65cWbZSpvT+POOMM3oG6rTTTutVDXP66aevUb1x//3397zhDW/I1llnnXWq3u9R2bLxxhsX1zviiCN6HnrooTXW+8tf/tJz8MEHF9fbfvvta6ocqaS0MqNwrHvvvXd2TKVWrFjR89GPfrTX43PppZeW3WdUBxVuf/zEbbv22mvXWO9//ud/esaNG1dc741vfGPZxzFPxUrhuRTbxeu6VLzu3/e+9xXXjSqtqDIp57rrriuuF+811dx111299vvTn/6033WjSudLX/pSz49+9KOq+wVg8AlWAGhbQx2sxM9nP/vZfvcXH14j+CisG2HDQJWGIPFh/Gc/+1m/68YQoNIPZqtWrRqyYKUe73jHO4r7+/3vf192nfPOO6+4TgQnf/jDH/rd3/e///01hkiU8/TTT/eMHj26GARUe3zi2EaOHJmtv+GGG64RptXjqaeeym5H4fgKw5fKefTRR3s222yzXrenv/s9hioV1vnkJz9Z8RgiSCkN/y677LKegeg75CWGIkUg1p/DDjus13CwcsNoLrzwwuI6I0aMqDhkLIK24cOHF9f/1re+1ZBgJX4iPOlP3MYJEyZUvR/rDVbOOeec4vqf//znq64PQOvQvBYAarTRRhulk046qd/Lo1lrDPUoiKEqjRTDYmKIQn/23XffbGhJYThDDKloRdFMtHR4UznR5LZ06E40LO1PDLEobRTanxjWUxiS8tGPfjS96U1vqrh+DJWJRrAhhrRcffXVKa9LL720OKQphkh99rOfrfg8O/XUU6vuM4aFfPvb386W43E/44wzKq6/9tprp9NPP714+jvf+U5qpGgEHM1q+/OVr3wlGyYUYijLtddeu8Y6559/fnH5uOOOy4bB9CeGO334wx8unj7vvPNSI0TD5TjW/sRtjIa6jX6dF4ZyFZ4DALQPwQoA1Cj6WFT64BhKPwg2ug/CzJkzK14e/SdipqDBuv5aRYAQPWeij8m//Mu/pFmzZqWPf/zjxZ//+q//Kq571113rbF99LKI/iulfSeqqWWdn/70p8XlmFWmFnvuuWdxOfqU5BW9OQqi9058eK/kve99b9V1IpQqzArzrne9q+pzM0SYFH1vBnp7+oqwqFq4FWFBhH/l7pPC4146E9PRRx9d9XpjZqiCmCEqZiUaqJjRqhBQDuXrPPq4FEQPmkIQB0Dr07wWAGoUDTSrKW1GWfoNdCdcfzXLly/PKnriQ2F8SK5FNP7t67e//W166aWXsuVozhtTSVdTrfokRMPWgm984xvZ9MPVxNTWBUuXLk15RcPVgmiUW000s33d617XK2CqdHviPovQqt6GwxFEFIKWgXjzm99c0zTXcdtjSui+90nhNkRj5hDTKr/+9a+vur9oaBvHH7cjtv3Nb36TNbNtx9dZhE6F2xKPezzvY8rlqIKLICcqjgBoTYIVAKjRBhtsUHWdmIWlIGbx6KTrr+TBBx/MZrf505/+VNd25QKY0tlgohKilg/ssV4lMTSq9Lr+8z//M9Urgoi8Sm9TzOhUi1ivUrASsxUVFGYTynObGhGs1HObyt0nfU9H9UYtj3vM1BTr3nffff0Gde3yOouwJp6XRxxxRLbPCPJixqv4iaApwsOYLSkq5yJQAqB1GAoEQNsaPrz39wOFYRG1euGFF8p+UOpPLR/0BlOzr7+SGFpTCFWi2uL444/PepL88Y9/zEKNqCb4e9P8XkNACpUppQrTNoeY7rYW8cGzksJU2AMRU0Xnlec2VQs8mn2bSuW5TX1DtdL7qJ6wp9I+2+11FkPAomdL9A0qfU+K+2bevHlZRVhUr0yZMiX98pe/bNpxAtCbihUA2lbfb5ZLP5jVonT90aNHN+y4Ok258KPUr371q+ynEHD8+te/Tq95zWv6Xb/ah9/SkKTWPhPVemv0/aAew5bGjBmThkrcpkIQMhi3KZqtRpjVLHluUwRw/T3u9fRKqbTPdhTVKN///vezRss33nhjsRop+s8UqmNuv/32rKdN9Cuq1nsJgMGnYgWAthUfokobdj7wwAM1bxuVE6VNJ7tpFo7Sb8JrqVioVhkR36QXxCw6lUKVwrChSsaNG1dc/vOf/5xqUdoLpZwIzgoz0oS//OUvaSiVPr9qHS5VradLzELVrNvTV57bVPo4972P4vGM12gtoV+lfbazeM4ecMAB6cwzz8yCyxjmNHfu3OJwqqgCi9mtnnvuuWYfKkDXE6wA0Nbe+MY3FpdLZxSpJnoylFas7LTTTqlbREPYgphGuJq777674uWlvT5qafwZ38JXEk1Lo3dGIdQp9M+opJYpb6dNm1Zcvvnmm9NQKp1FJip6qonn5j333FNzw96hvj193XLLLTWtV9pwt/S1W3jcCw1ao6qp2vMuRLPaQsVKbFs6K1azNXpIUbxuY6rymHGrEBJG2FJ6nwLQHIIVANpa6RSvV1xxRXFWkWouvfTSXo1Pt9pqq9QtJk6cWHG641IRVlWrBCqEILUMCYkQ5oc//GHVD5ClQcR3vvOdVM23v/3tquu8853vLC6fd955NVVEDMbz9PLLL6/a8DTWKe0BVM7b3/72Yp+hqGiIkKFZomrk+uuvr7hOhAClU173nZ45KtCid0jBRRddVPV6L7jggl7BWSMa8TZKaTVdIxtJx3vVa1/72uLpRx55pGH7BiAfwQoAbe0jH/lI8VvuxYsXp69+9atVt4n1zj777OLpKKfvJqWVDpWmHI5hQrNmzaq6v1e/+tXF5R/96Ef9rhehVzxetTQZPvroo4vL8ZhWCnfiOkuHI/XnmGOOKfbSidl2Tj311FSrCAVqDe36a+5baPAaIcQZZ5zR77pRRRRNSqvZfPPN02GHHZYtR0gUs8nUOvVvDKHpOyvPQH3mM5+pGAbF5c8//3y2vMUWW6S999677GNU8PWvfz2bgrk/0Wfk/PPPL54+9thjUyspnZK5liFttc5oFM/Dhx9+uHh64403znmEADSKYAWAthb9Bj7+8Y8XT//TP/1T+sIXvtBvg9Srrroqmxa4MHwgqje6LVh5z3veU6wyiWEE//zP/7xGaBA9LqLCIyohSnuTlLPffvsVhz1E1UJ8gO7b9yF6gBxyyCHZ/V9LVcFRRx2Vtt566+KwmLe97W3ZB+m+vvvd72ahRbVjLDQ7Lg3UIliJnjD99QeJsCKG2MTzI55nA+llEdd9wgknFE9HcBLhSt/7fdGiRVngEJU966yzTtX9nn766WmzzTbLliOEiKqNa665pt/143GN+2CbbbbJqmIaJY41Hp+DDjpojQqKCFM++clP9grx4rhLK50K3v/+9xeH80QAF1U5pbNIFfz85z9P73jHO4o9gmJY0fve977USrbccstimBZ9hRYsWFBx/Xjvivemiy++OGtc21/o9uEPf7gYrER11y677DIIRw9APcwKBEDbi+aO8aEyPoDFh+EvfelL6ayzzkpvfvObsw/E8aE7vg2OPhCl3xxH9UIMH+o7u1Cni2qB+Hb/3HPPzU7HB/yYXSQ+1MXwhajoiUAhPthGoLHppptWHGqz7bbbpsMPPzz7QBjivo+hVlOnTs2+TY8mwdFXJfYXwz2+/OUvV60ueNnLXpYNBYmQIQKNmLY59hfVNtEcN/YVfVUWLlyYrf8f//EfxYCtUm+L6FER+/riF7+YnY5jjqFGMRNL3I6YmSaCnAggYphUI6Y0LvjsZz+brr322uy+jedpBFqzZ89Ou+++e3a9f/jDH7IpdCNsidsZQz5Kh6yV88pXvjIbWrXvvvtmz/H7778/CyOimiVClmgIG8NQ4rLo2VJPg+d6HHfccdlxxBTbEVbuscceacKECVkQEK/LJ598srhuBGERoPQX0MRzMe6TqKiJQG7PPffMwpZ4jEI8LqXDnuI5FtvUMmX6UIpKugiaCo9h3Cf77LNP9p5UqLIbO3Zs+tznPpctx3MiHv/4icvj+bjddttls1fFayDeuwqvy4J///d/z14rADRZDwB0gJUrV/Z86lOf6llnnXWicUbVnze/+c09CxcurLrfD3zgA8Vt5s6dW3X9WKewfmw7UFtssUVxfw888EDDjve5557r2XfffSveR+985zt7nnzyyZr2+eyzz/bMmDGj4v7Gjx/fc9NNN/Vcd911xfN23333irfn2muv7dloo4363edaa63Vc8opp2SPf+G8DTbYoOr9dPnll/e88pWvrOm5Ej/Tpk3ref7553sG6q9//WvPPvvsU/G6dtlll56HHnqorufekiVLevbaa6+ab88mm2zSc/XVVw/otpx88snF/cXyvffe27PNNttUvN6jjz66Z9WqVVX3ff/99/fsuOOOVW/HG9/4xp4//OEPFfdVy/3Y97ZUU+tzOB6XTTfdtN/jj9d3wcc//vGaH7/111+/5xvf+EbV4wRgaKhYAaAjxLfVUSnxqU99Kl1yySXZkJR77703+8Y8vuGNb32jSe2uu+6afYsc34J3s6hM+clPfpJ90x9DNKLnSFRnxLf/UR0QlR3vfve7a57ZJIY8/OxnP8u+nY/93XnnnVm/j5j+NnqwxDCg2Gc8DtWanJaKipmYFSgqUq688sqs2iQqMKIiIypsoidHVLKUDj8p9FGp5NBDD00HHnhguuyyy9L//M//ZMM0okIiqlViqFLsP6oFdtttt6waZPLkyakRYuhG3E/f//73s4qcuN7ly5dn91NcX1RyRN+UeqsvogophsfE0K6owooKoejlEpUi0eA2+n1MmjQpaw47Y8aMrHqi0Pi2UaLCIm7PhRdemP77v/87q8CJIS0xLXS87qK/Tt+Gtf2J+zsaJ8dQr+9973tZddKjjz6aXRbP0ajoiednPK8aPftOI8XjEtU18fyNIVpRYRXDFMtNc37OOedkw87icYyZo373u99lw9Ri/cJjGE1r4/GLCjG9VQBax7BIV5p9EAAAAxFDbOIDZ4jhFhFeMLhOOeWUYgPgk08+OTsNAN1I81oAoO2VNmKNChYAgKEiWAEA2lo0JS40zi00RwUAGCqCFQCgJUV/iZkzZ6abbropmzGlr5g9J2Yrillwou9KOOCAA7JeHwAAQ0XzWgCgJb300ktZ89L4iUadO+20U9pss82yqWijWW00ao2GswVx2Zw5c5p6zABA9xGsAAAtL2aEqdSQNma7iQAmwhUAgKEkWAEAWtLEiROz/ik//vGPs+lnly1blh5//PFsCt/11lsvm8Z35513Tu9617vS/vvv3+zDBQC6lOmWAQAAAHLSvBYAAAAgJ8EKAAAAQE6CFQAAAICcBCsAAAAAOQlWAAAAAHISrAAAAADkNDzvhjTG888/n+6+++5seaONNkrDh3tIAAAAoNFWr16dHnvssWx5++23TyNHjmzIfn2Kb7IIVaZNm9bswwAAAICuceutt6apU6c2ZF+GAgEAAADkpGKlyWL4T2littlmmzX1eAAAAKATPfzww8URI6WfxQdKsNJkpT1VIlQZP358U48HAAAAOt3wBvY3NRQIAAAAICfBCgAAAEBOghUAAACAnAQrAAAAADkJVgAAAAByEqwAAAAA5CRYAQAAAMhJsAIAAACQk2AFAAAAICfBCgAAAEBOghUAAACAnAQrAAAAADkJVgAAAAByEqwAAAAA5CRYAQAAAMhJsAIAAACQk2AFAAAAICfBCgAAAEBOghUAAACAnAQrAAAAADkJVgAAAAByEqwAAAAA5CRYAQD4uwVLlufebiDbAgDtS7ACAJBSOvvahWnmnPnpvOsX17VdrB/bDWTbuG4AoD0JVgCArhdVI7PnLcqWz7j6vpoDklgv1i/Iu21ct8oVAGhPghUAoOtNnTg2nbjPtnUFJH1DlYFsG9cdxwAAtB/BCgBASum4PbaqOVwpF4wMZNu4bgCgPQ1v9gEAALSKQsBRCD4Kv0uDj2rByEC2BQDaj4oVAIAaK1eqBSMD2RYAaE/Denp6epp9EN1s2bJlacKECdny0qVL0/jx45t9SABAmSBk9KgR6akVq2oKRgayLQDQXp+/VawAAJTRt/qknmBkINsCAO1FsAIA0I8IQKLapFScriUYGci2AED7EKwAAPQjhvSUVpuEOF1tOuWBbgsAtA/BCgBAjX1SaplOeaDbAgDtRbACANBHuRl87jppRr8z/jRqWwCg/QhWAABKVJoWOX6//02v6jcgqbTtlIljhCsA0IEEKwAANQQj4exrF6bv3PKntPvkjdYISCptG5fNnDM/Pb/qReEKAHQYwQoAQA2hyoIly9PseYuy5RsWPrZGuFIpVClcFturXAGAziJYAQC6XoQmlUKVMHXi2F6BSN9wpdy25cKa2E9c3jdciWMAANqPYAUA6HoRdszaa1K/oUpB30Ckb7hSLVQp3W/pvuK64xgAgPYzvNkHAADQCo7fe3KaPmlc1YCjEI4UQpMIV6Kh7UE7bl7ctlqoUrqvGBokVAGA9qViBQDg72oNOPpWrkRD29uWPFlXqFLvdQIArUnFCgBADn0rV+L3+TcuTk+tWFVzqAIAtD8VKwAAOfWtXBGqAED36fpg5bbbbkunnXZamjFjRho/fnxad91103rrrZcmT56cjjrqqHTTTTc1+xABgBYW4cnoUSN6nRenhSoA0B26eijQW97ylvTLX/5yjfNXrlyZFi1alP1cdNFF6Ygjjkjf/OY30zrrrNOU4wQAWlf0VCmtVAlxOs4XrgBA5+vqYOWhhx7Kfr/yla9MM2fOTLvttlt61atelV588cU0f/78dNZZZ6U///nP6eKLL06rVq1Kl156abMPGQBoIX0b1UalSiFkKZwvXAGAzjasp6enJ3Wpd77znVk1yiGHHJLWXnvtNS5//PHH06677poWLlyYnb7hhhuyKpdGWrZsWZowYUK2vHTp0mw4EgDQ+vqb/afeWYEAgKExWJ+/u7rHyk9+8pN06KGHlg1Vwrhx47KqlYLvfve7Q3h0AECrqhSe9G1oG+vF+gBAZ+rqYKUWb33rW4vLixf7pwgAul0tFSnCFQDoHoKVKl544YXicn+VLQBAd6hnmI9wBQC6g2CliuirUrDddts19VgAgOZZsGR53b1TyoUrsR8AoHN09axA1bz00kvp3/7t34qnox9LnuY4lTz88MO5jg0AGFpTJ45Ns/aalGbPW1RXQ9rCehGqxPaxn0aIgCbPvvJuBwCUJ1ip4Oyzz0633nprtvyud70r7bTTTnXvo9BxGABof8fvPTlNnzSu7mAiwpUpE8c0LNA4+9qFdQc8pUOZIuCJ2wIADJyhQBWGAP3zP/9ztrzxxhun8847r9mHBAC0gLzhSCMrVSJUqbdvS2l/mNjekCQAaAwVK2X87ne/SwcffHBavXp1GjlyZLriiiuycCWPmBu72lCgadOm5TxSAKDbREATlSqFkKTwu1LlSrmmu4YDAUBjCFb6eOCBB9KMGTPSk08+mc0CdNlll6W3vOUtufc3fvz4hh4fANBcrdDbpLRvS7VwpZ6ZjACA+hkKVOKhhx5Kb3vb27Lfw4YNSxdeeGE68MADm31YAECLiN4mM+fMr3va5Fg/tovtG6WW6ZyFKgAw+AQrf/f444+nvffeO/3xj3/MTp9zzjnpiCOOaPZhAQAtohV7m1QKV4QqADA0DAVKKf31r39Nb3/729Pvf//77HRMsfyxj32s2YcFALSQVu1tUm5Y0Pk3Lk5PrVjV63qFKgAwOLq+YmXFihVpv/32S3fccUd2+vOf/3w68cQTm31YAEALqmX4TcFQVoz0PS6hCgAMna4OVlauXJnN/nPzzTdnp2fNmpW+9KUvNfuwAIAW1qq9TWL/o0eN6HVenBaqAMDg6uqhQO973/vSNddcky3vueee6YMf/GC65557+l1/nXXWSZMnTx7CIwQAWlGlWXma1dskrre0UiXE6ThfuAIAg2dYT09PT+pSMfNPPbbYYou0ZMmShh7DsmXL0oQJE7LlpUuXmp4ZANpI3xAlKkSaMQynVY4DAFrZYH3+7uqhQAAA7d7bpFyFzF0nzai5FwwAMDBdHaxEsU49P42uVgGAbpd36uFGTlnczr1NKg07qqfRLgCQX1cHKwBA85x97cI0c878uj/sx/qxXWzfCir1Nhns663Wy0W4AgCDT7ACAAy5qDiZPW9R3R/2S8OE2L7ZlSvlepsU1HO76r0d9TTIFa4AwOASrAAAQ27qxLF1f9gvFybEfpo13KhRvU3qrdyJ4yq93l232rDqsKNy4UqzQykA6BSCFQCgKeqppMg7hfFgDTdqVG+TPJU7ESZFmFJw8+InagpJSo9r1l6TagqlAIDqBCsAQNPUEkLkDVUGa7hRI3ub5K3ciTCl9PprDUniuK44dud0/N6Ta1ofAKhOsAIANFWlECJvqDJYw40Go7fJUFTulFKpAgCNNbzB+wMAqFshHCiEBvH7/Bt7z7aTJ0Qot9/S8+sJLfr2NqnleMpd/5SJY9YIN2o5zkaEKgBA46lYAQBaQt/KjYGGKo0ebhRhSPQmqfd4au1tMliVOwDA4BrW09PTM8jXQQXLli1LEyZMyJaXLl2axo8f3+xDAoCm2uG0a3qFKjGFccy2M1D9hRP1hhZRuZJnOE2t25WbwrlRIRMAdLNlg/T521AgAKBlRKhQGiKEOB3nDzRMaNRwo7w9SuppMFt6nEIVAGhthgIBAC2hXKVGQT2z+jRjuFGjxXGU3v4Qp1vl+ACA/yNYAQCartxwnBj+U++sPrUMx8kTWvSdcrmZlTsAQGsRrAAATVWpx0k9UxFXc/a1C9PMOfPTBy68ta7QIs6P7WL7TqncAQAaR7ACADRNLY1jGxGuRMXJ7HmLsuUbFj5Wc2hRenyx/WBXrgxV5Q4A0DiCFQCgKeqZjWeg4Uo0jt198ka9zovTlUKLcseXt3FtK1XuAACNZVYgAGDIReVHPVMc9zerz5SJY2qewri0UiXE6dLZhkr3++s/PtFr/cFubFtr5U7f4yw9HwBoDhUrAMCQizBk1l6T6g4tSis3YvtaQ5XS0KK0cqVQ+dG3IqTVQpUClSsA0HpUrAAATXH83pPT9Enj6h5eE+FCPZUq5UKL0vNLKz/6VqpECDOYocpQV+4AAI2nYgUAaJq8YUAt21UKLcpVfuxw2jVlhwsNZsPaoazcAQAGh2AFAGiqvMFFte2qhRZ9w5XSKZgLw4WGIrSIyp0rjt257sqYWD+2i+0BgOYRrAAATXP2tQvTzDnz6+4TEuvHdrH9QEKLOL90yuUQp7919LQhDS0Gs3IHABhcghUAoCmi4mT2vEV1N2Et7Y8S29dSuVJpX6WVKiFOx/lCCwCgFoIVAKApIriod4abcs1o8wYgffdVWrlith0AoFaCFQCgaeqZPrieaYmrKbevu06aYSpjAKBughUAoOXDlcEOVSrNFiRcAQAqEawAAE1XKdAYqlCllmMBAOhr+BrnAAA0QSHgKAQf8fv8G3s3lx3sUKXSsZSeDwBQoGIFAGgZfatFGhWqxMxB9Va9lKtcqTYDEQDQfQQrAEBLiUCjdIaeEKcHUi0SMwfN2mtS3QFNabgS25uCGQDoy1AgAKClxJCd0kqVEKfj/IGEK8fvPTlNnzSu7nAkrnPKxDFCFQCgLBUrAEDL6NsHpbRypRFNZPOGI0IVAKA/ghUAoCWUay5710kzzNAzBPL2jtFzBgAEKwBAC6g0Y4/pjwfX2dcuTDPnzK/7Po31Y7vYHgC6mWAFAGiqWqZBFq4Mjqg4mT1vUd33aeljFturXAGgmwlWAICWDlWqhSs+1OcXvWPqDazKPWZ60ADQzcwKBAA0RQQipR/Qa1EIXQrbFX7HVMgx6w/16+8+LRdw1ROEAUC3ULECADRFVDlEIFKqloqJvpUrwXCUgallqJVQBQDKU7ECADRNVJlMnzQu3bbkyZoqJvpjOMrgVq4IVQCgf4IVAKCpIhAphCKGozTXlIljsvuz9HE4/8bF6akVqyre31EtJNgCoFsZCgQAtATDUVpj2uVQ+jhUC1VMuwxAtxOsAABtEa4IVYZu2uUwetSIXuvE6XKhimmXAeh2ghUAoOXDlR1Ou0aoMsTTLpdWqoQ4XVpBZNplAPhfeqwAAC3fSLXacBQaf5+XVqoU7v/SywRdAPC/BCsAQEuKD+p9G6eWG47C4DrmLeVnCyoQqgDQ7QwFAgBaUgw1qTYchcbpO7SnoHBe6VChAqEKAKhYAQDa4EN+ueEoPtA3Trl+KX2rVPo2swUA/pdgBQBoKf3N/lN6vnClcarNtlSuz03fyzwOAHQzQ4EAgLb4kF9pKmbyiemRK4UqsVxu2uW+j4NplgHoZoIVAKAtKieCcKWxYnrkWXtN6vf+7q/PTWH9ENubZhmAbmYoEADQFqFKf9MCG44yMMfvPTlNnzRujXCkWp+beIyuOHZnoQoAXU/FCgDQ0sNRyilXuWI4Sn7VQpW4r+86acYa9/ltS54c0uMEgFYkWAEAWno4Si3hSrsMR8kb/gxlaKTPDQDUx1AgAKBlh6NUEx/0p0wc0xahytnXLkyz5y2qKzwqDToiPIr7qRX63ARDsQDgf6lYAQBaQt5wpB1Clag4iVCl3iqP0qAjth/MypV6+9yoXAGA/yVYAQAYZBH+1BtElAs6BitE0ucGAPITrAAADIF6qjzqqR5phG7qcwMAjabHCgDAEKmlP8lQhyrd1OcGAAaDihUAgBapXGlWqNINfW4AYLCoWAEA2lb09MjzoT7vdoNZuXL+jYvTUytWNS1UAQDyUbECALSlmL545pz5dc9GE+vHdrF9K1WuCFUAoD0JVgCAttMO0xfXIsKT0aNG9DovTgtVAKB9CFYAgLbT6tMX1yqOqbRSJcTpeqpwmh0OAUC3E6wAAG2placvrkXfYypVaxVOqwxrAoBuJlgBADo6XGm3UKXWcKXVhjUBQLcSrAAALanWoKCVpy8up9wxlR5/LeFKI4Y15Q1iBDgA0JtgBQBo+xl/yoUrO5x2TVuEKnFMfY+/UrjSiLCo3WdUAoBWMrzZBwAAUGnGn5AnEGm16YurBSKF5XJDhErPG2iokvf+7Tv0aPqkcU1v/gsArUDFCgDQcTP+tNr0xRFm1BKIVKtcaUQFTqfMqAQArUKwAgB01Iw/fdU7ffFgiBBi1l6TagpEKoUrjarAafcZlQCglRgKBAC0pL5DY8oNW6lWqVIYDjSQIUWNcvzek2sePlNpWFCjgo08969QBQDWpGIFAGhZ9cz4Uyq2ueukGXUPeRls9Qyfidse4dBgDmtqtxmVAKAVqVgBAFpaucqK829c3Ks5banSAKCWqoxWFcFG39tYGNbU6HCl2v0rVAGA/qlYAQBaXt/KilpClf62bYXKlWr6VouUVq4MxvFXun+FKgBQmWAFAGgL5YbGlKoUALRTuFJuCM5QDGsaiqFHANCJBCsAQFsoNzSmnqqKcuFKTIPcSir1NRnscKjS0CMAoH+CFQCg5VUaGlOP0nAipj+up5nsYKulWexghStDPfQIADqJYAUAaGmNHhoT4cQVx+6cTX/cKuqZgafR4Uqzhh4BQKcQrAAALWuwhsa0UqVKDEeqd1rjRg1raubQIwDoFIIVAKAlNXNozFCKkCeGJdU7A89AhzV1y/0LAINt+KBfAwDAIA+NCYX1C7/baTabGJY0fdK4usORuI1TJo4ZlFCl9DrK3b95rjdEZU0rVQwBwECpWAEAWkozh8Y0U96wod7tGnX/zpwzv+7qlVg/tjv72oV1bQcArUywAgC0lGYNjekWjbh/8wwNKq2SmT1vUdsFXwDQn2E9PT09/V7aZR588MH0ta99LV111VVp6dKlad11101bbbVVOvTQQ9PHPvaxNGrUqIZf57Jly9KECROy5bjO8ePHN/w6AKAd5R0yYqjJ4N+/ty15sq6ql3qGHgHAYBmsz9+Clb/78Y9/nA477LD09NNPl7188uTJWeCy9dZbN/R6BSsAQDuqNSwRqgDQKgbr87ehQCmlO++8M73nPe/JQpX11lsvnX766elXv/pVmjdvXvrwhz+crbNw4cK03377pb/97W/NPlwAgKarZcYgoQoA3cCsQDEOe9as9Nxzz6Xhw4ena665Ju28887Fy/bcc880adKkdMIJJ2ThyllnnZVOOeWUph4vAEArqDQjk1AFgG7R9UOBbr311vSmN70pWz7mmGPSnDlz1ljnpZdeSq973evSvffem0aPHp0effTRNGLEiIZcv6FAAEC76xuijB41Ij21YlXxtFAFgFZgKNAgufLKK4vLRx11VNl11lprrXTEEUdky0899VS67rrrhuz4AADabViQUAWAbtL1wcpNN92U/X75y1+edtppp37X23333YvLN99885AcGwBAu4jwJCpVSsVpoQoAna7rg5UY3hNitp/osdKfbbfddo1tAAD4v+FApZUqIU73bWgLAJ2mq5vXPv/88+nxxx/PlquNrRozZkxW1fLss89mY7HqGcNVycMPP1zzvgAA2q3HSmlDWwDoRF0drJROnRzTLFdTCFaeeeaZmq+j0BgHAKAT9Tf7T+n5whUAOtla3V6xUrDOOutUXX/dddfNfsfUzAAA3a7SlMp9G9rGeoYFAdCJurpiZeTIkcXllStXVl3/hRdeyH6/7GUvq/k6qg0biqFA06ZNq3l/AACtHqoUFE6rXAGgk3V1sLL++usXl2sZ3hPDgGodNlTQqHmxAQDaKVQpEK4A0OnW6vaKlQ033LCmJrNPPvlkMVjRNwUA6FYLliyvOVQpKDcsKPYDAJ2gq4OV8JrXvCb7/Yc//CGtXr263/Xuu+///oHYbrvthuTYAABazdSJY9OsvSbVHKqUC1di+9gPAHSCrh4KFKZPn55++ctfZtUot99+e3rTm95Udr0bbrihuLzrrrsO4RECALSW4/eenKZPGld3OBLhypSJY4QqAHSUrq9YOeigg4rLc+fOLbvOSy+9lC6++OJsefTo0emtb33rkB0fAEAryhuOCFUA6DRdH6zEjDy77bZbtnzBBRek+fPnr7HOWWedle69995sedasWWnEiBFDfpwAAABA6+n6oUBh9uzZ2fCe5557Ls2YMSN97nOfy6pS4vRll12WvvGNb2Tr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LgA0unKlr9KQpO/65apchCoAALURrFRwyy23pK9+9avZ8vjx49Nxxx1X9z4mTJgwCEcGALUrF5L0DVeEKgAA+RgK1I9HHnkkvfvd786qVYYNG5a+9a1vpVGjRjX7sABgDdUa1fYnwpPRo0b0Oi9OC1UAADqsYiWCjYGaO3duOvLII2ta929/+1vab7/9isN4/u3f/i3tueeeua536dKlVYcCTZs2Lde+AaCWUKVck9rCtn37scTpOF+4AgDQQcHKUHr++efTgQcemG6//fbs9Gc+85l0wgkn5N5fDCECgKEOVaLypDQ06Ruu9N22dP3+ghgAANo0WCnMyjMQm222WdV1YthPNKi97rrrstMf+tCHsua1ANBOoUqhR0rfdfpbLre+cAUAoIOClW237T2N5GB46aWX0uGHH55+/OMfZ6ff8573pPPPP3/QrxcABiNU6W+2oL7bVZstqPR8AADWpHnt3x1zzDHpsssuy5b333//9O1vfzuttZa7B4DWsmDJ8ppClYI4HefnXT+uK4IcAADKkxyklD71qU+l//zP/8yW99prr3TFFVek4cPbopgHgC4zdeLYNGuvSWucX2mK5Dh/98kb9TovTldaX7gCAFCbrg9WTjnllHT22Wdny7vsskv64Q9/mNZdd91mHxYA9Gv6pHE1hyqFKpcbFj7W67w4Hef3p1y4Uml9AIBu1dVlGeecc0469dRTs+XNN988nXnmmemBBx6ouM0222yTRowYMURHCAD9V63MnreoaqjSd/2oVIlQJU7H+ZWU9lypZX0AgG40rKenpyd1qT322CPdcMMNdW0TwcvEiRMbdgzLli1LEyZMyJaXLl1qemYAahYVJPWEHYX1824HANDOlg3S5++uHwoEAO2q3rCjsH7e7QAAWFNXDwW6/vrrm30IAAAAQBtTsQIAAACQk2AFAAAAICfBCgAAAEBOghUAAACAnAQrAAAAADkJVgAAAAByEqwAAAAA5CRYAQAAAMhJsAIAAACQk2AFAAAAICfBCgAAAEBOghUAAACAnAQrAAAAADkJVgAAAAByEqwAAAAA5CRYAQAAAMhJsAIAAACQk2AFAAAAICfBCgAAAEBOghUAAACAnAQrAAAAADkJVgCgxSxYsnxItwMAID/BCgC0kLOvXZhmzpmfzrt+cV3bxfqxXWwPAMDQEawAQIuIipPZ8xZly2dc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ePWdrlUTTGgttQzRE64AUE7XByuPPfZYeu9735uFKjvssEO6+uqrs+E/pXbdddf0oQ99KK1cubJpxwlAZzbB9IEMmq+evkfCFQD66voeK5/97GfTE088kUaNGpWuvPLKNUKVUuuss86QHhsA7U8TTGhtC5Ysr7vvUbn+SbEfALpTVwcrTz75ZLr00kuz5cMOOyxtscUWzT4kADqIJpjQ+qZOHJtm7TWp7r5HpeFKbB/7AaA7dfVQoOib8txzz2XLBxxwQPH86Kvy0EMPpfXWWy+rYBk2bFgTjxKAdqQJJrSP4/eenKZPGld3OBKv2SkTxwhVALpcVwcrv/71r4vL22+/fVqwYEH6/Oc/n+bNm5deeuml7PyNNtooHXrooekLX/hCxWFC/Vm2bFnFyx9++OEcRw5AK9MEE9pP3nBEqAJAVwcrv//973tNtxwNalevXr1Gc9uvf/3r6Xvf+17W2PYNb3hDXdcxYcKEhh0vAK1PE0wAgO7S1T1Wli//vyZjMcVyDPn50pe+lP70pz+lF154If3ud79LRx55ZHb5X/7yl3TQQQelp59+uolHDEAr0wQTAKD7dHXFyrPPPltcjumWL7744nT44YcXz3vNa16T5s6dm80G9I1vfCMtWbIknXfeeenEE0+s+TqWLl1adSjQtGnTct4CAFqxCebseYvqboJZCFU0wQQAaC/Denp6elKLa0Tz2AhICtUnBa973euyqpTw+te/Pv3mN78pu21Mx7z55ptnVSw77rhjuuOOO1KjRA+WwnChCGHGjx/fsH0D0BxRcZInHMm7HQAAzfv83dVDgdZff/3i8owZM/pdb8MNN0xTpkzJliN8Wbly5ZAcHwDtSRNMAIDu0RZDge69994B72OzzTZb47xIqgozA1VrMlu4PGYLit4sm2666YCPCQAAAGhvbRGsbLvt/zX1a6TXvva16YorrsiWX3zxxYrrll4+fHhb3G0AAADAIOvqoUBvectbist//OMfK667ePHi7PfIkSPT2LFKtQEAAADBStpoo42y5R//+Mf9Vq088MAD6a677sqWd91117TWWl19twEAAAB/19UJwdprr50+85nPZMsPPvhg+uIXv7jGOqtXr04f/ehHs94q4dhjjx3y4wQAAABaU1cHK+GTn/xkeuMb35gtn3rqqel973tfuvrqq7MplaP/SlS1xOmw7777pkMOOaTJRwwAAAC0iq7vwho9U37yk5+k/fffP91+++3psssuy376ilAlzh82bFhTjhMAAABoPV1fsVKYijmmXZ4zZ07afffds74rI0aMyKZUPuCAA9L3v//9dNVVV6X111+/2YcKAAAAtJCur1gpnUL5mGOOyX4AAAAAaqFiBQAAACAnwQoAAABAToIVAAAAgJwEKwAAAAA5CVYAYIAWLFk+pNsBANA6BCsAMABnX7swzZwzP513/eK6tov1Y7vYHgCA9iVYAYCcouJk9rxF2fIZV99Xc7gS68X6IbZXuQIA0L4EKwCQ09SJY9OJ+2xbPF1LuFIaqoTYPvYDAEB7EqwAwAAct8dWNYcr5UKV2B4AgPYlWAGAIQhXhCoAAJ1JsAIAgxyuCFWgO5ghDKA7CVYAYBDDlR1Ou0aoAl3ADGEA3UuwAgCDGK48tWJVcVmoAp3JDGEA3U2wAgANFuHJ6FEjep0Xp4Uq0JnMEAbQ3QQrANBg8YGptFIlxOl6hwgA7cMMYQDdS7ACAA3U9wNTaeVKPUMEgPZjhjCA7iRYAYAGKfeB6a6TZtQ9RABoX2YIA+g+w5t9AADQCSp9YCr8Llxe+O0DFXSmcq/582/sPURQqALQOVSsAMAA1fItdD39F4D2Z4YwgO4hWAGAAaintF+4At3FDGEA3UGwAgA5LViyvO5+CeXCldgP0HnMEAbQHQQrAJDT1Ilj06y9JtVd2l8arsT2sR+gs5ghDKB7aF4LAANw/N6T0/RJ4+oORyJcmTJxjFAFumiIYOn5mlgDdA4VKwAwQHnDEaEKdN8MYfosAXQewQoAADSAGcIAupNgBQAABsgMYQDdS7ACAAADYIYwgO4mWAEAgAEwQxhAdzMrEAAADJAZwgC6l4oVAABoADOEAXQnwQoAAABAToIVAAAAgJwEKwAAMAB5Z/MxCxBAZxCsAABATmdfuzDNnDM/nXf94rq2i/Vju9gegPYmWAEAgJwVJ7PnLcqWz7j6vprDlVgv1g+xvcoVgPYmWAEAgJyz+Zy4z7bF07WEK6WhSojtzQoE0N4EKwAAkNNxe2xVc7hSLlSJ7QFob4IVAAAY5HBFqALQuQQrAAAwiOGKUAWgsw1v9gEAAEAnKIQlhRAlfp9/4+L01IpVxXWEKgCdR8UKAAAMUuWKUAWg8wlWAACggSI8GT1qRK/z4rRQBaAzCVYAAKCBoqdKaaVKiNPVpmIGoD0JVgAAoEH6NqotrVypNBUzAO1LsAIAAA1Qbvafu06aUXUqZgDam2AFAAAGqNKUypWmYgag/QlWAABgkEKVAuEKQOcSrAAAwCCGKgXCFYDOJFgBAIAcFixZXnOoUilcif0A0L4EKwAAkMPUiWPTrL0m1RyqlAtXYvvYDwDta3izDwAAANrV8XtPTtMnjas7HIlwZcrEMUIVgA6gYgUAAAYgbzgiVAHoDIIVAAAAgJwEKwAAAAA5CVYAAAAAchKsAAAAAOQkWAEAAADISbACAAAAkJNgBQAAACAnwQoAAABAToIVAAAAgJwEKwAAAAA5CVYAAAAAchKsAAAAAOQkWAEAAADISbACAAAAkJNgBQAAACAnwQoAAABAToIVAAAAgJwEKwAAAAA5CVYAAAAAchKsAAAAAOQkWAEAAADISbACAAAAkJNgBQAAACAnwQoAAABAToIVAAAAgJwEKwAAAAA5CVYAAAAAchKsAAAAAOQkWAEAAADISbDyd1dffXV673vfm1796lenUaNGpZEjR6YJEyakAw88MF1++eXppZdeavYhAgAAAC1meOpyL7zwQnr/+9+fvve9761x2bJly7KfH/3oR+nrX/969nv06NFNOU4AAACg9XR9xconP/nJYqiy8cYbp3//939Pv/jFL9Ivf/nLdO6556YtttgiuyxOR0ULAAAAQMGwnp6entSlHnnkkfTKV74yG+YzZsyY9Nvf/jaNHz++1zpPP/10esMb3pCWLFmSnV6wYEGaMmVKw44hKmJiyFFYunTpGtcPAAAAtO7n766uWLnllluKvVOOOuqosnfqK17xinT88ccXT8+fP39IjxEAAABoXV0drKxcubK4HE1r+7PVVluV3QYAAADobl0drGyzzTbF5T/+8Y/9rrd48eKy2wAAAADdrauDle233z7tsssu2fJFF12UHnrooTXW+dvf/pa++tWvFqtaZsyYMeTHCQAAALSmrp9uee7cuWmfffZJDzzwQHrjG9+YTjjhhOz38OHD0z333JPOPPPM7LJx48al73znO2mdddapuzlOJQ8//PAAbwEAAADQLF09K1DBE088kc4777x0xhlnpGeeeabXZSNGjEizZs3KfvJ0DB42bFjN65oVCAAAAAaHWYEG0Y9//OOsGqVvqBJWrVqV/vu//ztdeumlSQYFAAAAtF2wElUfA/2JHirlfPrTn86mWr7vvvvSQQcdlG6++eYsYHnuuefSHXfckV32pz/9KZ144onp3e9+d3rxxRfrOvZIwSr93HrrrQ26lwAAAICh1tU9Vq666qr0la98JVs+8sgjs34rpXbcccd04YUXZuVBX/ziF9P3v//9dO6556ZPfOITNV+HoT0AAADQudqix0pUkwzUZpttljbYYINe5x188MHpyiuvzCpaonpk8803L7vt888/nzbaaKOskmWHHXZId955Z2r1MV4AAADA4H/+bouKlW233XZQ9nvvvfdmvzfeeON+Q5UwcuTI9NrXvjbdcsstDQl5AAAAgM7QFj1WBktMqRxWr15ddd1oYlu6DQAAAEBXBytbbrllcbrlQvVKOcuXL0/33HNPr20AAAAAujpY2X///YvL//iP/5hWrly5xjovvfRS+uQnP1m87J3vfOeQHiMAAADQutqiee1gibAkmtEWqlW23377bMafN7zhDWnttddOv//979N5552X5s+fn12+ySabZJUr48aNa9gxaF4LAAAAg6+rm9cOlnXWWSf97Gc/SwceeGD6zW9+k+6+++70kY98pOy6MQQopltuZKgCAAAAtLeuDlbCFltskRYsWJAuu+yy9N3vfjfdcccd6bHHHktRyDN27Nj0+te/Ph100EHpiCOOSC9/+cubfbgAAABAC+n6YCWMGDEiHX744dkPAAAAQK26unktAAAAwEAIVgAAAAByEqwAAAAA5CRYAQAAAMhJsAIAAACQk2AFAAAAICfBCgAAAEBOghUAAACAnAQrAAAAADkJVgDoeguWLB/S7QAA6ByCFQC62tnXLkwz58xP512/uK7tYv3YLrYHAKB7CVYA6FpRcTJ73qJs+Yyr76s5XIn1Yv0Q26tcAQDoXoIVALrW1Ilj04n7bFs8XUu4UhqqhNg+9gMAQHcSrADQ1Y7bY6uaw5VyoUpsDwBA9xKsAND1aglXhCoAAJQjWAGAKuGKUAUAgP4M7/cSAOgyhbCkEKLE7/NvXJyeWrGquI5QBQCAUipWAKBC5YpQBQCASgQrANBHhCejR43odV6cFqoAANCXYAUA+oieKqWVKiFOV5uKGQCA7iNYAaCjLFiyfEDb9W1UW1q5UmkqZgAAupNgBYCOcfa1C9PMOfPrDj9i/dju/d/89Rqz/9x10oyqUzEDANC9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TTtGahPv0/FFC/RHsAJ/99GPfjT741fJiy++mP1TFv+Mv+IVr8i+uR6oCy+8MPuWtD8bb7zxgK+DfKZMmZLmzp07qNcRH6pOPfXUbHmrrbZKn/vc59L222+fHnrooTR79ux03XXXZR/wjj766HTppZcO6rHwvx5++OEsVIkqhqgs2GuvvbJ/piLYuvfee9PXvva1tGDBguznbW97W7rjjjuyb7sHynvB0LjzzjvTe97znuwDTzxun/3sZ9Nb3/rW7HRUIsWH6YULF6b99tsvC1nWX3/9XNfz+c9/vhiq7LjjjumEE07IXuOLFy9OZ555ZnYcEeBstNFG6f/9v//X4FtJf+K9Nbzyla9MM2fOTLvttlsWjsbf96geOOuss7Lg6+KLL06rVq1q2Pvu3XffXfHyLbfcsiHXQ32OO+647P+//sTfgYGIv92FUCXeZ2bNmpU99+L5EK/7eD+IL1c222yzLIhl6MT/d88++2zFdX7/+99nfy9C/C+w+eabD+g6vQ90uB6gZj/96U/jK+zs54Mf/GDu/Vx33XXF/cQyrWX33XfPHpv4PZieeOKJng022CC7rle96lU9jz32WK/LV69e3bP//vt7rgyxE044oeeMM87oefrpp8teHo/LoYceWnxcTj311NzX5b1g6O22227Z/T18+PCeX/3qV2tcfuaZZxYfk5NPPjnXddx///3Z/mMfU6ZM6VmxYkWvy5999tns/MJxLFq0KPftoT777bdfz+WXX569jsuJ9+HJkycXnwM33HBD7uuK509hP7SWgb7GazFv3rzi9cTf8r7PuXiuxd/+uHz06NE9y5cvH7RjIf//A4XH8JJLLsm1D+8D3UPtKdQhvsEqiDJhGIj4tvqvf/1rtnzGGWekcePG9bp87bXXTueee272O0TvBwZfPBZRXdBfpULhcSkMEYjhQLSHW2+9tTgM5IMf/GDaeeed11gn+q5st9122XJUjUXVQr2++tWvFnvwRK+el73sZb0uj549cX6I9c4+++xct4f6/eQnP0mHHnpo8X21r3gfjqqVAq9v8vr3f//37Pfw4cN7/S0vfa7F35vw1FNPZf8T0DpiOGcM1wpR3fiud72r2YdEixOsQI1i+E/0VSiU6kX5MAxE9FgIMaysvz/Y0VgxhpuEefPmpb/97W9DeoyUt+GGG6bXv/712XKUctNer7kQTUr7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fXzWWWedrH9GmD9/fsUx2IWy0ChLrfStF4NTnhvDAsL++++fjb2OWaOGkveCxomZl0JUoxSGdZVTWoq966671nUdW265ZfFxqlbSfeONN2a/N9988zRx4sS6roeBiWl0owq18F4ePZM+9rGPtd3fElrzsZk6dWr2d77a+0D87Y9efoVt6p19iMaJmXoKf+832mijIZ2dx/tAZxCsQD+iXLxQAhpT7sbPUIohSPGPX9h9992H9Lqp/kE3ysUL8o7Fj6n3wtNPP52+//3vl10nSoh//vOfZ8sxLWTpuG0G16c+9amsUXHhvo9mlv1VOAwm7wWNU3jNhblz5/ZbpVQI1aPpYEyrXu83j4WhJPFNdOFDU19xfuGb6ljfN5ZDZ8WKFVkj6jvuuCM7/fnPfz6deOKJTTmW0go4r+/W6rsT0yyHrbbaKgs/6xF/q+PvRoi/4f0NC4y//fE/QIjmyTTPz372s2zK7fAP//APQ/r33vtAh2j2tETQqs4555zi9GdnnXVWzds98MADxe123333NS5fvnx5z3XXXVdxHzHF6ujRo4tTrN522225bgP1+8UvflHXdMv7779/rudBeOKJJ4pT6W6xxRY9jz/+eK/LV69ene2/sJ9qzxsa5+STTy7e77vssks2LXK9vBe0pt122y27P2Na3V/96ldrXH7mmWcWH7d4HvQVj1nh8ngvKOf+++/vWXvttbN1pkyZ0rNixYpel8fpOL9wHAsXLmzgLaSSF154oWfGjBnFx3DWrFm59jN37tyKz5Pf/va3PYsWLaq4j/PPP7+4j0033TTX+wz1+9GPftSzatWqmqdbLvc/YLXHv+906gcccED2N73UY4891vOqV70quzze5+NvAs1zyCGHFB+v22+/vaZtvA9QSo8V6EfhG8tIrKO/SqPEN8/xDejrX//67NvTnXbaKWugGf02/vSnP2V9XaIjeWFoSMw+EuswNL71rW+lAw44IPvZY489smmVY0aW6OofQwe+8Y1vFEs2YyrO2bNn576usWPHpjPOOCMde+yx6cEHH0xvetObsm9Ot99++6yR4le/+tViw9T3ve992fEw+KLPwqmnnpotx7eUZ555ZvbtZSXxPKm3hNt7QXPEazaG9zz33HPZTDCf+9znsschTkcZeLzGC32QPv3pT+e6jtj2n/7pn7LhJdEMMa4vKiLim+/Fixdnr/s777wzWzfW01dh6MR76TXXXJMtx3TpMcPbPffc0+/6MZwjHs96xd+LaHQdz60YUhDv69E8OSoeo1LpO9/5TvE44jUfz7uYfp3B94lPfCIb9nHIIYeknXfeORuGF9McR8+d66+/PqseiOXC8MG8Q8Ti+RWzusX7yo9+9KOsn88//uM/ZkM97r777nT66adn7/Uh3hOGqlEq5RuWx9/c8LrXvS698Y1vbMh+vQ90mV4xC5C59957i+nxvvvu29BvqUsvr/QT33aecsopPS+99FIDbxnVlFajVPrZfvvte373u9/1u59aKlYKTjrppKwaob/riufgc889Nwi3lnLi8arlOVD6E493X94LWvsb61e84hX93ueTJ0/u91vGWipWwosvvthz9NFHV3xsP/jBD2brMXTqfW1HNWGeb6pLL6/0s+GGG/ZceeWVQ3DLKYjHtJbHJioY+qtgraVipVCdFn/D+7uOtdZaq+L2DI3zzjuv+JhE1WKtvA9QSsUKVJjDfjCa1sY3FdGrIRqW3nrrrdm0avHNyPPPP5822GCD7JvvqEyIhFszw6EX3yrvsMMO2eMTlSkx3jZmhorGsTHldjSPffe7352NhW7ULFFRHRFNFL/+9a9nM5Y88sgjWW+H6Otz1FFHZd+w0nm8FzRPNCL+7W9/m1WvXHXVVVn/g6hM2HrrrdPMmTPTxz/+8TRq1KgBXUc0Ob7ggguyb8XjW8gFCxZkj++4ceOyJpXRGHkomyMytPbdd9/s8Y/Xd1Qnxft69G6LbCeqFeP9fZ999klHHnlkVhXJ0FamRkPZeGxiRqh4XUafk/XWWy+b7niXXXbJZoSJapaBikqYeI+59NJL00UXXZR+85vfpKeeeir7f2K33XbL3msacT005v/++L+ukVXq3ge6y7BIV5p9EAAAAADtyKxAAAAAADkJVgAAAAByEqwAAAAA5CRYAQAAAMhJsAIAAACQk2AFAAAAICfBCgAAAEBOghUAAACAnAQrAAAAADkJVgAAAAByEqwAAAAA5CRYAQAAAMhJsAIAAACQk2AFAAAAICfBCgAAAEBOghUAAACAnAQrAAAAADkJVgAAAAByEqwAAAAA5CRYAQAAAMhJsAIAAACQk2AFAAAAICfBCgAAAEBOghUAAACAnAQrAAAAACmf/w+eiLMGS1RniwAAAABJRU5ErkJggg==",
+ "text/plain": [
+ "<Figure size 640x480 with 1 Axes>"
+ ]
+ },
+ "metadata": {
+ "image/png": {
+ "height": 434,
+ "width": 555
+ }
+ },
+ "output_type": "display_data"
+ }
+ ],
"source": [
"plt.plot(nuage[0], nuage[1], 'x')\n",
"plt.title('Un nuage de points')\n",
@@ -124,16 +119,827 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 35,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "y = np.square(x)\n",
+ "nuage3D = np.array([x,y,z])"
+ ]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 36,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.plotly.v1+json": {
+ "config": {
+ "plotlyServerURL": "https://plot.ly"
+ },
+ "data": [
+ {
+ "mode": "markers",
+ "type": "scatter3d",
+ "x": {
+ "bdata": "041t7U0R8r+og7drVtnyPxgcLdm9eOe/nHF9XQ/C/r9FUN9uv9AGwFx4ifOixQTAdD++vcE48T+QBYAPycfRv0C9RvrDF8w/RMZJ/ksKA0DMJdH0SIkHQIMfhyqKLfu/YAjBrZ5P7z96dVralrj2v0zrn5I9AgfA+DqU7unN+D9EmyUtQkfxv6xMgJD7X+a/KNrKd/b04D+AjTzK2Mf/PwxXADC3w+g/bgTfmSHjAUBNA+VSbr31v9zBn4rMnPw/DWnXn88t/r+Enbxk57sFQAAIzT22//E/Fv6I7q5P+78ybGAxSnkFQDRGkCaDKfY/RFY8VCGf978DtoIUpYX7v4CIk9rP9Ls/3AG7EajEBsDi2ScmNxX8v6BT8Dy469y/8Fl9EMwo6L9QF1/rXPnLv0szwzX/WPW/7MVhy5+p4D+Yg3vEDncBQDtv87/EWwLAwOEpNb6xuj8KV/OoJakBwBgldCSL0fQ/wGfinN/047+QL1c4LR/ZPwSnivm2Z/6/iZ8CWRwMAcDANAgodliyvw==",
+ "dtype": "f8"
+ },
+ "y": {
+ "bdata": "6pJKDQJn9D/XglmsijT2P9z9c3xYN+E/vSagqXWQDUB8mo31WEQgQDVYAKSg9xpA63SOCGWJ8j/cMTDkScKzP8TKY5yoqag/1gJWHHuoFkAnOkPZpU8hQDwwsPYZFQdA1cAyiwmj7j+xltI1+CEAQNyv7qo4iyBA6UTN6Qs6A0CoTFL8qajyPzoRKJgzSt8/bAawW5P40T93UuUdFJAPQAM0ssw/KuM/B5KusD//E0CTQPhaBIr9P7GS+kFmlQlA4ZHo4CZ2DECdRVQm3oUdQEZXYQxaP/Q/MDr9nT1PB0C89x81+tEcQE5sZV6Usv4/NYpuPNdvAUA/rSq6tKsHQONZ5KdvbIg/mw+tph8zIEDw3IaTLqUIQGRZyMhKI8o/kJL6G2Y94j9YP038Y3SoPzyMVvSMe/w/nuGn3EVa0T8txj5NdRATQCGTXgeJEBVA08X6WrBEhj/h0e4ybH4TQLrA9CKUFvs/7tr/xDbk2D8WSuUH1bjDP96j4DnH4wxAa1DdZ8UpEkDRXzPx8gh1Pw==",
+ "dtype": "f8"
+ },
+ "z": {
+ "bdata": "nGkSTOc75L96ueYqC0brP+B0alO8l/M/CgP1EvU1CcDzIsbUzJchwLXpBctVJyHAqGaRWY6g1j9QCLXwStn4PzJ3fYupjwNAcKCP1+oNF8AQK0gOykgjwPzC5qDczArAAD+QQux33r90CnefYzXgv1BhckPT5SLAXIXIGA2H5r8SL5ZxFR3kv5qOIVYy/+0/kG6u1q4q2j/4jcKCd8MJwJbivMZj8P0/HtgQlyISDsBfpYaQq0n3v9Bnwr90YvW/OC7j0Zv9D8DkgoA6rHMawECjxI/KCvA/QR8YP0Ha/7/eKtszhh0cwCAMr5PlSLI/6WeTLpMFAMDDp4SX+j3/vwINKdhxg/w/ZIv/tKgQJcBu4idpq/gIwPixWVCOv94/FBslu2XJ+T/W+lGASUH2P/FdvIuLvfC/Upok+zgh+T+zaGYrq+0RwI60/OHw9hnA2gCWiROHAUD7v1hI5W0XwPDTt+3pMdi/yiGZVlru1j8OajLhAqXjPwTxIj1tewbAN+UKlDq/DsC6/YggeYYDQA==",
+ "dtype": "f8"
+ }
+ }
+ ],
+ "layout": {
+ "template": {
+ "data": {
+ "bar": [
+ {
+ "error_x": {
+ "color": "#2a3f5f"
+ },
+ "error_y": {
+ "color": "#2a3f5f"
+ },
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ },
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "bar"
+ }
+ ],
+ "barpolar": [
+ {
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ },
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "barpolar"
+ }
+ ],
+ "carpet": [
+ {
+ "aaxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "baxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "type": "carpet"
+ }
+ ],
+ "choropleth": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "choropleth"
+ }
+ ],
+ "contour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "contour"
+ }
+ ],
+ "contourcarpet": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "contourcarpet"
+ }
+ ],
+ "heatmap": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmap"
+ }
+ ],
+ "histogram": [
+ {
+ "marker": {
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "histogram"
+ }
+ ],
+ "histogram2d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2d"
+ }
+ ],
+ "histogram2dcontour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2dcontour"
+ }
+ ],
+ "mesh3d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "mesh3d"
+ }
+ ],
+ "parcoords": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "parcoords"
+ }
+ ],
+ "pie": [
+ {
+ "automargin": true,
+ "type": "pie"
+ }
+ ],
+ "scatter": [
+ {
+ "fillpattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ },
+ "type": "scatter"
+ }
+ ],
+ "scatter3d": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatter3d"
+ }
+ ],
+ "scattercarpet": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattercarpet"
+ }
+ ],
+ "scattergeo": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergeo"
+ }
+ ],
+ "scattergl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergl"
+ }
+ ],
+ "scattermap": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattermap"
+ }
+ ],
+ "scattermapbox": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattermapbox"
+ }
+ ],
+ "scatterpolar": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolar"
+ }
+ ],
+ "scatterpolargl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolargl"
+ }
+ ],
+ "scatterternary": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterternary"
+ }
+ ],
+ "surface": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "surface"
+ }
+ ],
+ "table": [
+ {
+ "cells": {
+ "fill": {
+ "color": "#EBF0F8"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "header": {
+ "fill": {
+ "color": "#C8D4E3"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "type": "table"
+ }
+ ]
+ },
+ "layout": {
+ "annotationdefaults": {
+ "arrowcolor": "#2a3f5f",
+ "arrowhead": 0,
+ "arrowwidth": 1
+ },
+ "autotypenumbers": "strict",
+ "coloraxis": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "colorscale": {
+ "diverging": [
+ [
+ 0,
+ "#8e0152"
+ ],
+ [
+ 0.1,
+ "#c51b7d"
+ ],
+ [
+ 0.2,
+ "#de77ae"
+ ],
+ [
+ 0.3,
+ "#f1b6da"
+ ],
+ [
+ 0.4,
+ "#fde0ef"
+ ],
+ [
+ 0.5,
+ "#f7f7f7"
+ ],
+ [
+ 0.6,
+ "#e6f5d0"
+ ],
+ [
+ 0.7,
+ "#b8e186"
+ ],
+ [
+ 0.8,
+ "#7fbc41"
+ ],
+ [
+ 0.9,
+ "#4d9221"
+ ],
+ [
+ 1,
+ "#276419"
+ ]
+ ],
+ "sequential": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "sequentialminus": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ]
+ },
+ "colorway": [
+ "#636efa",
+ "#EF553B",
+ "#00cc96",
+ "#ab63fa",
+ "#FFA15A",
+ "#19d3f3",
+ "#FF6692",
+ "#B6E880",
+ "#FF97FF",
+ "#FECB52"
+ ],
+ "font": {
+ "color": "#2a3f5f"
+ },
+ "geo": {
+ "bgcolor": "white",
+ "lakecolor": "white",
+ "landcolor": "#E5ECF6",
+ "showlakes": true,
+ "showland": true,
+ "subunitcolor": "white"
+ },
+ "hoverlabel": {
+ "align": "left"
+ },
+ "hovermode": "closest",
+ "mapbox": {
+ "style": "light"
+ },
+ "paper_bgcolor": "white",
+ "plot_bgcolor": "#E5ECF6",
+ "polar": {
+ "angularaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "radialaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "scene": {
+ "xaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "yaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "zaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ }
+ },
+ "shapedefaults": {
+ "line": {
+ "color": "#2a3f5f"
+ }
+ },
+ "ternary": {
+ "aaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "baxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "caxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "title": {
+ "x": 0.05
+ },
+ "xaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ },
+ "yaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ }
+ }
+ }
+ }
+ }
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
"fig = go.Figure(data=[go.Scatter3d(x=nuage3D[0], y=nuage3D[1], z=nuage3D[2], mode='markers')])\n",
"fig.show()"
@@ -150,23 +956,879 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 37,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "cov = np.cov(nuage3D)"
+ ]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 38,
"metadata": {},
- "outputs": [],
- "source": []
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[19.165 2.778 0.139]\n",
+ "[[ 0.068 -0.984 -0.162]\n",
+ " [-0.585 -0.171 0.793]\n",
+ " [ 0.808 -0.041 0.587]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "val, vec = lin.eig(cov)\n",
+ "vec = vec[:,np.argsort(val)[::-1]]\n",
+ "print(val)\n",
+ "print(vec)"
+ ]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 39,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.plotly.v1+json": {
+ "config": {
+ "plotlyServerURL": "https://plot.ly"
+ },
+ "data": [
+ {
+ "mode": "markers",
+ "type": "scatter3d",
+ "x": {
+ "bdata": "041t7U0R8r+og7drVtnyPxgcLdm9eOe/nHF9XQ/C/r9FUN9uv9AGwFx4ifOixQTAdD++vcE48T+QBYAPycfRv0C9RvrDF8w/RMZJ/ksKA0DMJdH0SIkHQIMfhyqKLfu/YAjBrZ5P7z96dVralrj2v0zrn5I9AgfA+DqU7unN+D9EmyUtQkfxv6xMgJD7X+a/KNrKd/b04D+AjTzK2Mf/PwxXADC3w+g/bgTfmSHjAUBNA+VSbr31v9zBn4rMnPw/DWnXn88t/r+Enbxk57sFQAAIzT22//E/Fv6I7q5P+78ybGAxSnkFQDRGkCaDKfY/RFY8VCGf978DtoIUpYX7v4CIk9rP9Ls/3AG7EajEBsDi2ScmNxX8v6BT8Dy469y/8Fl9EMwo6L9QF1/rXPnLv0szwzX/WPW/7MVhy5+p4D+Yg3vEDncBQDtv87/EWwLAwOEpNb6xuj8KV/OoJakBwBgldCSL0fQ/wGfinN/047+QL1c4LR/ZPwSnivm2Z/6/iZ8CWRwMAcDANAgodliyvw==",
+ "dtype": "f8"
+ },
+ "y": {
+ "bdata": "6pJKDQJn9D/XglmsijT2P9z9c3xYN+E/vSagqXWQDUB8mo31WEQgQDVYAKSg9xpA63SOCGWJ8j/cMTDkScKzP8TKY5yoqag/1gJWHHuoFkAnOkPZpU8hQDwwsPYZFQdA1cAyiwmj7j+xltI1+CEAQNyv7qo4iyBA6UTN6Qs6A0CoTFL8qajyPzoRKJgzSt8/bAawW5P40T93UuUdFJAPQAM0ssw/KuM/B5KusD//E0CTQPhaBIr9P7GS+kFmlQlA4ZHo4CZ2DECdRVQm3oUdQEZXYQxaP/Q/MDr9nT1PB0C89x81+tEcQE5sZV6Usv4/NYpuPNdvAUA/rSq6tKsHQONZ5KdvbIg/mw+tph8zIEDw3IaTLqUIQGRZyMhKI8o/kJL6G2Y94j9YP038Y3SoPzyMVvSMe/w/nuGn3EVa0T8txj5NdRATQCGTXgeJEBVA08X6WrBEhj/h0e4ybH4TQLrA9CKUFvs/7tr/xDbk2D8WSuUH1bjDP96j4DnH4wxAa1DdZ8UpEkDRXzPx8gh1Pw==",
+ "dtype": "f8"
+ },
+ "z": {
+ "bdata": "nGkSTOc75L96ueYqC0brP+B0alO8l/M/CgP1EvU1CcDzIsbUzJchwLXpBctVJyHAqGaRWY6g1j9QCLXwStn4PzJ3fYupjwNAcKCP1+oNF8AQK0gOykgjwPzC5qDczArAAD+QQux33r90CnefYzXgv1BhckPT5SLAXIXIGA2H5r8SL5ZxFR3kv5qOIVYy/+0/kG6u1q4q2j/4jcKCd8MJwJbivMZj8P0/HtgQlyISDsBfpYaQq0n3v9Bnwr90YvW/OC7j0Zv9D8DkgoA6rHMawECjxI/KCvA/QR8YP0Ha/7/eKtszhh0cwCAMr5PlSLI/6WeTLpMFAMDDp4SX+j3/vwINKdhxg/w/ZIv/tKgQJcBu4idpq/gIwPixWVCOv94/FBslu2XJ+T/W+lGASUH2P/FdvIuLvfC/Upok+zgh+T+zaGYrq+0RwI60/OHw9hnA2gCWiROHAUD7v1hI5W0XwPDTt+3pMdi/yiGZVlru1j8OajLhAqXjPwTxIj1tewbAN+UKlDq/DsC6/YggeYYDQA==",
+ "dtype": "f8"
+ }
+ },
+ {
+ "type": "scatter3d",
+ "x": [
+ 0,
+ -0.3383254783235541
+ ],
+ "y": [
+ 0,
+ 2.9250660566388476
+ ],
+ "z": [
+ 0,
+ -4.040980627894224
+ ]
+ },
+ {
+ "type": "scatter3d",
+ "x": [
+ 0,
+ -0.9844262587221044
+ ],
+ "y": [
+ 0,
+ -0.17088398485428757
+ ],
+ "z": [
+ 0,
+ -0.04127474843920637
+ ]
+ }
+ ],
+ "layout": {
+ "template": {
+ "data": {
+ "bar": [
+ {
+ "error_x": {
+ "color": "#2a3f5f"
+ },
+ "error_y": {
+ "color": "#2a3f5f"
+ },
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ },
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "bar"
+ }
+ ],
+ "barpolar": [
+ {
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ },
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "barpolar"
+ }
+ ],
+ "carpet": [
+ {
+ "aaxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "baxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "type": "carpet"
+ }
+ ],
+ "choropleth": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "choropleth"
+ }
+ ],
+ "contour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "contour"
+ }
+ ],
+ "contourcarpet": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "contourcarpet"
+ }
+ ],
+ "heatmap": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmap"
+ }
+ ],
+ "histogram": [
+ {
+ "marker": {
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "histogram"
+ }
+ ],
+ "histogram2d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2d"
+ }
+ ],
+ "histogram2dcontour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2dcontour"
+ }
+ ],
+ "mesh3d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "mesh3d"
+ }
+ ],
+ "parcoords": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "parcoords"
+ }
+ ],
+ "pie": [
+ {
+ "automargin": true,
+ "type": "pie"
+ }
+ ],
+ "scatter": [
+ {
+ "fillpattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ },
+ "type": "scatter"
+ }
+ ],
+ "scatter3d": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatter3d"
+ }
+ ],
+ "scattercarpet": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattercarpet"
+ }
+ ],
+ "scattergeo": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergeo"
+ }
+ ],
+ "scattergl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergl"
+ }
+ ],
+ "scattermap": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattermap"
+ }
+ ],
+ "scattermapbox": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattermapbox"
+ }
+ ],
+ "scatterpolar": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolar"
+ }
+ ],
+ "scatterpolargl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolargl"
+ }
+ ],
+ "scatterternary": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterternary"
+ }
+ ],
+ "surface": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "surface"
+ }
+ ],
+ "table": [
+ {
+ "cells": {
+ "fill": {
+ "color": "#EBF0F8"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "header": {
+ "fill": {
+ "color": "#C8D4E3"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "type": "table"
+ }
+ ]
+ },
+ "layout": {
+ "annotationdefaults": {
+ "arrowcolor": "#2a3f5f",
+ "arrowhead": 0,
+ "arrowwidth": 1
+ },
+ "autotypenumbers": "strict",
+ "coloraxis": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "colorscale": {
+ "diverging": [
+ [
+ 0,
+ "#8e0152"
+ ],
+ [
+ 0.1,
+ "#c51b7d"
+ ],
+ [
+ 0.2,
+ "#de77ae"
+ ],
+ [
+ 0.3,
+ "#f1b6da"
+ ],
+ [
+ 0.4,
+ "#fde0ef"
+ ],
+ [
+ 0.5,
+ "#f7f7f7"
+ ],
+ [
+ 0.6,
+ "#e6f5d0"
+ ],
+ [
+ 0.7,
+ "#b8e186"
+ ],
+ [
+ 0.8,
+ "#7fbc41"
+ ],
+ [
+ 0.9,
+ "#4d9221"
+ ],
+ [
+ 1,
+ "#276419"
+ ]
+ ],
+ "sequential": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "sequentialminus": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ]
+ },
+ "colorway": [
+ "#636efa",
+ "#EF553B",
+ "#00cc96",
+ "#ab63fa",
+ "#FFA15A",
+ "#19d3f3",
+ "#FF6692",
+ "#B6E880",
+ "#FF97FF",
+ "#FECB52"
+ ],
+ "font": {
+ "color": "#2a3f5f"
+ },
+ "geo": {
+ "bgcolor": "white",
+ "lakecolor": "white",
+ "landcolor": "#E5ECF6",
+ "showlakes": true,
+ "showland": true,
+ "subunitcolor": "white"
+ },
+ "hoverlabel": {
+ "align": "left"
+ },
+ "hovermode": "closest",
+ "mapbox": {
+ "style": "light"
+ },
+ "paper_bgcolor": "white",
+ "plot_bgcolor": "#E5ECF6",
+ "polar": {
+ "angularaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "radialaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "scene": {
+ "xaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "yaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "zaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ }
+ },
+ "shapedefaults": {
+ "line": {
+ "color": "#2a3f5f"
+ }
+ },
+ "ternary": {
+ "aaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "baxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "caxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "title": {
+ "x": 0.05
+ },
+ "xaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ },
+ "yaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ }
+ }
+ }
+ }
+ }
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
"fig = go.Figure(data=[go.Scatter3d(x=nuage3D[0], y=nuage3D[1], z=nuage3D[2], mode='markers'),\n",
" go.Scatter3d(x=[0,-5*vec[0,0]], y=[0,-5*vec[1,0]], z=[0,-5*vec[2,0]]),\n",
@@ -189,15 +1851,29 @@
"source": [
"#### réponse\n",
"\n",
- "..."
+ "Peu de variation en x"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 18,
"metadata": {},
- "outputs": [],
- "source": []
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "np.float64(-1.317313754879973)"
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "penteY = vec[2,0] / vec[1,0]\n",
+ "penteY"
+ ]
},
{
"cell_type": "markdown",
@@ -213,16 +1889,34 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 20,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "nuage2D = np.array([nuage3D[0], nuage3D[2] - penteY * nuage3D[1]])"
+ ]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 21,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABC0AAAM6CAYAAACl+LmmAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAewgAAHsIBbtB1PgAASj5JREFUeJzt3X+UXHV9P/53NASIWJMQsOgGFyERVCo9JOlRwi9DghYQkAaLX0QorT+qbYy2YPUYkWoVFWPkDxNEROoPFI7FI3gQpGAA0wJKjqBiQiSYhVRBiKDhRyL7Pe/LZ9bJMrs7d7J35n3vfTzOydk7k7kzd3fu3Lnv532/368Jg4ODgwEAAAAgMc/p9QYAAAAAtCK0AAAAAJIktAAAAACSJLQAAAAAkiS0AAAAAJIktAAAAACSJLQAAAAAkiS0AAAAAJIktAAAAACSJLQAAAAAkiS0AAAAAJIktAAAAACSJLQAAAAAkiS0AAAAAJIktAAAAACSJLQAAAAAkjQxVNgTTzwR7rzzzmx5jz32CBMnVvrXBQAAgJ7Ytm1bePDBB7PlAw88MOyyyy7j8ryVbsXHwGLu3Lm93gwAAACojVtvvTXMmTNnXJ7L8BAAAAAgSZXuaRGHhDQnPXvttVdPtwcAAACqaNOmTUMjHZrb4juq0qFF8xwWMbDo6+vr6fYAAABA1U0cx/kkDQ8BAAAAkiS0AAAAAJIktAAAAACS1LPQ4uyzzw4TJkwY+nfjjTf2alMAAACABPUktFizZk34zGc+04uXBgAAAEqi66HF008/Hd72treFbdu2hT333LPbLw8AAACURNdDi8997nPhtttuC/vvv38488wzu/3yAAAAQEl0NbT41a9+FT70oQ9lyytWrAiTJk3q5ssDAAAAJdLV0OJd73pX+P3vfx/e+ta3hsMPP7ybLw0AAACUTNdCi29+85vhqquuCtOmTQuf/vSnu/WyAAAAQElN7MaLbN68OSxevDhbPu+888L06dPH5XkHBgZG/f9NmzaNy+sAAAAAFQ0tzjrrrPB///d/4ZBDDhnXyTdnzJgxbs8FAAAA1Gx4yE033RQuuuiiMHHixGzyzQkTJhT9kgAAAEAFFNrT4qmnngpve9vbwuDgYFiyZEl45StfOa7Pv3HjxjGHh8ydO3dcXxMAAACoQGjxH//xH+Huu+8Oe++9d/jwhz887s/f19c37s8JAAAAVHx4SAwrPv7xj2fLF1xwQXje855X1EsBAAAAFVRYT4tly5Zlw0Ne+tKXhi1btoTLLrvsWY+56667hpb/+7//O5usMzruuOOEHAAAAFBzhYUWTz75ZPbzl7/8ZTjllFPGfPy///u/Dy3fe++9QgsAAACoucKrhwAAAAAkFVpccsklWdWQ0f41T855ww03DN3f399f1GYBAAAAJaGnBQAAAJAkoQUAAACQJKEFAAAAkCShBQAAAJCknoYW55xzztDkm0cccUQvNwUAAABIjJ4WAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECSJhb1xI8++mj47ne/G2677bZw++23h/vvvz88+OCD4fHHHw9TpkwJL3/5y8Nf//VfhzPPPDPsvvvuRW0GAAAAUFITBgcHB4t44u9///thwYIFYz5u+vTp4Stf+Uo4+uijx30bBgYGwowZM7LljRs3hr6+vnF/DQAAgDK6bcPDYU7/tK6tR7UNFNT+LqynRRQ3+MgjjwwHH3xwtrzXXnuFp59+OvtlrrjiivCtb30rPPTQQ+ENb3hDuPXWW8OrXvWqIjcHAACAEMKy69aG5devC2e/bv/wziP2bXu9z9+4Ppx3zd1h8fyZYcmCWYVuIxTa0+KPf/xjeO5znzvqY6688spw4oknZsvxZwwxxpOeFgAAAM/uKbFoxeqh2+0GF43AouHyd7xajwsKb38XNhHnWIFFdMIJJ4SXvexl2fJNN91U1KYAAADw/8SgIQYVDTGIiIFEnsAiri+woBbVQ57//OdnP5944olebwoAAEAtxJ4V7QYXrQKLPENKoLShxS9+8YuwZs2abHn//f/0gQEAAKD3wYXAgtqFFlu2bAnr1q0Ln/nMZ8Lhhx8etm3blt3/nve8p9ubAgAAUGujBRcCC1JQaPWQhksuuSScccYZI/7/+9///vDmN7+5o4k+RrNp06bczwkAAFAnjSCiEVDEnytXrQ+bt2wdeozAgkqHFiM56KCDwoUXXhjmzJnT0fqNmUkBAAAYv+BCYEGthofEKiF33nln9u/WW28NX//617MSp3E+i1NOOSVcddVV3dgMAAAARhCDiSmTd9ruvnhbYEEvTRgcHBzs1Yv/53/+Z3jrW98aJkyYEL74xS+G008/fdyHh8ydO3fc68QCAADpu23Dwx2V5ex0vbIbPodFg54WtNs+b4yGGM/2d0+rh7zlLW8JixYtCk8//XR497vfHR5++OFc68c/wmj/9tprr8K2HQAASNey69aGRStWj1jGcyTx8XG9uH6dA4vmHhejlUOFovU0tIiOP/747Ocf/vCHcM011/R6cwAAgJKLPSWWX78ud4O7ueEe14/PUwetqoSsWbpwzHKoUIvQYo899hhavu+++3q6LQAAQPnFoR15G9ytGu51GCIyWlnT0cqhQm1Ci/vvv39oebfdduvptgAAANWQp8E9WsO9ytr5vQUXhLqHFpdffvnQ8oEHHtjTbQEAAKqjnQa3wGLs31twQSVDi0suuSQ88cQToz5m2bJl4bvf/W62vM8++4RDDz20qM0BAABqaLQGd10DizhXR97fu9XfsS5zflDRkqf9/f3hscceCyeddFKYN29e2HfffbPhH/G+O++8M3z1q18Nt9xyS/bYSZMmhauvvjocddRRpSi5AgAAlL86xuYtW2sXWDTE6ihxstG8v3fj77h4/sywZMGsQreRcimq/V1oaNHOxJrxF7n44ovDggULxn0bhBYAAMBIwUVdA4uG2FOik8lGO12PahsoqP09MRTke9/7XtZ7IvamuOeee8Kvf/3r8Nvf/jbsuuuuYc899wwHHXRQOPbYY8PJJ58cJk+eXNRmAAAAZGIwsXLV+u16WMQeF3UMLKJOgweBBd1UWGjxspe9LPv33ve+t6iXAAAAyNXTojmwiOLteH9dgwtIXc+rhwAAAPRiTosG1TAgXUILAACg0lpVCVmzdKEynlACQgsAAKCyRitrOlo5VCANQgsAAKB2gUWD4ALSJrQAAABqGVg0CC4gXUILAACgUm7b8HDbgcVowUV8HqC3hBYAAEClzOmfFhbPn9l2YNEquIjrx+cBemtij18fAABg3C1ZMCvMmzk9d/AQg4vZ/VMFFpAIPS0AAIBK6jR4EFhAOoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKE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AAAAIElCCwAAACBJQgsAAAAgSUILAAAAIElCCwAAACBJQgsAAAAgSUILAAAAIElCCwAAACBJQgsAAAAgSUILAAAAIElCCwAAACBJQgsAAAAgSUILAAAAIElCCwAAACBJQgsAAAAgSUILAAAAIElCCwAAACBJQgsAAAAgSUILAAAAIElCCwAAACBJQgsAAAAgSUILAAAAIElCCwAAACBJQgsAAAAgSUILAAAAIElCCwAAACBJQgsAAAAgSUILAAAAIElCCwAAACBJQgsAAAAgSUILAAAAIElCCwAAACBJQgsAAAAgSUILAAAAIElCCwAAACBJQgsAAAAgSUILAAAAIElCCwAAACBJQgsAAAAgSUILAAAAIElCCwAAACBJQgsAAAAgSUILAAAAIElCCwAAACBJQgsAAAAgSUILAAAAIElCCwAAACBJQgsAAAAgSUILAAAAIElCCwAAACBJQgsAAAAgSUILAAAAIElCCwAAACBJQgsAAAAgSUILAAAAIElCCwAAACBJQgsAAAAgSRNDhW3btm1oedOmTT3dFgAAAKiqTU1t7ua2+I6qdGjx4IMPDi3PnTu3p9sCAAAAdfDggw+G/v7+cXkuw0MAAACAJE0YHBwcDBX1xBNPhDvvvDNb3mOPPcLEiRML7w7T6NFx6623hr322qvQ16N+7GMUzT5GN9jPKJp9jG6wn1G0su1j27ZtGxrtcOCBB4ZddtllXJ630sND4h9pzpw5PXntuEP19fX15LWpB/sYRbOP0Q32M4pmH6Mb7GcUba+S7GPjNSSkmeEhAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJKEFgAAAECShBYAAABAkoQWAAAAQJImDA4ODvZ6IwAAAACG09MCAAAASJLQAgAAAEiS0AIAAABIktACAAAASJLQAgAAAEiS0AIAAABIktACAAAASJLQAgAAAEiS0AIAAABIktACAAAASJLQokuuvvrqcM4554RjjjkmHHDAAWH69Olhp512ClOnTg0HH3xweN/73hd+8Ytf9HozKbkNGzaECy64IJx00klh5syZYfLkyWGXXXYJfX194YQTTgiXXXZZ2LZtW683kxL7/e9/H1atWhU+/elPh5NPPjnss88+YcKECdm//v7+Xm8eJXDfffdl33n7779/eN7znhemTZsW5syZEz71qU+FLVu29HrzKLHf/OY34aqrrgpLly4Nr3/967Nzrcbx6fTTT+/15lEBt99+ezj33HPDwoULs3OrnXfeOey2225h1qxZ4Ywzzgg333xzrzeREnv00Uezc/X4HXn44YeH/fbbL7zgBS8IkyZNCnvuuWc44ogjwic/+cnw29/+NtTNhMHBwcFeb0TVxUZiDCjGEh8TD4Tvf//7u7JdVMuHPvSh8LGPfSyM9ZGOjYMrrrgi7L333l3bNqrjyCOPDDfeeGPL/3vJS16SBWcwku985zvh1FNPzU7MWokn/jHkjydqkFcMJ0by1re+NVxyySVd3R6q5bDDDgs33XTTmI877bTTwhe+8IWsoQl5fP/73w8LFiwY83HTp08PX/nKV8LRRx8d6mJirzegLmJKFtOxv/qrvwovfelLw1577ZVdBX/ggQeyBsDFF18cfve734V/+7d/C1OmTAnveMc7er3JlMymTZuywCJeuTzxxBPD/Pnzs94WsafFz3/+8/C5z30u3Hbbbdm/o446Kvz4xz/Org5AHs2hWLxCPnv27PDDH/4w64EBo7njjjvCm970pvD4449nx574fRdDsHg7XlmKJ/lr167NeiTGq5nPf/7ze73JlFgM5mNvnmuvvbbXm0JFxHP26EUvelFYtGhROPTQQ7P97I9//GNYvXp1OP/888P9998fLr300rB169bwta99rdebTAnNmDEj+26MPfHjcmwzPv3002FgYCC76Pitb30rPPTQQ+ENb3hDuPXWW8OrXvWqUAd6WnRJPKA997nPHfH/77333mznfOSRR8Iee+yRNUBHezwMd/bZZ4fdd989vPOd72x5sh/3wTe/+c3hm9/8Znb7Ix/5SNaFFvK48MILs/0r9thpXA2Pw0Jil389LWjnKuXEiROzIUavfvWrt/v/ODzkrLPOypY//OEPZ0MqIY+438RjU/z3whe+MDsexSFskZ4W7Khjjz0260URh+C2OkePDclDDjkkC1+jH/zgB9lxD8arvRhdeeWV2cXJKP6MIUYdCC0SEntXrFy5Mlu+6667wite8YpebxIVE8fAxSsETz31VDjwwAPDT37yk15vEhUgtGAs8WpQ7GkYvf3tbw8rVqx41mPilaRXvvKVWc+w2OMwzk/QztBKGInQgm6Lc6ocd9xx2fI//dM/Zb1cYbztv//+2VyIcZjIgw8+GOrARJwJab46/sQTT/R0W6im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",
+ "text/plain": [
+ "<Figure size 640x480 with 1 Axes>"
+ ]
+ },
+ "metadata": {
+ "image/png": {
+ "height": 413,
+ "width": 534
+ }
+ },
+ "output_type": "display_data"
+ }
+ ],
"source": [
"plt.plot(nuage2D[0], nuage2D[1], 'x')\n",
"plt.axis('equal');"
@@ -243,30 +1937,64 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 23,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "alpha = penteY"
+ ]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 41,
"metadata": {},
- "outputs": [],
- "source": []
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[[ 1.067 -1.38 1.411 2.773 -1.507 0.457 0.552 0.434 -1.662 2.716 -0.317 2.078 1.197 -1.215 1.883 -0.621 2.287 0.488 2.29 1.155 1.352\n",
+ " 0.008 2.737 0.864 -0.457 0.638 -2.885 -1.191 0.961 -1.26 0.708 -0.427 -2.187 -1.21 0.42 0.545 0.446 0.919 0.913 -0.411 2.379 -0.795\n",
+ " -0.385 2.352 1.837 1.223 -2.399 2.517 1.285 2.993]\n",
+ " [ 1.072 2.033 1.182 2.459 0.525 2.331 2.27 1.768 1.07 1.349 1.873 1.938 2.248 2.055 2.929 2.134 1.111 1.362 2.549 1.137 1.884\n",
+ " 0.65 1.617 0.763 2.04 1.123 0.798 2.183 2.157 0.379 1.02 1.701 1.34 0.799 2.495 1.882 1.704 1.918 2.197 1.085 1.91 0.812\n",
+ " 0.838 2.995 2.445 1.791 0.615 1.662 0.942 2.163]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "val, vec = lin.eig(np.cov(nuage2D))\n",
+ "beta = vec[1,0] / vec[0,0]\n",
+ "print(nuage2D)"
+ ]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 42,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "m = nuage2D.mean(axis=1)\n",
+ "gamma = - beta * m[0] + m[1]"
+ ]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 43,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Les coefficients de z fonction polynomiale de degré 2 en x sont :\n",
+ "\n",
+ "alpha = -1.317313754879973\n",
+ "beta = 0.23616632610874383\n",
+ "gamma = 1.5052386897088508\n"
+ ]
+ }
+ ],
"source": [
"print(\"Les coefficients de z fonction polynomiale de degré 2 en x sont :\\n\")\n",
"print(f\"alpha = {alpha}\")\n",
@@ -291,5 +2019,26 @@
"outputs": [],
"source": []
}
- ]
-} \ No newline at end of file
+ ],
+ "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.13.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/PVCM/cama/fr/ma35 Système matriciel -- Exercices.ipynb b/PVCM/cama/fr/ma35 Système matriciel -- Exercices.ipynb
index 2107be6..7ce0cf2 100644
--- a/PVCM/cama/fr/ma35 Système matriciel -- Exercices.ipynb
+++ b/PVCM/cama/fr/ma35 Système matriciel -- Exercices.ipynb
@@ -1,25 +1,4 @@
{
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.8.10"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2,
"cells": [
{
"cell_type": "markdown",
@@ -64,8 +43,39 @@
"cell_type": "code",
"execution_count": null,
"metadata": {},
- "outputs": [],
- "source": []
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x mieux = [1.0000019 0.99999905]\n",
+ "[1. 3.]\n"
+ ]
+ }
+ ],
+ "source": [
+ "def solve_partial_gauss(A, b):\n",
+ " A = A.astype(np.float64) # si A a des entiers, on va avoir des erreurs de calculs\n",
+ " for i in range(len(A)-1):\n",
+ " pivot = i + np.argmax(np.abs(A[i:,i]))\n",
+ " A[[i,pivot]] = A[[pivot, i]]\n",
+ " b[[i,pivot]] = b[[pivot, i]]\n",
+ " coefs = - A[i+1:,i] / A[i,i] # Normalement il faut tester que A[i,i] != 0\n",
+ " A[i+1:, i:] += np.outer(coefs, A[i, i:]) # ou np.einsum('i,j -> ij', coefs, A[i, i:])\n",
+ " b[i+1:] += coefs * b[i]\n",
+ " # A est maintenant triangulaire surpérieur\n",
+ " res = np.zeros(len(b), dtype=b.dtype)\n",
+ " res[-1] = b[-1] / A[-1,-1]\n",
+ " for i in range(len(A)-1)[::-1]:\n",
+ " res[i] = (b[i] - A[i,i+1:] @ res[i+1:]) / A[i,i]\n",
+ " return res\n",
+ "e = 1E-6\n",
+ "A = np.array([[e, 1], [1, 2]], dtype='float32')\n",
+ "b = np.array([1., 3.], dtype='float32')\n",
+ "x = solve_partial_gauss(A,b)\n",
+ "print(\"x mieux =\", x)\n",
+ "print(A @ x )"
+ ]
},
{
"cell_type": "markdown",
@@ -186,5 +196,26 @@
"outputs": [],
"source": []
}
- ]
-} \ No newline at end of file
+ ],
+ "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.13.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/PVCM/cama/fr/ma40 Méthodes itératives.ipynb b/PVCM/cama/fr/ma40 Méthodes itératives.ipynb
index 6183fc1..3abaf5d 100644
--- a/PVCM/cama/fr/ma40 Méthodes itératives.ipynb
+++ b/PVCM/cama/fr/ma40 Méthodes itératives.ipynb
@@ -399,7 +399,7 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 3 (ipykernel)",
+ "display_name": "Python 3",
"language": "python",
"name": "python3"
},
@@ -413,7 +413,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.13.3"
+ "version": "3.13.2"
}
},
"nbformat": 4,
diff --git a/PVCM/cama/fr/ma42 Surrelaxation pour Gauss-Seidel -- Exercice.ipynb b/PVCM/cama/fr/ma42 Surrelaxation pour Gauss-Seidel -- Exercice.ipynb
index 5fad716..501698f 100644
--- a/PVCM/cama/fr/ma42 Surrelaxation pour Gauss-Seidel -- Exercice.ipynb
+++ b/PVCM/cama/fr/ma42 Surrelaxation pour Gauss-Seidel -- Exercice.ipynb
@@ -11,7 +11,7 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
@@ -470,7 +470,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.13.3"
+ "version": "3.13.2"
}
},
"nbformat": 4,