y = 100 * (x1 - x0**2)**2 + (x0 - 1)**2
    return y


logs = []
x0 = Variable(np.array(0.0))
x1 = Variable(np.array(2.0))
iters = 1000
lr = 0.001

for i in range(iters):
    print(x0, x1)

    y = rosenbrock(x0, x1)

    x0.cleargrad()
    x1.cleargrad()
    y.backward()

    logs.append([float(x0.data), float(x1.data), float(y.data)])

    x0.data -= lr * x0.grad
    x1.data -= lr * x1.grad

# 図を描画
import matplotlib.pyplot as plt

R = 0.01
x = np.arange(-2.0, 2.0, R)
y = np.arange(-1.0, 3.0, R)
X, Y = np.meshgrid(x, y)
import os, sys; sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
import numpy as np
# Import core_simple explicitly
from dezero.core_simple import Variable
from dezero.core_simple import setup_variable
setup_variable()


def f(x):
    y = x ** 4 - 2 * x ** 2
    return y


def gx2(x):
    return 12 * x ** 2 - 4


logs = []
x = Variable(np.array(2.0))
iters = 200

for i in range(iters):
    print(i, x)

    y = f(x)
    x.cleargrad()
    y.backward()

    x.data -= 0.01 * x.grad