python解常微分方程
python解常微分方程的步骤如下:
- 将计算区间分为n个小段,在每一小段上将求解的曲线作为直线处理;
- 将一个n阶常微分方程转换成[y_n,y_n-1,…,y_i,…,y_0]向量的线性方程组,其中y_i表示y的i阶导数;
- 确定初始状态
- 迭代求解每一个点的y值(欧拉法),最后通过matplotlib做出曲线图。
以下面的三阶常系数微分方程为例:
1. 假设求解区间为0~4,划分为400个小区间
2. 转换成对应的线性方程组,如下图
3. 初始状态设为y2_0 = 2, y1_0 = 1, y0_0 = 0
4. 求解及出图,见代码
from scipy.integrate import odeint
import numpy as np
import matplotlib.pyplot as plt
y2_0 = 2
y1_0 = 1
y0_0 = 0
y0 = [y0_0, y1_0,y2_0]
# 函数func,y是指上面提到的有y的各阶导数组成的向量,t是指自变量
def func(y, t):
T=[[1,1,1], [1,0,0],[0,1,0]]
return T@y
x = np.arange(0, 4.0, 0.1)
t=x
y = odeint(func, y0, t)
print(x)
print(y)
plt.plot(x,y[:,0])
plt.show()
结果如下:
python求解点绕定轴转动后的坐标
用python计算定点绕定轴转动一定角度的坐标,输出结果如下:
import numpy as np
def main():
x = np.array([1,0,0])
y = np.array([0,1,0]