1

我正在尝试为 1 < R < 20 找到以下函数的最大值。如何将其实现到代码中?

解决方案应该是 R 约为 15.5 左右。

#!/usr/bin/env python
#  Plotting the energy for circular Hohmann transfer

import scipy
import matplotlib
import numpy as np
import pylab


def f(R):
    return 1 / np.sqrt(R) - (np.sqrt(2) * (1 - R)) / (np.sqrt(2) * (1 + R)) - 1

x = np.arange(1, 20)
pylab.plot(x, f(x), 'r')
pylab.show()
4

1 回答 1

2

您可以使用scipy.optimizie.fmin

>>> scipy.optimize.fmin(lambda r: -f(r), 10)
Optimization terminated successfully.
         Current function value: -0.134884
         Iterations: 16
         Function evaluations: 32
array([ 11.44451904])

这实际上是最大值:

>>> x = np.linspace(1, 20, 1000)
>>> plt.plot(x, f(x))
[<matplotlib.lines.Line2D object at 0x0000000007BAEF98>]
>>> plt.show()

在此处输入图像描述

于 2013-04-02T01:50:41.317 回答