I stumbled upon an article by Changwei Jun – if my memory serves me correctly – that he recalled many years later when he was in college that all the differential equations he was forced by his middle/high school teachers to memorize mechanically suddenly make full sense for him when he saw the connection between the eigenvector and differential equations.
So I set out to find the connection between the two, hoping I get the cracking moment as he did.
After viewing the playlist – Differential equations, studying the unsolvable – by 3Brown1blue on youtube, I am elated to see what it means and how beautiful it is!
It starts form physical problem of pendulum’s trajectory, which is intuitive and concrete to understand. The mathematician tends to use abstract symbols to help think and hence solve the problem. So in the following diagram, the variable is t, theta is dependent on t, and arc distance x = L*theta.
Because the pendulum is on the end of a string, hence, it can not fly off, we dissect the gravity force to sin(theta) and cos(theta), in this case, only sin(theta) is pushing the point particle at that moment to move ahead.
Now we get the first step.
Visualizing the equation back to pendulum movement.
Now it surfaced out. The matrix symbol indicates a vector, differential equation embedded vector. shown in graphs is all these small arrows:
What’s wonderful is that any system of ordinary differential equation can be expressed by vector field.
Hence we describe this way of thinking, the coordinate system composed of theta, theta prime, or in other word, the variable as x, the first order differentiation of the variable in y, a phase space, or phase flow.
Applying the infinitely differential approach, it’s programmingly feasible to calculate phenomena as long as we condense to above phase space/equations.
The below codes gives a way to calculate the trajectory of pendulum at any time t.
#phase space mathmatical reflection in repetive small steps infinestimal import numpy as np #physica constants g = 9.8 L = 2 mu = 0.1 THETA_0 = np.pi / 3 #60 degrees THETA_DOT_0 = 0 # no initial angular velocity #definition of ODE def get_theta_double_dot(theta, theta_dot): return -mu * theta_dot - (g / L) * np.sin(theta) # Solution to the differential equation def theta(t): #initializing chaning values theta = THETA_0 theta_dot = THETA_DOT_0 delta_t = 0.01 for time in np.arange(0, t, delta_t): theta_double_dot = get_theta_double_dot( theta, theta_dot ) theta += theta_dot * delta_t theta_dot += theta_double_dot * delta_t return theta theta(1.0)