【问题标题】:Plot a piecewise stream plot绘制分段流图
【发布时间】:2020-04-25 22:38:10
【问题描述】:

我需要绘制一个分段流图,其中我的矢量场由

定义
def f(x):
    if x<= 2:
        return 5/((3-2*(-x))**2)-((-18+(-x))*(-6+(-x)))/((-x)**4)
    else:
        return 5/((3-2*x)**2)-((-18+x)*(-6+x))/(x**4)

u = y

v = f(x)

我该如何进行这种绘图?

【问题讨论】:

    标签: python matplotlib math plot graph


    【解决方案1】:

    使用np.piecewise定义函数和np.mgrid

    import numpy as np
    import matplotlib.pyplot as plt
    
    w = 3
    y, x = np.mgrid[-w:w:100j, -w:w:100j]
    
    U = y
    
    V = np.piecewise(x, [x <= 2, x > 2], [lambda x: 5/((3-2*(-x))**2)-((-18+(-x))*(-6+(-x)))/((-x)**4), lambda x: 5/((3-2*x)**2)-((-18+x)*(-6+x))/(x**4)])
    
    plt.streamplot(x, y, U, V, density=[0.5, 1])
    
    plt.show()
    

    为我们提供了以下情节:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-18
      • 2022-08-23
      • 1970-01-01
      • 1970-01-01
      • 2017-05-16
      • 2022-06-14
      • 2014-04-30
      • 1970-01-01
      相关资源
      最近更新 更多