如何在Python上绘制一个相似的方程

时间:2017-01-02 05:51:57

标签: python numpy matplotlib

我尝试使用matplotlib在python上绘制图表,但我无法获得预期的结果。

公式1:1/2 * (w1 + w2) + 1/2 * np.sqrt(4*(g)**2 + (w2-w1)**2)

公式2:1/2 * (w1 + w2) - 1/2 * np.sqrt(4*(g)**2 + (w2-w1)**2)

我的python代码:

import matplotlib.pyplot as plt
import numpy as np

def W_p(w1,w2,g):
   return 1/2 * (w1 + w2) + 1/2 * np.sqrt(4*(g)**2 + (w2-w1)**2)

def W_m(w1,w2,g):
    return 1/2 * (w1 + w2) - 1/2 * np.sqrt(4*(g)**2 + (w2-w1)**2)

w1 = np.linspace(-10,10,1)
w2 = np.linspace(0.9,1.10,0.1)
g = 1

plt.plot(W_p(w1,w2,g), 'r', W_m(w1,w2,g), 'b')

plt.show()

generatad图应该如下图所示:

2 个答案:

答案 0 :(得分:13)

  

numpy.linspace(start,stop,num = 50,endpoint = True,retstep = False,   D型=无)

     

在指定的时间间隔内返回均匀间隔的数字。

     

返回按间隔计算的num均匀间隔样本   [开始,停止]。

     

可以选择排除间隔的终点。

     

参数:

     

start:标量序列的起始值。

     

停止:   标量序列的结束值,除非端点设置为False。   在这种情况下,序列包括除num + 1的最后一个之外的所有序列   均匀间隔的样本,以便排除停止。注意这一步   端点为False时大小更改。

     

num:int,可选要生成的样本数。默认值为50.必须为非负数。

     

<强> ....

必须改变

w1 = np.linspace(-10,10,1)
w2 = np.linspace(0.9,1.1,0.1)

w1 = np.linspace(-10,10,100)
w2 = np.linspace(0.9,1.1,100)

enter image description here

答案 1 :(得分:0)

np.linspace()的最后一个参数是点数。它不应该是1或0.1。试试100。