私はあなたのコードを試してみました、そしてそれはうまくいくようです。ただし、AとBを互いに近くに近づけると、A = X-1E-15およびB = X + 1E-15とすると、この関数は予想どおりの実際の微分に収束しません。なぜこうなった？
デフォルトでは、Pythonは小数点を「float」、64ビットのフローティングポイント番号として保存します。これは理論的には約2.2E-308〜1.8E+308の値範囲を達成しますが、「フロート」にデシマルが保存される方法により、精度ははるかに悪化しています。ベース2（バイナリ）画分を使用します。たとえば、1/2は0.1、1/8は0.001です。最終的には、0.3333としてベース10の割合に1/3を保存しようとするときに最終的に精密な制限に達するように、「フロート」の範囲値内のすべての数値を正確に表すことができません：ベース2の1/10繰り返し0.00011001100になります。したがって、入力が1E-15ほど小さい場合、そのようなエラーは結果にとって重要になり、実際の導関数との違いが生じます。
この問題を解決するために、正確に表される小数数を提供する「小数」モジュールを使用できます。例は次のとおりです。

`` python
小数点以降、小数点以降、getContext

＃小数の精度を設定します。デフォルトは28です
getContext（）。prec = 26

＃他の変数を小数点に変換します。ただし、フロートは精密な問題をもたらします
A = Decimal（ "1.2375"）#decimal（ '1.2375'）
b = 10進（1）/小数（7）#decimal（ '0.14285714285714285714285714'）
C = Decimal（6.325）#decimal（ '6.3250000000000000017763568394'）
`` `