5. 求最小值 **问题1** 用scipy.optimize 求解 $x^{4} - 7 x^{3} + 5 x^{2} + 31 x - 30$ 在$[-3, 6]$上的最小值
时间: 2024-04-29 15:25:17 浏览: 138
答案:最小值为-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)
```
现在有30个决策变量,x1.x2.x3......x30每一个变量的取值范围都是-10到10,用python求1*|x1|+2*|x2|+......+29*|x29|+30*|x30|的最小值
可以使用Python的优化库来求解这个问题,例如使用SciPy库中的优化函数`minimize`。首先,我们需要定义目标函数和约束条件。
目标函数是1*|x1|+2*|x2|+......+29*|x29|+30*|x30|,可以表示为:
```python
def objective(x):
return sum(i * abs(x[i-1]) for i in range(1, len(x)+1))
```
约束条件是每个决策变量的取值范围是-10到10,可以表示为:
```python
from scipy.optimize import minimize
bounds = [(-10, 10)] * 30
```
然后,我们可以使用`minimize`函数来求解最小值:
```python
result = minimize(objective, [0] * 30, bounds=bounds)
min_value = result.fun
```
最后,我们可以打印出最小值:
```python
print("Min value: ", min_value)
```
完整的代码如下所示:
```python
from scipy.optimize import minimize
def objective(x):
return sum(i * abs(x[i-1]) for i in range(1, len(x)+1))
bounds = [(-10, 10)] * 30
result = minimize(objective, [0] * 30, bounds=bounds)
min_value = result.fun
print("Min value: ", min_value)
```
阅读全文