0618法、最速下降法、牛顿法解方程最优解的python实现
时间: 2023-06-21 12:03:43 浏览: 82
1. 0618法
```
def f(x):
return x**3 - 3*x + 1
def golden_section_search(f,a,b,tol=1e-6):
phi = (1 + 5**0.5) / 2
resphi = 2 - phi
x1 = a + resphi*(b-a)
x2 = b - resphi*(b-a)
f1 = f(x1)
f2 = f(x2)
while abs(b-a) > tol:
if f1 < f2:
b = x2
x2 = x1
f2 = f1
x1 = a + resphi*(b-a)
f1 = f(x1)
else:
a = x1
x1 = x2
f1 = f2
x2 = b - resphi*(b-a)
f2 = f(x2)
return (a+b)/2
```
2. 最速下降法
```
import numpy as np
def gradient_descent(f, df, x0, step_size, tol=1e-6, max_iter=1000):
x = x0
for i in range(max_iter):
grad = df(x)
if np.linalg.norm(grad) < tol:
break
x = x - step_size * grad
return x
```
3. 牛顿法
```
import numpy as np
def newton_method(f, df, d2f, x0, tol=1e-6, max_iter=1000):
x = x0
for i in range(max_iter):
grad = df(x)
hess = d2f(x)
if np.linalg.norm(grad) < tol:
break
x = x - np.linalg.solve(hess, grad)
return x
```
相关推荐
![m](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)