gpt4 book ai didi

Python:设置函数的最大值并循环查找数组中下一个值的最大值

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:24 25 4
gpt4 key购买 nike

当我给它一个值范围时,我试图找到函数的最大值,然后将相同的值放入数组中以供以后使用。在本例中,我有 2 个参数,一个是 x,另一个是 theta。我的问题是它没有循环到列表中的下一个 x 值。有没有办法让它循环并将最大值设置到数组中?

import sympy.mpmath as mp 
import numpy as np
import scipy.optimize as sc
from scipy.optimize import fmin
import matplotlib.pyplot as plt


#INPUT
c = 299792458. #speed of light
f = 300e6 #frequency
lmda = c/f #lambda
C = 0.5772 #Euler's constant

def E(x):

i = [] #creates an empty list

for z in x:

def kl(x):
return (2*np.pi/lmda)*x*lmda/2

def U(theta):
u = (np.cos(kl(z)*np.cos(theta))-np.cos(kl(z)))/np.sin(theta)
return u

theta = np.linspace(0.0001,np.pi,1000)
E_max = fmin(lambda theta: -U(theta), 0)

i+=[E_max]

return np.array(i)

def Denom(x):

y = [] #creates an array

for z in x:

def kl(x):
return (2*np.pi/lmda)*x*lmda

def Integrand(x):
f =np.abs( mp.ci(kl(x)) + 0.5*np.sin(kl(x))*(mp.si(2*kl(x))-2*mp.si(kl(x))) + 0.5*np.cos(kl(x))*(2*mp.ci(kl(x)) - mp.ci(2*kl(x))))
return f

PWR_tot = Integrand(z)
y+=[PWR_tot]

return np.array(y)


x = np.linspace(0.0001,5.,1000)

Directivity = E(x)/Demon(x)

plt.plot(x,Directivity)
plt.ylim(ymin = 0)
plt.show()

最佳答案

您的代码结构不正确,这就是您没有得到任何结果的原因。首先,在 for 循环中定义函数。这不会产生错误,但您实际上想要做的是提前定义该函数,然后在 for 循环中调用它,如下所示:

def myfunction(x):
return x+ 3

for y in range(0,4):
print( myfunction(y) )

还要注意,正如 joel goldstick 指出的那样,return 语句必须缩进才能属于该函数。否则,该函数将不会返回任何内容。这同样适用于 E(x) 函数中的每个语句。

关于Python:设置函数的最大值并循环查找数组中下一个值的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37813813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com