{ "cells": [ { "cell_type": "markdown", "id": "29c3d159-593e-46f4-ab25-930974e898f3", "metadata": {}, "source": [ "# 1. 使用数学逻辑思维求极小值" ] }, { "cell_type": "markdown", "id": "dd0fb3a7-766b-49fe-b954-a5e2f418d02d", "metadata": {}, "source": [ "- $f(x) = x ^ 2 - 2 x + 1$" ] }, { "cell_type": "code", "execution_count": 15, "id": "2e938537-3d41-4f0f-be54-bb8e741535b7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.9999546545244326\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA28UlEQVR4nO3de3xU1b338e9MJjOTkCsEEgiBgNxEbgKSxkutx9RULdU+py3HepSHWnq0+LzU9NiKVaj11FhbOdiWStWi7TnHgvVUawvSYhSvKAVEQe5ySbjkxiUTkpDLzHr+SDIwkGAmmczOzHzer9e8ktl77ZlfVojzde219rYZY4wAAAAsYre6AAAAENsIIwAAwFKEEQAAYCnCCAAAsBRhBAAAWIowAgAALEUYAQAAliKMAAAASzmsLqArfD6fDh8+rOTkZNlsNqvLAQAAXWCMUW1trYYMGSK7vfPxj4gII4cPH1ZOTo7VZQAAgG4oKyvT0KFDO90fEWEkOTlZUusPk5KSYnE1AACgKzwej3Jycvyf452JiDDSfmomJSWFMAIAQIT5rCkWTGAFAACWIowAAABLEUYAAIClCCMAAMBShBEAAGApwggAALAUYQQAAFiKMAIAACxFGAEAAJYKOoy89dZbmjlzpoYMGSKbzaaXX375M49Zu3atpk6dKpfLpVGjRum5557rRqkAACAaBR1G6urqNHnyZC1ZsqRL7fft26frr79eV111lTZv3qy7775b3/72t/W3v/0t6GIBAED0CfreNNdee62uvfbaLrdfunSpRowYoccff1ySdOGFF+qdd97Rf/7nf6qwsDDYtwcAAFGm12+Ut27dOhUUFARsKyws1N13393pMY2NjWpsbPQ/93g8vVUeAFjK5zPyGiOvz8jX9tX/MEY+n9q+nt7W3tbnk3zGtL6OMTKm7ask439+ep9p29fdtoHvc+ZxgW2NJLW1N20/Z9tTmc62K3B/4D7TSduO958+/tzjPus1O637PDW079NZ7+9/yY43B/ysgduDfZ3O2gf3+rddPkI5/RM7eZfe1ethpLy8XJmZmQHbMjMz5fF41NDQoISEhHOOKS4u1kMPPdTbpQGIEsYYNbb41NjsU2OLt/X7Fq9ONfv83wfsa/ap0etTc4tPLT6fmr1GzV6fWtq+NntN2/a2771ntPG1tzm3fYvXqMUXGCzODBg+I7X4fP6A4fV19vEChN9XpgyJ3jDSHfPnz1dRUZH/ucfjUU5OjoUVAQiFxhavak+1yNPQrJONLapr9Kq+qUX1Ta1f6xq9amj2qq7x9LbWr4HfNzSdDhyNLT41tfis/tF6jcNuk91uU5zNpji7TXab5Iizy26T7DabbO1f1XqbdtvZ222STYHbpA7atL2GvcNtXW975nu03zW+dY901hf/beVPPz93v//G82e91rltO9l/1gu098d5jzmrPnWh/en3Czwm4PhO95x/p62Tned5q/O+V2fHZaa4z3NU7+r1MJKVlaWKioqAbRUVFUpJSelwVESSXC6XXC5Xb5cGoBuavT4dr2/S8bpmHa1r1PG6Zh2rb5Knobn1capFnlOt39e2fd8eQBrDEBpsNsntiJMr3u7/6nLY5XLEtX6Nb/3eGWdXvMOueLtNjjib4uPsio+zy2G3nbHd3rbdJkfbc2ecXY649u9tcthbnzvj7Iprey27Pzi0fvU/2re3fW+3Sw673f99wDG21nZALOj1MJKfn69Vq1YFbFuzZo3y8/N7+60BdFFDk1eVtadU4WkM+Hr0ZJOO1zXpWH3r16N1Tao91dLj90tyOZTsdqify6FEZ1zbo/X7fk6HEpxx6uc6va19fz9XnBLiHXLH2+WOj5M7vi1gOOxytX3vsNvO+3+nAPqeoMPIyZMntWfPHv/zffv2afPmzerfv7+GDRum+fPn69ChQ/r9738vSbr99tv1q1/9St///vf1rW99S6+//rpeeOEFrVy5MnQ/BYBO1Te16NDxBh080aCDxxt06HiDKjyn/I/K2sagA4bNJqUnOpWeGK/+/ZxKT3QqLTFeKe54pSTEK9ntUIq77esZz1Pc8UpyOxTH//EDOEPQYWTDhg266qqr/M/b53bMnj1bzz33nI4cOaLS0lL//hEjRmjlypW655579MQTT2jo0KF65plnWNYLhIjPZ3S4pkH7quu0r7pOpUfrdag9eJxo0LG6pi69jjverswUtwYluzSo7WtGkssfNgYktX7t38+p1IR4AgWAkLGZztYW9SEej0epqamqqalRSkqK1eUAljjZ2KKd5bX6tOpka/Coag0f+4/WfeZcjGSXQ9npCRqanqih6QkanOo+I3i0ho9kl4PTGwBCqquf331yNQ0Qy5q9Pu2rrtOO8lrtLPdoZ3mtdpTX6uDxhk6PiY+zaVj/RI3ISNLwAa2BIzutNXxkpycoNSE+jD8BAASHMAJYyOsz2lN5Uh8dPKGPD57QxwdrtONIrZq8HY90ZKa4NHpQskYO7KfcAf00YmA/jczop+y0BDniuO8lgMhEGAHCqPpkozbsP6YN+4/r44M12nq4RvVN3nPa9XPGaUxWssZlpWhcVrLGZiVrXFay0hKdFlQNAL2LMAL0ooPH67V+3zH9Y/8xfbDvmPZW1Z3Tpp8zThOyUzU5J02ThqZqYnaqctITucYEgJhBGAFCqKahWe/tqdZbu6v19u6qDud5jMtK1vTcdE3JSdfkoakaOTCJlSkAYhphBOgBn8/o40M1WruzUm/vrtbmshMB9xuJs9s0MTtVM0b014zc/pqem86pFgA4C2EECFJTi0/v7z2qv28r15ptFarwNAbsHzmwnz4/eqCuHDNQM0b0Vz8Xf2YAcD78VxLogsYWr97YUaVXtx7R6zsqA65YmuRy6IrRGfr8mIG6YnSGhqZbc9dLAIhUhBGgEz6f0Qf7junPmw9p1ZYj8pwRQDKSnPri+Exdc1GWLr1ggFyOOAsrBYDIRhgBzrK36qRWbCjTK5sP60jNKf/2rBS3vjxpsL40IUsXD0tn0ikAhAhhBFDraZi/fVKh5z84oPf3HvNvT3Y7dN2Ewbrh4iHKGzGAAAIAvYAwgphWdqxe//X+Ab248aD/hnJ2m/SFsYP09WlDddW4QXLHcwoGAHoTYQQx6cPS43rm7X16desRta/EzUpx6xuX5GjWJTnKTkuwtkAAiCGEEcQMn8/o79sq9Mzbe7XhwHH/9itGZ+jW/FxdNXYg93cBAAsQRhD1fD6jVVuP6Bclu7Wr4qSk1rvc3jAlW9++YoTGZXV+W2sAQO8jjCBqeX1Gq7a0hpDdla0hJNnt0K35wzU7P1eDUtwWVwgAkAgjiELGGL2+o1KPvrrDH0JS3A7ddvlI/d/LcpWaEG9xhQCAMxFGEFW2HKzRT1Zt8y/PTXE79O0rWkNIipsQAgB9EWEEUeHwiQY9tnqHXt58WJLkdNj1rctG6I4vXMBICAD0cYQRRLRmr0+/fWefnnhttxqavZKkr16cre9dM4Z7xABAhCCMIGJ9sPeoHnh5q39eyPTh6Vo48yJNHJpqcWUAgGAQRhBxTtQ36eG/btf/bjooSerfz6n7r7tQ/zw1WzYbl2sHgEhDGEFEKdleofl/2qLK2kbZbNI3ZwzTvYVjlZbotLo0AEA3EUYQEWoamvXjv2zzj4ZcMLCffvb1yZo6LN3iygAAPUUYQZ/33qfVKlrxkco9p2SzSXOvGKmiL47hBnYAECUII+izWrw+/eL1Pfrl67tljDQio59+/vVJmja8v9WlAQBCiDCCPulITYPu+sNmrd/fevGyWdNztPAr45Xo5J8sAEQb/suOPufNXVW6a/mHOlHfrCSXQz/56gTdMCXb6rIAAL2EMII+wxij37y1V4+t3iGfkSZmp+qXN12s3Ix+VpcGAOhFhBH0CQ1NXn3/fz/WXz5qvZz7v1ySo4duuEguB5NUASDaEUZguUMnGjT3dxu07YhHDrtNP/rKRbo5bxgXMAOAGEEYgaU+OVyjOc/+Q5W1jcpIcurXN0/TjBGslgGAWEIYgWXe2lWlO/57o+qavBqbmaxlcy5RdlqC1WUBAMKMMAJL/HFDmeb/aYtafEb5IwfoN7dOU4o73uqyAAAWIIwg7H7z5qcqfnWHJOnGKUP02Ncmy+mwW1wVAMAqhBGEjTFGi1/brSdKdkuS7vjCBfp+4VgmqgJAjCOMICyMMSp+dYeeemuvJOn7Xxqr735hlMVVAQD6AsIIep0xRgtf+US/X3dAkrRw5njNuWyExVUBAPoKwgh6lTFGD/1lm36/7oBsNqn4qxP1LzOGWV0WAKAPIYyg1xhj9NPVO/Xce/slST/72mR9bdpQa4sCAPQ5LGFAr/nl63u09M1PJUk/+eoEgggAoEOEEfSKZ97eq0VrdkmSHvzyeN2cN9ziigAAfRVhBCH38oeH9B8rt0uS7i0cq9suZ7IqAKBzhBGE1Lt7qnXvix9Jkr59+QjNu4rluwCA8yOMIGS2H/Ho9v/aqGav0ZcnDdb9111odUkAgAhAGEFIHD7RoDnP/kO1jS3KG9Ffj39jsux2rqwKAPhshBH0WEOTV9/+3QaVe05p9KAkPXXLdLkccVaXBQCIEIQR9IgxRve++JG2HfFoQD+nnp1ziVITufsuAKDrCCPokV+v/VR//fiIHHabnvzXaRqanmh1SQCACEMYQbe9tq1CP//7TknSQzdcpBkj+ltcEQAgEhFG0C17q07q7hWbZYz0r58bxkXNAADdRhhB0E41e/Xd/9mkk40tmpHbXwu+fJHVJQEAIhhhBEF76C+faEd5rTKSnPrVNy+W08E/IwBA9/EpgqC8/OEh/WF9mWw2afGsizUoxW11SQCACEcYQZftqTyp+1/aIkn6f/80WpePzrC4IgBANCCMoEsaW7y68/lNqm/y6tILBuiuq0dbXRIAIEoQRtAli9bs0o7yWvXv59Tif5miOC71DgAIkW6FkSVLlig3N1dut1t5eXlav379edsvXrxYY8eOVUJCgnJycnTPPffo1KlT3SoY4ffB3qN66q29kqTi/zNRg5KZJwIACJ2gw8iKFStUVFSkhQsXatOmTZo8ebIKCwtVWVnZYfvnn39e9913nxYuXKjt27frt7/9rVasWKH777+/x8Wj93lONavohY9kjPSN6UNVeFGW1SUBAKJM0GFk0aJFmjt3rubMmaPx48dr6dKlSkxM1LJlyzps/9577+myyy7TN7/5TeXm5uqaa67RTTfd9JmjKegbHnplmw6daFBO/wQtmMn1RAAAoRdUGGlqatLGjRtVUFBw+gXsdhUUFGjdunUdHnPppZdq48aN/vCxd+9erVq1Stddd12n79PY2CiPxxPwQPit2Vah/910UHab9J/fmKIkl8PqkgAAUSioT5fq6mp5vV5lZmYGbM/MzNSOHTs6POab3/ymqqurdfnll8sYo5aWFt1+++3nPU1TXFyshx56KJjSEGKeU8164OXWZbxzPz9S03O57wwAoHf0+mqatWvX6pFHHtGvf/1rbdq0SX/605+0cuVKPfzww50eM3/+fNXU1PgfZWVlvV0mzvLoqztU4WnUiIx+uqdgjNXlAACiWFAjIxkZGYqLi1NFRUXA9oqKCmVldTyx8cEHH9Qtt9yib3/725KkiRMnqq6uTt/5znf0wx/+UHb7uXnI5XLJ5XIFUxpC6P29R/X8B6WSWlfPuOPjLK4IABDNghoZcTqdmjZtmkpKSvzbfD6fSkpKlJ+f3+Ex9fX15wSOuLjWDzdjTLD1opedavZq/p9aT8/cNGOYPjdygMUVAQCiXdAzEouKijR79mxNnz5dM2bM0OLFi1VXV6c5c+ZIkm699VZlZ2eruLhYkjRz5kwtWrRIF198sfLy8rRnzx49+OCDmjlzpj+UoO/4Rclu7auuU2aKS/OvG2d1OQCAGBB0GJk1a5aqqqq0YMEClZeXa8qUKVq9erV/UmtpaWnASMgDDzwgm82mBx54QIcOHdLAgQM1c+ZM/eQnPwndT4GQ+LTqpJ5+u/XiZj++YYJS3PEWVwQAiAU2EwHnSjwej1JTU1VTU6OUlBSry4lKxhjdumy93t5drX8aN0jL/u8lVpcEAIhwXf385t40kCSt3lqut3dXy+mwa+HM8VaXAwCIIYQRqKHJq4f/uk2SdPvnR2r4gH4WVwQAiCWEEWjJG3t0uOaUstMSdMcXRlldDgAgxhBGYtyBo3X+O/I++OXxSnCywgkAEF6EkRj32OqdavL6dPmoDBVelPnZBwAAEGKEkRi28cBxrdxyRDab9MPrL5TNZrO6JABADCKMxChjjB5ZtV2S9PVpQ3XhYJZMAwCsQRiJUau3lmvjgeNyx9tV9MWxVpcDAIhhhJEY1NTi009X75AkfeeKkcpKdVtcEQAglhFGYtDzHxzQ/qP1ykhy6jtXXmB1OQCAGEcYiTH1TS361Rt7JEl3F4xRkivo2xMBABBShJEY8/t1B1R9skk5/RM065Icq8sBAIAwEktONrboN29+Kkm66+oxio/j1w8AsB6fRjHk2Xf26Xh9s0Zm9NONU4ZYXQ4AAJIIIzGjpr5ZT73detn3uwpGy8GoCACgj+ATKUY8885e1Z5q0djMZM2cxKgIAKDvIIzEgBP1TVr2zj5J0j1fHC27ncu+AwD6DsJIDPjdewdU1+TVuKxkFV6UZXU5AAAEIIxEubrGFj37XuuoyHevGsXN8AAAfQ5hJMr9YX2pTtQ3K3dAoq6fONjqcgAAOAdhJIo1tnj1dNsKmtuvvEBxzBUBAPRBhJEo9qdNh1ThaVRWiltfnZptdTkAAHSIMBKlWrw+LW272urcz4+UyxFncUUAAHSMMBKlXt1argNH65WeGK+bZnAPGgBA30UYiULGGD3Tdl2RW/NzlejkzrwAgL6LMBKFNpUe10dlJ+R02HVL/nCrywEA4LwII1Hot22jIjdOGaKMJJfF1QAAcH6EkShTdqxeq7eWS5K+dfkIi6sBAOCzEUaizO/e2y+fkS4flaFxWSlWlwMAwGcijESRk40tWvGPMknSbYyKAAAiBGEkirzwjzLVNrZo5MB+unLMQKvLAQCgSwgjUcLnM/r9uv2SpG9dNkJ2Lv0OAIgQhJEo8e6n1dp/tF5JLoe+ejGXfgcARA7CSJT47/cPSJL+z9Rs9XNxkTMAQOQgjESB8ppTem17pSTpXz/HRc4AAJGFMBIF/rC+VF6f0Yzc/hqTmWx1OQAABIUwEuGavT4t/0epJOnmzw2zuBoAAIJHGIlwJdsrVOFp1IB+Tn1pQpbV5QAAEDTCSIT77/dbR0VmXZIjlyPO4moAAAgeYSSClR6t1zt7qmWzSTfN4BQNACAyEUYi2IsbWy/9fvmoDOX0T7S4GgAAuocwEqG8PqMXNx6UJH19eo7F1QAA0H2EkQj13qfVOlxzSiluh64Zn2l1OQAAdBthJEK9sKF1VOTGi7PljmfiKgAgchFGIlBNfbP+9km5JOnr0zhFAwCIbISRCPTKR4fU1OLTuKxkTchOsbocAAB6hDASgdpP0Xx9eo5sNpvF1QAA0DOEkQizo9yjLYdqFB9n041ThlhdDgAAPUYYiTAvbTokSfqncYM0IMllcTUAAPQcYSSC+HxGr3x0WJL01YuzLa4GAIDQIIxEkPX7j+lIzSklux36wthBVpcDAEBIEEYiyJ83t56iuXZCFtcWAQBEDcJIhGhs8Wrlx0ckSTdO4RQNACB6EEYixJs7q+Q51aLMFJfyRg6wuhwAAEKGMBIh/ry5deLqVyYPUZyda4sAAKIHYSQC1J5q1mvbKyRJN3CKBgAQZboVRpYsWaLc3Fy53W7l5eVp/fr1521/4sQJzZs3T4MHD5bL5dKYMWO0atWqbhUci/72SYUaW3y6YGA/XTSEy78DAKKLI9gDVqxYoaKiIi1dulR5eXlavHixCgsLtXPnTg0adO5y06amJn3xi1/UoEGD9OKLLyo7O1sHDhxQWlpaKOqPCX9pu7bIDVOyufw7ACDqBB1GFi1apLlz52rOnDmSpKVLl2rlypVatmyZ7rvvvnPaL1u2TMeOHdN7772n+Ph4SVJubm7Pqo4hNfXNendPtSTpy5MGW1wNAAChF9RpmqamJm3cuFEFBQWnX8BuV0FBgdatW9fhMa+88ory8/M1b948ZWZmasKECXrkkUfk9Xo7fZ/GxkZ5PJ6AR6z6+7ZytfiMxmUla+TAJKvLAQAg5IIKI9XV1fJ6vcrMzAzYnpmZqfLy8g6P2bt3r1588UV5vV6tWrVKDz74oB5//HH9x3/8R6fvU1xcrNTUVP8jJycnmDKjyqtbW/v1uomMigAAolOvr6bx+XwaNGiQnnrqKU2bNk2zZs3SD3/4Qy1durTTY+bPn6+amhr/o6ysrLfL7JM8p5r19u4qSdJ1E7MsrgYAgN4R1JyRjIwMxcXFqaKiImB7RUWFsrI6/rAcPHiw4uPjFRd3+vLlF154ocrLy9XU1CSn03nOMS6XSy4Xd6R9bVuFmr1GowcladSgZKvLAQCgVwQ1MuJ0OjVt2jSVlJT4t/l8PpWUlCg/P7/DYy677DLt2bNHPp/Pv23Xrl0aPHhwh0EEp63awikaAED0C/o0TVFRkZ5++mn97ne/0/bt23XHHXeorq7Ov7rm1ltv1fz58/3t77jjDh07dkx33XWXdu3apZUrV+qRRx7RvHnzQvdTRKHaU816y3+KhjACAIheQS/tnTVrlqqqqrRgwQKVl5drypQpWr16tX9Sa2lpqez20xknJydHf/vb33TPPfdo0qRJys7O1l133aUf/OAHofspotDrOyrV1OLTyIH9NCaTVTQAgOhlM8YYq4v4LB6PR6mpqaqpqVFKSmxcgfTf/muD/vZJhe68apT+vXCs1eUAABC0rn5+c2+aPqihyas3d7WeormWVTQAgChHGOmD3tlTrVPNPmWnJWj84NgYCQIAxC7CSB+0ZlvrKpovjs/kXjQAgKhHGOljvD6jku2VklrDCAAA0Y4w0sdsLjuho3VNSnY7NGNEf6vLAQCg1xFG+pg121qvbnvV2EGKj+PXAwCIfnza9TGvbW8NIwWcogEAxAjCSB+yr7pOeypPymG36QtjB1pdDgAAYUEY6UNeaztF87mRA5Tijre4GgAAwoMw0oe0zxdhFQ0AIJYQRvqIY3VN2nDgmCTp6gsHWVwNAADhQxjpI97aVSWfkcZlJWtoeqLV5QAAEDaEkT5i7c7WC51dNY5REQBAbCGM9AE+n9Fbu6slSV8YwyoaAEBsIYz0AVsO1ehYXZOSXQ5NHZ5udTkAAIQVYaQPWLuzSpJ02agMrroKAIg5fPL1AWt3tc4X4UJnAIBYRBix2PG6Jm0uOyFJupIwAgCIQYQRi721u0qmbUnv4NQEq8sBACDsCCMWe7NtvgijIgCAWEUYsZDPZ/TmrtYw8oUxXF8EABCbCCMW2nq4RkfrmpTkcmh6Lkt6AQCxiTBiobfaRkUuvWAAS3oBADGLT0ALvbOn9aqrV3DVVQBADCOMWKS+qUWbDpyQJF0+KsPaYgAAsBBhxCL/2H9cTV6fstMSlDuAu/QCAGIXYcQi77adorls1ADZbDaLqwEAwDqEEYu8s7s9jHCKBgAQ2wgjFjhW16RtRzySpEsvIIwAAGIbYcQC733aOioyLitZA5NdFlcDAIC1CCMWOD1fhFERAAAIIxZov74IS3oBACCMhF3p0XqVHWuQw27TjBH9rS4HAADLEUbCrH1UZOqwdPVzOSyuBgAA6xFGwuzdtsmrl44aYHElAAD0DYSRMDLG6IO9RyWxpBcAgHaEkTD6tKpO1Seb5HLYNTkn1epyAADoEwgjYfR+26jIxcPS5HLEWVwNAAB9A2EkjD7Yd0ySlDeC+SIAALQjjITJmfNF8kaypBcAgHaEkTDZf7RelbWNcsbZNXVYutXlAADQZxBGwqR9VGRKTprc8cwXAQCgHWEkTPzzRThFAwBAAMJIGATMF2HyKgAAAQgjYXDweIMO15ySw27T1OFpVpcDAECfQhgJg/bri0wamqpEJ/ejAQDgTISRMHh/b/t8EU7RAABwNsJIGKzf3z5fhMmrAACcjTDSy8prTqnsWIPsNmnacK4vAgDA2QgjvWzjgeOSpHFZKUp2x1tcDQAAfQ9hpJdtONA6X2R6LqMiAAB0hDDSy9pHRjhFAwBAxwgjvai+qUWfHPZIIowAANAZwkgv+qisRl6fUVaKW9lpCVaXAwBAn0QY6UUb2+aLTMtNl81ms7gaAAD6JsJIL9rQNl9kOqdoAADoVLfCyJIlS5Sbmyu32628vDytX7++S8ctX75cNptNN954Y3feNqL4fEabmLwKAMBnCjqMrFixQkVFRVq4cKE2bdqkyZMnq7CwUJWVlec9bv/+/fr3f/93XXHFFd0uNpLsqTopz6kWJcTH6cLBKVaXAwBAnxV0GFm0aJHmzp2rOXPmaPz48Vq6dKkSExO1bNmyTo/xer26+eab9dBDD2nkyJE9KjhSbNjfOioyJSdN8XGcDQMAoDNBfUo2NTVp48aNKigoOP0CdrsKCgq0bt26To/78Y9/rEGDBum2227r0vs0NjbK4/EEPCINFzsDAKBrggoj1dXV8nq9yszMDNiemZmp8vLyDo9555139Nvf/lZPP/10l9+nuLhYqamp/kdOTk4wZfYJ7Rc7m8p8EQAAzqtXzx/U1tbqlltu0dNPP62MjIwuHzd//nzV1NT4H2VlZb1YZehV1TbqwNF62WzS1GGEEQAAzscRTOOMjAzFxcWpoqIiYHtFRYWysrLOaf/pp59q//79mjlzpn+bz+drfWOHQzt37tQFF1xwznEul0sulyuY0vqUzWUnJEmjByUpNYGb4wEAcD5BjYw4nU5NmzZNJSUl/m0+n08lJSXKz88/p/24ceO0ZcsWbd682f/4yle+oquuukqbN2+OyNMvXbG57PTkVQAAcH5BjYxIUlFRkWbPnq3p06drxowZWrx4serq6jRnzhxJ0q233qrs7GwVFxfL7XZrwoQJAcenpaVJ0jnbo0n7yMiUHE7RAADwWYIOI7NmzVJVVZUWLFig8vJyTZkyRatXr/ZPai0tLZXdHrtLWX0+o4/LaiRJk3NSLa4GAIC+z2aMMVYX8Vk8Ho9SU1NVU1OjlJS+fQGxPZW1Klj0lhLi47TlR9fIwTVGAAAxqquf33xShtiHpSckSROzUwkiAAB0AZ+WIfbRwROSOEUDAEBXEUZCjMmrAAAEhzASQqeavdpxpFYSIyMAAHQVYSSEPjlcoxafUUaSS9lpCVaXAwBARCCMhFD75NUpOWmy2WzWFgMAQIQgjITQRwdbry8yhVM0AAB0GWEkhE5fBp7JqwAAdBVhJESOnmxU2bEGSdIkRkYAAOgywkiItF9f5IKB/ZTi5k69AAB0FWEkRD7y348mzdpCAACIMISRENl6qDWMTMrmFA0AAMEgjITIlrYwMnEoYQQAgGAQRkKg0nNKlbWNstukCwf37bsKAwDQ1xBGQqB9VOSCgUlKdDosrgYAgMhCGAkB/yka5osAABA0wkgItE9enUAYAQAgaISREGDyKgAA3UcY6aHK2lOq8DTKZpPGM3kVAICgEUZ6aOsZk1f7uZi8CgBAsAgjPbTloEcSk1cBAOguwkgPbWHyKgAAPUIY6aGtLOsFAKBHCCM9UFXbqHLPqdbJq0OYvAoAQHcQRnpg6+HWUZERGf2UxORVAAC6hTDSA1sPcooGAICeIoz0QPvICGEEAIDuI4z0wLYjrct6mS8CAED3EUa6yXOqWWXHGiRx5VUAAHqCMNJNO47USpIGp7qVlui0uBoAACIXYaSbtrefomFUBACAHiGMdFN7GLmQMAIAQI8QRrppG2EEAICQIIx0Q4vXp53lrXNGWEkDAEDPEEa6Yf/ROjW2+JTojNPw/olWlwMAQEQjjHTDJ4dbT9GMy0qW3W6zuBoAACIbYaQbtrct62W+CAAAPUcY6QZW0gAAEDqEkW7gMvAAAIQOYSRIVbWNqqptlM3WOmcEAAD0DGEkSO2naHIH9FOi02FxNQAARD7CSJC4DDwAAKFFGAnS6cmrnKIBACAUCCNBYvIqAAChRRgJQlOLT3ur6iRJY7MIIwAAhAJhJAj7quvU4jNKdjk0JNVtdTkAAEQFwkgQdla0Xnl1TFaybDYuAw8AQCgQRoKws7x1vsiYTCavAgAQKoSRIOwsPylJGpuZZHElAABED8JIEHadcZoGAACEBmGki+qbWlR6rF6SNJbTNAAAhAxhpIt2V7SeoslIcmlAksviagAAiB6EkS5qX0kzNov5IgAAhBJhpIt2lbfNF+EUDQAAIUUY6SL/yAhhBACAkCKMdBEraQAA6B3dCiNLlixRbm6u3G638vLytH79+k7bPv3007riiiuUnp6u9PR0FRQUnLd9X3SivkkVnkZJ0uhBzBkBACCUgg4jK1asUFFRkRYuXKhNmzZp8uTJKiwsVGVlZYft165dq5tuuklvvPGG1q1bp5ycHF1zzTU6dOhQj4sPl51t80Wy0xKU7I63uBoAAKJL0GFk0aJFmjt3rubMmaPx48dr6dKlSkxM1LJlyzps/z//8z/67ne/qylTpmjcuHF65pln5PP5VFJS0uPiw2WXfyUNp2gAAAi1oMJIU1OTNm7cqIKCgtMvYLeroKBA69at69Jr1NfXq7m5Wf379++0TWNjozweT8DDSv4b5DF5FQCAkAsqjFRXV8vr9SozMzNge2ZmpsrLy7v0Gj/4wQ80ZMiQgEBztuLiYqWmpvofOTk5wZQZcrva7kkzjpERAABCLqyraR599FEtX75cL730ktxud6ft5s+fr5qaGv+jrKwsjFUGMsYwMgIAQC9yBNM4IyNDcXFxqqioCNheUVGhrKys8x7785//XI8++qhee+01TZo06bxtXS6XXK6+ccn1ytpG1TQ0y26TRg7sZ3U5AABEnaBGRpxOp6ZNmxYw+bR9Mmp+fn6nxz322GN6+OGHtXr1ak2fPr371Vqg/Z40uQP6yR0fZ3E1AABEn6BGRiSpqKhIs2fP1vTp0zVjxgwtXrxYdXV1mjNnjiTp1ltvVXZ2toqLiyVJP/3pT7VgwQI9//zzys3N9c8tSUpKUlJS379mx57K1lM0F3B9EQAAekXQYWTWrFmqqqrSggULVF5erilTpmj16tX+Sa2lpaWy208PuDz55JNqamrS1772tYDXWbhwoX70ox/1rPow2FPVOjIyijACAECvCDqMSNKdd96pO++8s8N9a9euDXi+f//+7rxFn7Gnsi2MDCSMAADQG7g3zWfYU1kniZERAAB6C2HkPGrqm1V9svWeNMwZAQCgdxBGzmNPVevk1cGpbiW5unVGCwAAfAbCyHn454swKgIAQK8hjJxHexi5gMmrAAD0GsLIeTAyAgBA7yOMnAfXGAEAoPcRRjpxqtmrg8cbJBFGAADoTYSRTnxadVLGSGmJ8RrQz2l1OQAARC3CSCfOvPKqzWazuBoAAKIXYaQTn7aFkdGZnKIBAKA3EUY6sZtlvQAAhAVhpBMs6wUAIDwIIx1o8fq0/yg3yAMAIBwIIx04cKxezV6jhPg4DUlNsLocAACiGmGkA+2TVy8Y1E92OytpAADoTYSRDuytbj1Fw+RVAAB6H2GkA/uqWsPIiIx+FlcCAED0I4x0YF81YQQAgHAhjHRgb3XrnJGRGZymAQCgtxFGzlLT0Kzqk02SpNyMRIurAQAg+hFGzrK/7RTNoGSXkt3xFlcDAED0I4ychfkiAACEF2HkLO3LekcOJIwAABAOhJGz7K1qnbzKyAgAAOFBGDnL6dM0rKQBACAcCCNnMMb4wwinaQAACA/CyBkqaxtV3+RVnN2mnHSW9QIAEA6EkTPsbbsMfE56gpwOugYAgHDgE/cM7VdeZfIqAADhQxg5w+kb5DF5FQCAcCGMnMG/kobJqwAAhA1h5AztYeQCTtMAABA2hJE2zV6fSo/VS2JkBACAcCKMtCk7Vq8Wn1FCfJwyk91WlwMAQMwgjLRpP0WTm9FPdrvN4moAAIgdhJE2/iuvMl8EAICwIoy0OX1PGsIIAADhRBhpc+Bo6+TV4QO4DDwAAOFEGGmz/+jpOSMAACB8CCOSmlp8OnyiQZI0vD8jIwAAhBNhRNLB4/XyGSkhPk4Dk11WlwMAQEwhjEg6cOz0fBGbjWW9AACEE2FE0oG2lTRMXgUAIPwIIzo9MpI7gMmrAACEG2FEp5f1DmNkBACAsCOM6IxlvYyMAAAQdjEfRrw+o4PHWpf1DmNZLwAAYRfzYeRITYOavD7Fx9k0JC3B6nIAAIg5MR9GStvmi+T0T1Qcd+sFACDsYj6M7G+/Jw2naAAAsETMh5EDR9uvMcLkVQAArEAY4W69AABYKubDCMt6AQCwVkyHEWOMSo8xMgIAgJViOoxUnWxUfZNXdps0NJ0wAgCAFboVRpYsWaLc3Fy53W7l5eVp/fr1523/xz/+UePGjZPb7dbEiRO1atWqbhUbau3zRYakJcjpiOlcBgCAZYL+BF6xYoWKioq0cOFCbdq0SZMnT1ZhYaEqKys7bP/ee+/ppptu0m233aYPP/xQN954o2688UZt3bq1x8X3FJNXAQCwXtBhZNGiRZo7d67mzJmj8ePHa+nSpUpMTNSyZcs6bP/EE0/oS1/6ku69915deOGFevjhhzV16lT96le/6nHxPcWyXgAArBdUGGlqatLGjRtVUFBw+gXsdhUUFGjdunUdHrNu3bqA9pJUWFjYaftwah8ZyWVkBAAAyziCaVxdXS2v16vMzMyA7ZmZmdqxY0eHx5SXl3fYvry8vNP3aWxsVGNjo/+5x+MJpswuax8ZGdafkREAAKzSJ2dtFhcXKzU11f/Iycnplfe5OW+45lyWq/GDU3rl9QEAwGcLamQkIyNDcXFxqqioCNheUVGhrKysDo/JysoKqr0kzZ8/X0VFRf7nHo+nVwLJNy7pnZADAAC6LqiREafTqWnTpqmkpMS/zefzqaSkRPn5+R0ek5+fH9BektasWdNpe0lyuVxKSUkJeAAAgOgU1MiIJBUVFWn27NmaPn26ZsyYocWLF6uurk5z5syRJN16663Kzs5WcXGxJOmuu+7SlVdeqccff1zXX3+9li9frg0bNuipp54K7U8CAAAiUtBhZNasWaqqqtKCBQtUXl6uKVOmaPXq1f5JqqWlpbLbTw+4XHrppXr++ef1wAMP6P7779fo0aP18ssva8KECaH7KQAAQMSyGWOM1UV8Fo/Ho9TUVNXU1HDKBgCACNHVz+8+uZoGAADEDsIIAACwFGEEAABYijACAAAsRRgBAACWIowAAABLEUYAAIClCCMAAMBShBEAAGCpoC8Hb4X2i8R6PB6LKwEAAF3V/rn9WRd7j4gwUltbK0nKycmxuBIAABCs2tpapaamdro/Iu5N4/P5dPjwYSUnJ8tms4XsdT0ej3JyclRWVsY9b3oR/Rw+9HV40M/hQT+HR2/2szFGtbW1GjJkSMBNdM8WESMjdrtdQ4cO7bXXT0lJ4R96GNDP4UNfhwf9HB70c3j0Vj+fb0SkHRNYAQCApQgjAADAUjEdRlwulxYuXCiXy2V1KVGNfg4f+jo86OfwoJ/Doy/0c0RMYAUAANErpkdGAACA9QgjAADAUoQRAABgKcIIAACwVEyHkSVLlig3N1dut1t5eXlav3691SX1GW+99ZZmzpypIUOGyGaz6eWXXw7Yb4zRggULNHjwYCUkJKigoEC7d+8OaHPs2DHdfPPNSklJUVpamm677TadPHkyoM3HH3+sK664Qm63Wzk5OXrsscfOqeWPf/yjxo0bJ7fbrYkTJ2rVqlUh/3mtUlxcrEsuuUTJyckaNGiQbrzxRu3cuTOgzalTpzRv3jwNGDBASUlJ+ud//mdVVFQEtCktLdX111+vxMREDRo0SPfee69aWloC2qxdu1ZTp06Vy+XSqFGj9Nxzz51TT7T+TTz55JOaNGmS/6JO+fn5evXVV/376ePe8eijj8pms+nuu+/2b6Ove+5HP/qRbDZbwGPcuHH+/RHZxyZGLV++3DidTrNs2TLzySefmLlz55q0tDRTUVFhdWl9wqpVq8wPf/hD86c//clIMi+99FLA/kcffdSkpqaal19+2Xz00UfmK1/5ihkxYoRpaGjwt/nSl75kJk+ebN5//33z9ttvm1GjRpmbbrrJv7+mpsZkZmaam2++2WzdutX84Q9/MAkJCeY3v/mNv827775r4uLizGOPPWa2bdtmHnjgARMfH2+2bNnS630QDoWFhebZZ581W7duNZs3bzbXXXedGTZsmDl58qS/ze23325ycnJMSUmJ2bBhg/nc5z5nLr30Uv/+lpYWM2HCBFNQUGA+/PBDs2rVKpORkWHmz5/vb7N3716TmJhoioqKzLZt28wvf/lLExcXZ1avXu1vE81/E6+88opZuXKl2bVrl9m5c6e5//77TXx8vNm6dasxhj7uDevXrze5ublm0qRJ5q677vJvp697buHCheaiiy4yR44c8T+qqqr8+yOxj2M2jMyYMcPMmzfP/9zr9ZohQ4aY4uJiC6vqm84OIz6fz2RlZZmf/exn/m0nTpwwLpfL/OEPfzDGGLNt2zYjyfzjH//wt3n11VeNzWYzhw4dMsYY8+tf/9qkp6ebxsZGf5sf/OAHZuzYsf7n3/jGN8z1118fUE9eXp75t3/7t5D+jH1FZWWlkWTefPNNY0xrv8bHx5s//vGP/jbbt283ksy6deuMMa3B0W63m/Lycn+bJ5980qSkpPj79vvf/7656KKLAt5r1qxZprCw0P881v4m0tPTzTPPPEMf94La2lozevRos2bNGnPllVf6wwh9HRoLFy40kydP7nBfpPZxTJ6maWpq0saNG1VQUODfZrfbVVBQoHXr1llYWWTYt2+fysvLA/ovNTVVeXl5/v5bt26d0tLSNH36dH+bgoIC2e12ffDBB/42n//85+V0Ov1tCgsLtXPnTh0/ftzf5sz3aW8Trb+nmpoaSVL//v0lSRs3blRzc3NAH4wbN07Dhg0L6OuJEycqMzPT36awsFAej0effPKJv835+jGW/ia8Xq+WL1+uuro65efn08e9YN68ebr++uvP6Q/6OnR2796tIUOGaOTIkbr55ptVWloqKXL7OCbDSHV1tbxeb8AvQpIyMzNVXl5uUVWRo72Pztd/5eXlGjRoUMB+h8Oh/v37B7Tp6DXOfI/O2kTj78nn8+nuu+/WZZddpgkTJkhq/fmdTqfS0tIC2p7d193tR4/Ho4aGhpj4m9iyZYuSkpLkcrl0++2366WXXtL48ePp4xBbvny5Nm3apOLi4nP20dehkZeXp+eee06rV6/Wk08+qX379umKK65QbW1txPZxRNy1F4gF8+bN09atW/XOO+9YXUpUGjt2rDZv3qyamhq9+OKLmj17tt58802ry4oqZWVluuuuu7RmzRq53W6ry4la1157rf/7SZMmKS8vT8OHD9cLL7yghIQECyvrvpgcGcnIyFBcXNw5s4srKiqUlZVlUVWRo72Pztd/WVlZqqysDNjf0tKiY8eOBbTp6DXOfI/O2kTb7+nOO+/UX//6V73xxhsaOnSof3tWVpaampp04sSJgPZn93V3+zElJUUJCQkx8TfhdDo1atQoTZs2TcXFxZo8ebKeeOIJ+jiENm7cqMrKSk2dOlUOh0MOh0NvvvmmfvGLX8jhcCgzM5O+7gVpaWkaM2aM9uzZE7H/nmMyjDidTk2bNk0lJSX+bT6fTyUlJcrPz7ewssgwYsQIZWVlBfSfx+PRBx984O+//Px8nThxQhs3bvS3ef311+Xz+ZSXl+dv89Zbb6m5udnfZs2aNRo7dqzS09P9bc58n/Y20fJ7Msbozjvv1EsvvaTXX39dI0aMCNg/bdo0xcfHB/TBzp07VVpaGtDXW7ZsCQh/a9asUUpKisaPH+9vc75+jMW/CZ/Pp8bGRvo4hK6++mpt2bJFmzdv9j+mT5+um2++2f89fR16J0+e1KeffqrBgwdH7r/noKe8Ronly5cbl8tlnnvuObNt2zbzne98x6SlpQXMLo5ltbW15sMPPzQffvihkWQWLVpkPvzwQ3PgwAFjTOvS3rS0NPPnP//ZfPzxx+aGG27ocGnvxRdfbD744APzzjvvmNGjRwcs7T1x4oTJzMw0t9xyi9m6datZvny5SUxMPGdpr8PhMD//+c/N9u3bzcKFC6Nqae8dd9xhUlNTzdq1awOW6dXX1/vb3H777WbYsGHm9ddfNxs2bDD5+fkmPz/fv799md4111xjNm/ebFavXm0GDhzY4TK9e++912zfvt0sWbKkw2V60fo3cd9995k333zT7Nu3z3z88cfmvvvuMzabzfz97383xtDHvenM1TTG0Neh8L3vfc+sXbvW7Nu3z7z77rumoKDAZGRkmMrKSmNMZPZxzIYRY4z55S9/aYYNG2acTqeZMWOGef/9960uqc944403jKRzHrNnzzbGtC7vffDBB01mZqZxuVzm6quvNjt37gx4jaNHj5qbbrrJJCUlmZSUFDNnzhxTW1sb0Oajjz4yl19+uXG5XCY7O9s8+uij59TywgsvmDFjxhin02kuuugis3Llyl77ucOtoz6WZJ599ll/m4aGBvPd737XpKenm8TERPPVr37VHDlyJOB19u/fb6699lqTkJBgMjIyzPe+9z3T3Nwc0OaNN94wU6ZMMU6n04wcOTLgPdpF69/Et771LTN8+HDjdDrNwIEDzdVXX+0PIsbQx73p7DBCX/fcrFmzzODBg43T6TTZ2dlm1qxZZs+ePf79kdjHNmOMCX48BQAAIDRics4IAADoOwgjAADAUoQRAABgKcIIAACwFGEEAABYijACAAAsRRgBAACWIowAAABLEUYAAIClCCMAAMBShBEAAGApwggAALDU/wdIxzPjRtWeQAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# 条件\n", "x = 0.0\n", "# 函数导数(人工求导,而且还因为函数不同,导数不同,所以这种求导的方式:不具备通用性)\n", "grad_fn = lambda x: 2 * x - 2 # 写成函数表达式\n", "# 循环次数\n", "epoch = 50001\n", "# 控制x接近极值点的速度\n", "factor = 0.0001\n", "\n", "x_limit = []\n", "for e in range(epoch):\n", " # 求函数f(x)在x的导数\n", " x_grad = grad_fn(x)\n", " x -= x_grad * factor\n", " x_limit.append(x)\n", "print(x)\n", "plt.plot(range(epoch-1), x_limit[0:-1])\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "368b10dc-6504-42e1-ba1d-3706489655c8", "metadata": {}, "source": [ "# 2. 使用工程数学思维求极小值" ] }, { "cell_type": "markdown", "id": "887b0b26-bc9b-4f35-9cd5-06dde1d77618", "metadata": {}, "source": [ "- 自动求导" ] }, { "cell_type": "code", "execution_count": 33, "id": "4be13627-1359-4330-b293-abd26ff8c554", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "tensor([0.9838], requires_grad=True)\n" ] }, { "data": { "image/png": "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7c3IkSOd9xcXF5vo6GgzatQos2nTJvPee++ZwMBA89prrzXq67XK448/blq0aGE+++wzs3v3brNw4UITEhJi/vGPfzjXYZzPzOLFi82DDz5oPvzwQyPJfPTRR7Xub6xx/fbbb42Pj4956qmnzJYtW8xDDz1k/Pz8zMaNG+v0ejy2jAwYMMBMmDDB+Xe73W5iY2PNtGnTLEzlOgoKCowk8/XXXxtjjCkqKjJ+fn5m4cKFznW2bt1qJJn09HRjzIlfHm9vb5OXl+dc59VXXzVhYWGmsrLSGGPMvffea7p161bruUaMGGEGDx7c0C+pSSktLTUdOnQwX3zxhTnvvPOcZYRxrh/33XefOeecc055v8PhMDExMebpp592LisqKjI2m8289957xhhjtmzZYiSZ1atXO9f5/PPPjZeXl9m/f78xxphXXnnFNGvWzDnuPzx3p06d6vslNUlDhw41119/fa1ll19+uRk1apQxhnGuL/9bRhpzXP/85z+boUOH1sqTkpJibrnlljq9Bo/8mqaqqkoZGRlKTU11LvP29lZqaqrS09MtTOY6iouLJUnNmzeXJGVkZKi6urrWmHbu3FmtW7d2jml6erp69Oih6Oho5zqDBw9WSUmJNm/e7Fznp4/xwzqe9nOZMGGChg4d+rOxYJzrxyeffKLk5GRdddVVioqKUp8+fTRr1izn/bt371ZeXl6tMQoPD1dKSkqtcY6IiFBycrJzndTUVHl7e2vlypXOdX73u9/J39/fuc7gwYOVlZWlo0ePNvTLtNygQYOUlpam7du3S5LWr1+v5cuXa8iQIZIY54bSmONaX+8lHllGCgsLZbfba71ZS1J0dLTy8vIsSuU6HA6H7rzzTp199tnq3r27JCkvL0/+/v6KiIiote5PxzQvL++kY/7Dfb+0TklJiY4fP94QL6fJmT9/vtauXatp06b97D7GuX5kZ2fr1VdfVYcOHbR06VLdeuutuuOOO/TWW29J+nGcfuk9Ii8vT1FRUbXu9/X1VfPmzev0s3Bn999/v66++mp17txZfn5+6tOnj+68806NGjVKEuPcUBpzXE+1Tl3H3SWu2oumZcKECdq0aZOWL19udRS3k5ubq4kTJ+qLL75QQECA1XHclsPhUHJysp544glJUp8+fbRp0ybNnDlTY8eOtTid+3j//ff17rvvat68eerWrZsyMzN15513KjY2lnFGLR65ZyQyMlI+Pj4/OwMhPz9fMTExFqVyDX/5y1/02Wef6auvvlJ8fLxzeUxMjKqqqlRUVFRr/Z+OaUxMzEnH/If7fmmdsLAwBQYG1vfLaXIyMjJUUFCgvn37ytfXV76+vvr666/14osvytfXV9HR0YxzPWjVqpW6du1aa1mXLl2Uk5Mj6cdx+qX3iJiYGBUUFNS6v6amRkeOHKnTz8Kd3XPPPc69Iz169NDo0aM1adIk514/xrlhNOa4nmqduo67R5YRf39/9evXT2lpac5lDodDaWlpGjhwoIXJmi5jjP7yl7/oo48+0pdffqmkpKRa9/fr109+fn61xjQrK0s5OTnOMR04cKA2btxY6xfgiy++UFhYmPODYeDAgbUe44d1POXncuGFF2rjxo3KzMx03pKTkzVq1Cjnnxnn3+7ss8/+2anp27dvV5s2bSRJSUlJiomJqTVGJSUlWrlyZa1xLioqUkZGhnOdL7/8Ug6HQykpKc51vvnmG1VXVzvX+eKLL9SpUyc1a9aswV5fU1FeXi5v79ofMz4+PnI4HJIY54bSmONab+8ldTrc1Y3Mnz/f2Gw2M2fOHLNlyxZz8803m4iIiFpnIOBHt956qwkPDzfLli0zBw8edN7Ky8ud64wfP960bt3afPnll2bNmjVm4MCBZuDAgc77fzjl9OKLLzaZmZlmyZIlpmXLlic95fSee+4xW7duNTNmzPCoU05P5qdn0xjDONeHVatWGV9fX/P444+bHTt2mHfffdcEBQWZuXPnOteZPn26iYiIMP/617/Mhg0bzB//+MeTnhrZp08fs3LlSrN8+XLToUOHWqdGFhUVmejoaDN69GizadMmM3/+fBMUFOTWp5z+1NixY01cXJzz1N4PP/zQREZGmnvvvde5DuN8ZkpLS826devMunXrjCTz3HPPmXXr1pm9e/caYxpvXL/99lvj6+trnnnmGbN161YzdepUTu2tq5deesm0bt3a+Pv7mwEDBpgVK1ZYHanJknTS25tvvulc5/jx4+a2224zzZo1M0FBQeZPf/qTOXjwYK3H2bNnjxkyZIgJDAw0kZGR5q677jLV1dW11vnqq69M7969jb+/v2nbtm2t5/BE/1tGGOf68emnn5ru3bsbm81mOnfubF5//fVa9zscDvPwww+b6OhoY7PZzIUXXmiysrJqrXP48GEzcuRIExISYsLCwsy4ceNMaWlprXXWr19vzjnnHGOz2UxcXJyZPn16g7+2pqKkpMRMnDjRtG7d2gQEBJi2bduaBx98sNapoozzmfnqq69O+p48duxYY0zjjuv7779vOnbsaPz9/U23bt3MokWL6vx6vIz5yVR4AAAAjcwjjxkBAABNB2UEAABYijICAAAsRRkBAACWoowAAABLUUYAAIClKCMAAMBSlBEAAGApyggAALAUZQQAAFiKMgIAACxFGQEAAJb6f/mE1waB7/V3AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import torch\n", "import math\n", "x = torch.Tensor([0.1])\n", "x.requires_grad = True\n", "\n", "f = lambda x: x **4 - 2 * x ** 2 + math.cos(x)\n", "\n", "epoch = 10001\n", "learning_rate = 0.0001\n", "\n", "x_limit = []\n", "for e in range(epoch):\n", " y = f(x)\n", " y.backward(retain_graph=True)\n", " # 下面的with实际是产生一个禁止求导的上下文\n", " with torch.autograd.no_grad():\n", " x -= x.grad * learning_rate\n", " x_limit.append(x.detach().cpu().item()) # 把张量变成标量\n", " # 梯度清空\n", " x.grad.zero_()\n", " \n", "print(x)\n", "plt.plot(range(epoch-1), x_limit[0:-1])\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "983123ee-b2c8-4b5b-ad3b-66828358a147", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "03d99783-7e36-4f03-8f65-8b14bf7c6484", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "b2f0a3af-77cb-4ee9-9507-6ccd137377a7", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "a2ccbe81-22c5-42ea-acde-88f09307a181", "metadata": {}, "source": [] } ], "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.10.7" } }, "nbformat": 4, "nbformat_minor": 5 }