human
I am working on the file "GEOL351/lorenz_climatechange.ipynb".
The first task is:
Very pretty. If you are curious, you can even change the plot angle within the function, and examine this strange attractor under all angles. There are several key properties to this attractor:
A forced Lorenz system
As a metaphor for anthropogenic climate change, we now consider the case of a forced lorenz system. We wish to see what happens if a force  is applied in the directions $X$ and $Y$.   The magnitude of this force is $f_0$ and we may apply it at some angle $\theta$. Hence:
$f = f_0 \left ( \cos(\theta),sin(\theta) \right) $
The new system is thus:
$$
\begin{aligned}
\dot{x} & = \sigma(y-x) + f_0  \cos(\theta)\
\dot{y} & = \rho x - y - xz +  f_0  \sin(\theta)\
\dot{z} & = -\beta z + xy
\end{aligned}
$$
Does the attractor change? Do the solutions change? If so, how?
Solving the system
Let us define a function to solve this new system:
Can you write Python program for it?
assistant
#Here happens if a force  is applied in the directions $X$ and $Y$.

def forced_lorenz(N=3, fnot=2.5, theta=0, max_time=100.0, sigma=10.0, beta=8./3, rho=28.0):
    
    def lorenz_deriv((x, y, z), t0, sigma=sigma, beta=beta, rho=rho):
        """Compute the time-derivative of a forced Lorentz system."""
        c = 2*np.pi/360
        return [sigma * (y - x) + fnot*np.cos(theta*c), x * (rho - z) - y + fnot*np.sin(theta*c), x * y - beta * z]

    # Choose random starting points, uniformly distributed from -15 to 15
    np.random.seed(1)
    x0 = -15 + 30 * np.random.random((N, 3))

    # Solve for the trajectories
    t = np.linspace(0, max_time, int(25*max_time))
    x_t = np.asarray([integrate.odeint(lorenz_deriv, x0i, t)
                      for x0i in x0])
    return t, x_t