我想在python中绘制一个函数,但是我似乎做不到。我正在运行以下代码,但出现错误,提示我无法将生成器和浮点数相乘。这是哪里来的?
from math import *
import matplotlib.pyplot as plt
t=0.1
cd=t*exp(-t/2)
tau=10
nt=100
v=0.01
w=0.9
u=0.4
s0=10
p=5
for i in range (1,10):
sigma= u/(w+(s0/(p*cd)))
print(sigma)
C= lambda ksi: cd * (1-exp(((u-w * sigma)/v)*ksi))
plt.plot([-10,-9,-8,-7,-6,-5,-4,-3,-2,-1],[C(i for i in range (-10,-1))])
plt.xlabel(ksi)
plt.ylabel(concentration)
plt.title("tumeur avec regénessence")
plt.legend()
plt.show()
t+=tau/nt
这是我得到的错误
Traceback (most recent call last):
File "C:\Users\ilyes\Downloads\tumeur_avec_regénesence.py", line 18, in <module>
plt.plot([-10,-9,-8,-7,-6,-5,-4,-3,-2,-1],[C(i for i in range (-10,-1))])
File "C:\Users\ilyes\Downloads\tumeur_avec_regénesence.py", line 17, in <lambda>
C= lambda ksi: cd * (1-exp(((u-w * sigma)/v)*ksi))
TypeError: unsupported operand type(s) for *: 'float' and 'generator'
答案 0 :(得分:2)
使用
plt.plot([-10,-9,-8,-7,-6,-5,-4,-3,-2,-1],[C(i) for i in range (-10, 0)])
代替
plt.plot([-10,-9,-8,-7,-6,-5,-4,-3,-2,-1],[C(i for i in range (-10,-1))])
说明:您想一次将C
应用于不在孔列表中的每个值。
range(-10,-1)为您提供值-10 <= v < -1
,但您希望包含-1。
答案 1 :(得分:0)
使用numpy。
import numpy as np
import matplotlib.pyplot as plt
tau=10
nt=100
v=0.01
w=0.9
u=0.4
s0=10
p=5
ksi = np.arange(-10,0)
for t in np.arange(1,10)*tau/nt:
cd = t*np.exp(-t/2)
sigma = u/(w+(s0/(p*cd)))
C = lambda ksi: cd * (1-np.exp(((u-w * sigma)/v)*ksi))
plt.plot(ksi, C(ksi), label=f"t = {t}")
plt.xlabel("ksi")
plt.ylabel("concentration")
plt.title("tumeur avec regénessence")
plt.legend()
plt.show()