简体   繁体   English

在 python 和 numpy 中绘制分段 function

[英]Plotting a piecewise function in python with numpy

Note: This is for homework so please don't post full code responses, just help on what I'm misusing would be appreciated注意:这是为了家庭作业,所以请不要发布完整的代码响应,只是帮助我滥用的东西将不胜感激

I'm trying to plot a piecewise defined function where when 0 < x <= 10 it will be a constant (KQ/10) and for x > 10 it will be KQ/x for 10 < x < 50. Currently my result comes back as a single value instead of my expected result of an array with a constant value up until x > 10 and then varying values until x = 50我正在尝试将 plot 分段定义为 function,其中当 0 < x <= 10 时,它将是一个常数 (KQ/10),对于 x > 10,对于 10 < x < 50,它将是 KQ/x。目前我的结果来了返回为单个值,而不是我预期的数组结果,该数组具有直到 x > 10 的常量值,然后改变值直到 x = 50

My current code我当前的代码

import matplotlib.pyplot as plt
import scipy


x = np.linspace(0, 50, 1)
R = 10
r = np.linspace(10, 50, 1)
k = 1/(4*np.pi*constants.epsilon_0)
Q = 1
def inside(x):
    return k*Q/R
def outer(x):
    return k*Q/x
result = np.piecewise(
    x,
    [x <= R, x > R ],
    [lambda x: inside(x), lambda x: outer(x)]
)
result
#plt.plot(x,result)
#plt.axis([0, 50,0, 500000])
#plt.xlabel('x')
#plt.ylabel('y')```

x = np.linspace(0, 50, 1)

isnt how linspace works... this only creates one data point... linspace 不是这样工作的……这只会创建一个数据点……

x = np.linspace(0, 50, 10000) ... would create 10k datapoints x = np.linspace(0, 50, 10000) ... 将创建 10k 个数据点

perhaps you wanted np.arange(0,50,1) ?也许你想要np.arange(0,50,1)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM