Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用numPy和matplotlib绘制函数关于两个变量的最大值_Python_Numpy_Matplotlib - Fatal编程技术网

Python 使用numPy和matplotlib绘制函数关于两个变量的最大值

Python 使用numPy和matplotlib绘制函数关于两个变量的最大值,python,numpy,matplotlib,Python,Numpy,Matplotlib,嗨,我想用变量r变化的最大值I绘制一张图 我对DE使用Euler方法解决方案,代码为: import numpy as np from matplotlib import pyplot as plt B=0.001 r=0.06 n=101 dt=1 t0=0 tf=10 t = np.linspace(t0,tf,n) S = np.zeros([n]) I = np.zeros([n]) S[0]=199 I[0]=1 for i in range(1,n): S[i] = S[

嗨,我想用变量r变化的最大值I绘制一张图

我对DE使用Euler方法解决方案,代码为:

import numpy as np
from matplotlib import pyplot as plt 

B=0.001
r=0.06
n=101
dt=1
t0=0
tf=10

t = np.linspace(t0,tf,n)
S = np.zeros([n])
I = np.zeros([n])

S[0]=199
I[0]=1

for i in range(1,n):
 S[i] = S[i-1] + (- B * (S[i-1]) )* I[i-1] * dt
 I[i] = I[i-1] + (I[i-1] * (B * S[i-1] - r)) * dt
这将绘制x轴上的变量t,r为常数

但是,当我尝试对I与r的绘图进行编码时,通过将r更改为变量,我从print()获得的值与手动更改常量r的值(如上所述)不相等

所以我尝试使用np.max和r=np.linspace,但没有得到预期的图

import numpy as np
from matplotlib import pyplot as plt 

B=0.001
n=101
dt=1
t0=0
tf=10

t = np.linspace(t0,tf,n)
r = np.linspace(0.01,0.5,n)
S = np.zeros([n])
I = np.zeros([n])

S[0]=199
I[0]=1

for i in range(1,n):
 r[i] = r[i]
 S[i] = S[i-1] + (- B * (S[i-1]) )* I[i-1] * dt
 I[i] = I[i-1] + (I[i-1] * (B * S[i-1] - r[i])) * dt
Imax=np.max(I)
Imax2=np.array(Imax)

plt.plot(r,Imax2)
如果我没有使用r=linspace,我会在I[I]行中得到size-1数组错误。知道如何获得I vs r的最大值吗?

使用numpy函数获得elementwise max

np.max
函数将数组减少为浮动(如果未指定轴)

我编辑了您的代码以允许其运行:

import numpy as np
from matplotlib import pyplot as plt 

B=0.001
n=101
dt=1
t0 = 0 # inferred not in the actual code
tf = 10 # inferred not in the actual code
t = np.linspace(t0,tf,n)
r = np.linspace(0.01,0.5,n)
S = np.zeros([n])
I = np.zeros([n])

S[0]=199
I[0]=1
# error with index, changed to i
for i in range(1,n):
 r[i] = r[i]
 S[i] = S[i-1] + (- B * (S[i-1]) )* I[i-1] * dt
 I[i] = I[i-1] + (I[i-1] * (B * S[i-1] - r[i])) * dt
# get max of I and S element wise
Imax=np.maximum(S, I)

plt.plot(r,Imax)

欢迎来到StackOverflow!我试图运行你的代码,但它是非常错误的。首先,
tf
t0
未定义,for循环打开
j
,而循环内容使用
i
索引(未定义)。最后,
I
数组始终为1D。您能确保在发布之前运行您的代码吗?