用Python求一段函数的最大值最小值
时间: 2024-03-10 11:45:32 浏览: 64
可以使用Python的SciPy库中的optimize模块来求解函数的最大值最小值。具体步骤如下:
1. 导入必要的库:
```python
from scipy import optimize
import numpy as np
```
2. 定义目标函数:
以求解 $f(x)=x^3-6x^2+9x+11$ 的最小值最大值为例,定义目标函数如下:
```python
def f(x):
return x**3 - 6*x**2 + 9*x + 11
```
3. 求解最小值:
使用 `optimize.minimize_scalar` 函数求解最小值,代码如下:
```python
res = optimize.minimize_scalar(f)
print('Minimum value:', res.fun)
print('Minimum location:', res.x)
```
其中 `res.fun` 表示函数的最小值,`res.x` 表示函数取得最小值的自变量取值。
4. 求解最大值:
使用 `optimize.minimize_scalar` 函数求解最大值,需要将目标函数取相反数,代码如下:
```python
def g(x):
return -f(x)
res = optimize.minimize_scalar(g)
print('Maximum value:', -res.fun)
print('Maximum location:', res.x)
```
其中 `res.fun` 表示函数的最大值的相反数,因此需要将其取相反数得到函数的最大值,`res.x` 表示函数取得最大值的自变量取值。
完整代码如下:
```python
from scipy import optimize
import numpy as np
def f(x):
return x**3 - 6*x**2 + 9*x + 11
res = optimize.minimize_scalar(f)
print('Minimum value:', res.fun)
print('Minimum location:', res.x)
def g(x):
return -f(x)
res = optimize.minimize_scalar(g)
print('Maximum value:', -res.fun)
print('Maximum location:', res.x)
```
阅读全文