我的代码运行并按预期返回K
的值,但由于尺寸问题,图形未显示w
。感谢您的帮助。
import numpy as np
import pylab as pl
k = np.linspace(0,0.1,1000)
h = 50
g = 9.81
w = 0.5*(np.ones(len(k)))
w = np.sqrt((g*k)*np.tanh(h*k))
k = max(k[w<=0.5])
print("The wave number, k = %.4f" % k)
pl.figure()
pl.plot(k, w)
pl.show()
但是,绘图返回以下错误:
x和y必须具有相同的第一尺寸,但形状为(1,)和(1000,)
答案 0 :(得分:1)
这可以做到:
import numpy as np
import pylab as pl
k = np.linspace(0,0.1,1000)
h = 50
g = 9.81
w = 0.5*(np.ones(len(k)))
w = np.sqrt((g*k)*np.tanh(h*k))
kmax = max(k[w<=0.5])
print("The wave number, k = %.4f" % kmax)
pl.figure()
pl.plot(k, w)
pl.show()
OP在评论中还提到他想在情节上标记点kmax。
可以按照以下步骤进行操作:
import numpy as np
import pylab as pl
k = np.linspace(0,0.1,1000)
h = 50
g = 9.81
w = 0.5*(np.ones(len(k)))
w = np.sqrt((g*k)*np.tanh(h*k))
kmax = max(k[w<=0.5])
print("The wave number, k = %.4f" % kmax)
pl.figure()
pl.plot(k, w)
pl.plot(kmax,w[k==kmax],'.',color='r')
pl.show()