Scipyを用いた2階常微分方程式のプログラムについて
現在
https://www.eidos.ic.i.u-tokyo.ac.jp/~tau/lecture/computational_physics/text/4-matplot-numpy.pdf
こちらのサイトをPythonの自学学習として利用させていただいています。係数行列A、ベクトルfまでは作成できたのですが、この先がどうしてもわかりません。何かアドバイスやヒントを教えていただけると幸いです。
import numpy as np
from sympy import *
from scipy.integrate import odeint
import matplotlib.pyplot as plt
n=10
m=2.0
k=2.0
x0=0.0
X=np.zeros((n,2))
print(X)
StartTime=0.0
EndTime=30.0
dt=0.01
Count=int((EndTime-StartTime)/dt)
A=np.arange(n*n).reshape(n,n)
for i in range(0,n):
for j in range(0,n):
if j==i:
A[i][j]=2
elif j==i-1 or j==i+1:
A[i][j]=-1
else:
A[i][j]=0
A[9][9]=1
A=A*(-k/m)
print(A)
f=np.zeros((n,1))
f[0][0]=-x0*(-k/m)
print(f)
このようなプログラムを作成し、
[[0. 0.]
[0. 0.]
[0. 0.]
[0. 0.]
[0. 0.]
[0. 0.]
[0. 0.]
[0. 0.]
[0. 0.]
[0. 0.]]
[[-2. 1. -0. -0. -0. -0. -0. -0. -0. -0.]
[ 1. -2. 1. -0. -0. -0. -0. -0. -0. -0.]
[-0. 1. -2. 1. -0. -0. -0. -0. -0. -0.]
[-0. -0. 1. -2. 1. -0. -0. -0. -0. -0.]
[-0. -0. -0. 1. -2. 1. -0. -0. -0. -0.]
[-0. -0. -0. -0. 1. -2. 1. -0. -0. -0.]
[-0. -0. -0. -0. -0. 1. -2. 1. -0. -0.]
[-0. -0. -0. -0. -0. -0. 1. -2. 1. -0.]
[-0. -0. -0. -0. -0. -0. -0. 1. -2. 1.]
[-0. -0. -0. -0. -0. -0. -0. -0. 1. -1.]]
[[0.]
[0.]
[0.]
[0.]
[0.]
[0.]
[0.]
[0.]
[0.]
[0.]]
この結果を得ています。