所以基本上我必须:首先计算某个值'e'
be = b/(n+1)
h=np.arange(1,800,1)
e1 = (h*(h+t1))/(2*(be[1]+h))
e2 = (h*(h+t1))/(2*(be[2]+h))
'e'一直持续到25.你可以想象每次定义一个新的变量e#n都相当慢。我需要将所有这些值'e'放入一个不同的公式中:
Iyy1= ((1/12)*be[1]*t1**3 + be[1]*t1*e1**3) + ((1/12)*t1*h**3 + 0.25*t1*h**2 - t1*e1*h**2 + 0.25*(h**2)*(t1**2) + h*t1*e1**2 - 0.5*e1*h*t1**2) + ((2/15)*h*t1**3 + ((2/5)*h*t1)*((t1+0.5*h)+(0.5*h-(e1-0.5*t1)))**2)
在这里,我需要用一系列'e'而不是'be'来做同样的事情。所以最后我必须得到25个阵列Iyy。我已经尝试了一些循环,但我无法解决这个问题(我是一个初学者)。任何人都可以帮忙吗?
答案 0 :(得分:0)
您可能希望使用lambda functions和list comprehension。
func = lambda x: (h*(h+t1))/(2*(be[x]+h))
long_func = lambda x: ((1/12)*be[1]*t1**3 + be[1]*t1*x**3) + ((1/12)*t1*h**3 + 0.25*t1*h**2 - t1*x*h**2 + 0.25*(h**2)*(t1**2) + h*t1*x**2 - 0.5*x*h*t1**2) + ((2/15)*h*t1**3 + ((2/5)*h*t1)*((t1+0.5*h)+(0.5*h-(x-0.5*t1)))**2)
Iyy_list = [long_func(func(x)) for x in range(1,26)]
Iyy_list将包含您的25个值,这是您的两个函数的结果。
使用range(1,26)
,我们会生成1到25之间的数字。
生成的每个数字将作为x应用于第一个函数(因此它将是[x]的索引)
此功能的结果将应用于较长的功能,位于x的每个位置。
索引的范围从1到25,但我不确定你是否知道在python中,列表从索引0开始。如果你想从索引0开始,请使用{ {1}}代替range(25)