Files

83 lines
1.7 KiB
Markdown

# Practical-4 (Gradient Descent Algorithm)
Problem Statement: Implement Gradient Descent Algorithm to find the local minima of a function. For example, find the local minima of the function y=(x+3)² starting from the point x=2.
---
## Steps
1. Define the function and its derivative
2. Initialize parameters for Gradient Descent
3. Gradient Descent Loop
4. Print the result
5. Plotting
---
## Code
### 0. Import libraries:
```python3
import numpy as np
import matplotlib.pyplot as plt
```
### 1. Define the function and its derivative:
```python3
def f(x):
return (x + 3)**2
def grad_f(x):
return 2 * (x + 3) # derivative of f(x)
```
### 2. Initialize parameters for Gradient Descent:
```python3
x_current = 2 # starting point
learning_rate = 0.1 # step size
tolerance = 1e-6 # convergence tolerance
max_iterations = 25 # maximum iterations
history = [x_current] # sotring history
```
### 3. Gradient Descent Loop:
```python3
for i in range(max_iterations):
gradient = grad_f(x_current)
x_next = x_current - learning_rate * gradient # update step
# Check convergence
if abs(x_next - x_current) < tolerance:
print(f"Converged after {i+1} iterations.")
break
x_current = x_next
history.append(x_current)
print(f"Iteration {i+1}: x = {x_current:.4f}, f(x) = {f(x_current):.4f}")
```
### 4. Print the result:
```python3
print("Local minima at x =", x_current)
print("Function value at local minima y =", f(x_current))
```
### 5. Plotting:
```python3
plt.plot(history, [f(val) for val in history], marker='o')
plt.xlabel("x values")
plt.ylabel("f(x)")
plt.title("Gradient Descent Convergence")
plt.grid()
plt.show()
```
---