[英]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.