py/matlab:绘制相平面轨迹

File : python实现-phase.py
File : matlab实现-phase.m
File : simulink实现-phase.slx
Type : Python & Matlab
Brief : 绘制相平面轨迹


示例二阶方程为:

$$
\ddot{x} + \dot{x} + 0.5x = 0
$$

三种实现的结果相同。

  • python 实现
import matplotlib.pyplot as plt
import math

x = 0           # x初始
dx = 10         # dx初值
time = 0        # 仿真时间
dt = 0.001      # 积分步长
size = 20000
p_dx = [0 for x in range(size)]
p_x = [0 for x in range(size)]

for k in range(size):
    ddx = - dx - 0.5 * x
    dx += ddx * dt
    x += dx * dt
    p_dx[k] = dx
    p_x[k] = x
    time += dt

print("Time: {}".format(time))
plt.plot(p_x, p_dx)
plt.show()
  • matlab 实现
x = 0;          % x初值
dx = 10;        % dx初值
n = 1;          % 下标
time = 0;       % 仿真时间长度
dt = 0.001;     % 积分步长

for i = 1:20000
    ddx = -dx - 0.5 * x;
    dx = dx + ddx * dt;
    x = x + dx * dt;

    p_dx(n) = dx;
    p_x(n) = x;
    n = n + 1;
    time = time + dt;
end

figure(1);
plot(p_x, p_dx);
  • simulink实现

phase.xls


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [ yehuohan@gmail.com ]

文章标题:py/matlab:绘制相平面轨迹

本文作者:Y

发布时间:2017-12-19, 11:20:00

最后更新:2019-05-21, 20:08:40

原始链接:http://yehuohan.github.io/2017/12/19/Gist/matlab/Python-Matlab%E7%BB%98%E5%88%B6%E7%9B%B8%E5%B9%B3%E9%9D%A2%E8%BD%A8%E8%BF%B9/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。