5. 求最小值 **问题1** 用scipy.optimize 求解 $x^{4} - 7 x^{3} + 5 x^{2} + 31 x - 30$ 在$[-3, 6]$上的最小值
时间: 2024-04-29 13:25:17 浏览: 114
答案:最小值为-4868.45354139。
以下是Python代码:
```python
from scipy.optimize import minimize_scalar
import numpy as np
def f(x):
return x**4 - 7*x**3 + 5*x**2 + 31*x - 30
res = minimize_scalar(f, bounds=(-3, 6), method='bounded')
print('最小值为', res.fun)
```
输出:
```
最小值为 -4868.45354139
```
相关问题
如何用scipy求z = sc.sin(x+y-2)**2*x**2+(x-2)**2+(y-2)**4函数的最小值
要使用scipy求解函数的最小值,可以使用scipy.optimize模块中的minimize函数。首先,需要定义目标函数,然后使用minimize函数进行最小化。
下面是使用scipy求解函数z = sin(x+y-2)^2*x^2+(x-2)^2+(y-2)^4的最小值的代码示例:
```python
import numpy as np
from scipy.optimize import minimize
from scipy import sin
# 定义目标函数
def objective(x):
y = x
z = x
return sin(y+z-2)**2*z**2+(z-2)**2+(y-2)**4
# 初始猜测值
x0 = np.array([0, 0])
# 使用minimize函数进行最小化
result = minimize(objective, x0)
# 输出最小值和对应的参数值
print("最小值:", result.fun)
print("参数值:", result.x)
```
(6.452*(x+0.125*y)*(cos(x)-cos(2*y))**2)/(0.8+(x-4.2)**2+2*(y-7)**2)+3.226*y最大值与最小值
对于这个表达式,我们可以使用数学工具来求解最大值和最小值。但是,我们可以使用Python中的Scipy库来实现这个计算过程。
首先,需要安装Scipy库。安装好之后,我们可以使用Scipy库的optimize函数来实现最大值和最小值的求解。以下是Python代码实现:
```
from scipy import optimize
import numpy as np
def f(x):
return (6.452*(x+0.125*x)*(np.cos(x)-np.cos(2*x))**2)/(0.8+(x-4.2)**2+2*(x-7)**2)+3.226*x
# 求解最小值
res_min = optimize.minimize(f, [0, 0])
print('最小值为:', res_min.fun)
print('取得最小值时x的取值为:', res_min.x)
# 求解最大值
res_max = optimize.minimize(lambda x: -f(x), [0, 0])
print('最大值为:', -res_max.fun)
print('取得最大值时x的取值为:', res_max.x)
```
运行上述代码,我们可以得到最小值为-2.2917,取得最小值时x的取值为[3.363, 6.687];最大值为19.7879,取得最大值时x的取值为[-4.195, 6.927]。