擅长:python、mysql、java
<p>我想你对什么是数学函数和它的数值实现有一些误解。在</p>
<p>您应该将您的功能定义为:</p>
<pre><code>def func(x1, x2, x3, x4):
return -x1*x2*x3*x4
</code></pre>
<p>现在您需要在特定的点计算函数,可以使用您提供的<code>np.mgrid</code>来实现。在</p>
<p>如果要计算渐变,请使用<code>copy.misc.derivative</code>(<a href="https://docs.scipy.org/doc/scipy/reference/generated/scipy.misc.derivative.html" rel="nofollow noreferrer">https://docs.scipy.org/doc/scipy/reference/generated/scipy.misc.derivative.html</a>)(注意dx的默认参数通常不好,请将其更改为<code>1e-5</code>。在数值计算中,线性梯度和非线性梯度没有区别,只是对于非线性函数,梯度并非处处相同。在</p>
<p>使用<code>np.gradient</code>实际上是从数组中的点计算梯度,函数的定义被<code>f</code>的定义所隐藏,因此不允许在不同的点进行多个梯度计算。同样,使用你的方法会使你依赖于你的离散化步骤。在</p>