python - 在一张图上绘制具有相同驱动强度的两个解决方案

标签 python numpy plot graph

我试图在同一张图上绘制两个解决方案,同时仅更改这些解决方案的初始条件。我希望初始条件为 y = 0 的一个值和 y = -pi/2 的另一个值。我不确定如何让它们位于同一个图表上,而无需再次复制和粘贴所有内容并创建新数组。

import numpy as np
import matplotlib.pyplot as plt

t = 0.0
y = 0.0
u = 0.0
F = 1.073
Wd = 2*np.pi
w0 = 1.5*Wd
b = w0/4

ts =[]
ys =[]

h= 0.001

while (t <= 30):
    m1 = u
    k1 = (-w0**2)*np.sin(y) + u*(-2*b) + F*(w0**2)*np.cos(Wd*t)
    m2 = u + (h / 2.) * k1
    t_2 = t + (h / 2.)
    y_2 = y +(h / 2.) * m1
    u_2 = m2
    k2 = (-w0**2)*np.sin(y_2) + u_2*(-2*b) + F*(w0**2)*np.cos(Wd*t_2)
    m3 = u + (h / 2.) * k2
    t_3 = t + (h / 2.)
    y_3 = y + (h / 2.) * m2
    u_3 = m3
    k3 = (-w0**2)*np.sin(y_3) + u_3*(-2*b) + F*(w0**2)*np.cos(Wd*t_3)
    m4 = u + h * k3
    t_4 = t + h
    y_4 = y + h * m3
    u_4 = m4
    k4 = (-w0**2)*np.sin(y_4) + u_4*(-2*b) + F*(w0**2)*np.cos(Wd*t_4)
    t = t + h
    y = y + (h / 6.) * (m1 + (2 * m2) + (2 * m3) + m4)
    u = u + (h / 6.) * (k1 + (2 * k2) + (2 * k3) + k4)
    ts.append(t)
    ys.append(y)

plt.plot(ts,ys)
plt.xlabel('$t$',fontsize=18)
plt.ylabel('$\phi$',fontsize=18)
plt.axhline(y=0, color = 'black')
plt.show()

最佳答案

import numpy as np
import matplotlib.pyplot as plt


def plotit(y):
    t = 0.0
    #y = 0.0
    u = 0.0
    F = 1.073
    Wd = 2*np.pi
    w0 = 1.5*Wd
    b = w0/4

    ts =[]
    ys =[]

    h= 0.001

    while (t <= 30):
        m1 = u
        k1 = (-w0**2)*np.sin(y) + u*(-2*b) + F*(w0**2)*np.cos(Wd*t)
        m2 = u + (h / 2.) * k1
        t_2 = t + (h / 2.)
        y_2 = y +(h / 2.) * m1
        u_2 = m2
        k2 = (-w0**2)*np.sin(y_2) + u_2*(-2*b) + F*(w0**2)*np.cos(Wd*t_2)
        m3 = u + (h / 2.) * k2
        t_3 = t + (h / 2.)
        y_3 = y + (h / 2.) * m2
        u_3 = m3
        k3 = (-w0**2)*np.sin(y_3) + u_3*(-2*b) + F*(w0**2)*np.cos(Wd*t_3)
        m4 = u + h * k3
        t_4 = t + h
        y_4 = y + h * m3
        u_4 = m4
        k4 = (-w0**2)*np.sin(y_4) + u_4*(-2*b) + F*(w0**2)*np.cos(Wd*t_4)
        t = t + h
        y = y + (h / 6.) * (m1 + (2 * m2) + (2 * m3) + m4)
        u = u + (h / 6.) * (k1 + (2 * k2) + (2 * k3) + k4)
        ts.append(t)
        ys.append(y)

    plt.plot(ts,ys)
    plt.xlabel('$t$',fontsize=18)
    plt.ylabel('$\phi$',fontsize=18)
    plt.axhline(y=0, color = 'black')



plotit(y=0)
plotit(y=-np.pi/2.0)
plt.show()

关于python - 在一张图上绘制具有相同驱动强度的两个解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36973517/

相关文章:

python - 如何在python中禁用来自lambda的默认日志消息

python - 如何按文件名中包含的整数升序对文件进行排序

python - 使用 numpy 或 pandas 处理长格式的 csv 文件

R - 让 ggplot 看起来适合 2 色打印?

python - Matplotlib:循环中的绘图在循环结束时再次出现

python - PyTorch 阶乘函数

python - SQLAlchemy 双向关系关联代理

python - 在python中获取数组中数字的升序

r - R 中线性模型的 4 个输出

python - 将 python 脚本放入 docker 容器中