I have a set of second order differential equations:
and I would like to solve for using
odeint
in python. Is this possible?
I have attempted to do it, but my code does not give me the expected result.
import numpy as np, matplotlib.pyplot as plt, matplotlib.font_manager as fm,os
from scipy.integrate import odeint
from mpl_toolkits.mplot3d.axes3d import Axes3D
initial_state = [0.1, 0, 0]
a = 4
time_points = np.linspace(0, 100, 10000)
def my_system(current_state, t):
theta1, theta2, theta3 = current_state
d2theta1_dt2 = -a*(2*theta1-theta2-theta3)
d2theta2_dt2 = -a*(2*theta2-theta1-theta3)
d2theta3_dt2 = -a*(2*theta3-theta1-theta2)
return [d2theta1_dt2, d2theta2_dt2, d2theta3_dt2]
xyz = odeint(my_system, initial_state, time_points)
theta1 = xyz[:, 0]
theta2 = xyz[:, 1]
theta3 = xyz[:, 2]
fig = plt.figure(figsize=(12, 9))
ax = fig.gca(projection='3d')
ax.xaxis.set_pane_color((1,1,1,1))
ax.yaxis.set_pane_color((1,1,1,1))
ax.zaxis.set_pane_color((1,1,1,1))
ax.plot(theta1, theta2, theta3, color='g', alpha=0.7, linewidth=0.6)
ax.set_title('plot', fontproperties=title_font)
plt.show()