簡體   English   中英

將參數傳遞給Python中的函數

[英]Passing parameters to a function in Python

我兩周前開始編程,所以我意識到這可能是一個愚蠢的問題。 我想在間隔[0,25]中找到t值的y值,而不使用for循環。 我想要一個y值列表,但我卻得到<function y at 0x01D4D5D0>

from math import cos, e, sqrt
import numpy as np
m = 9          
A = 0.3         
k = 4          
gamma = 0.15

t_array = np.linspace(0,25)
y_array = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
def y(t_array):
    y = []
    y.append(A*(e**(-gamma)**(t_array))*cos((sqrt(k/m))*(t_array)))
print(y)

最初的問題是由於您沒有調用定義的函數而引起的。 您不能期望函數知道它必須使用哪些參數。 Python是程序性的; 您必須自己傳遞這些論點。

另外(我建議這樣做),您可以只使用numpy的ufuncs並矢量化所有內容:

y_array = A * (np.exp(-gamma) ** (t_array)) * np.cos((np.sqrt(k / m)) * (t_array))

print(y_array)
array([ 0.3       ,  0.26197643,  0.20012117,  0.12471753,  0.04610095,
       -0.02650152, -0.08584334, -0.12718585, -0.14847109, -0.1501709 ,
       -0.13487525, -0.10670268, -0.07062388, -0.03178614,  0.00508595,
        0.03615761,  0.05878548,  0.07164338,  0.07468336,  0.06895966,
        0.05635461,  0.03925115,  0.0201959 ,  0.00159182, -0.01454951,
       -0.02677677, -0.03428127, -0.03689604, -0.0350233 , -0.02950888,
       -0.02148485, -0.01220259, -0.00287629,  0.0054473 ,  0.01198185,
        0.0162522 ,  0.01810327,  0.0176719 ,  0.01533013,  0.01161037,
        0.00712318,  0.00247811, -0.00178419, -0.00524252, -0.00762514,
       -0.00881889, -0.00885931, -0.00790559, -0.00620522, -0.00405386]

免責聲明 :由於您尚未說明要執行的操作,因此我無法驗證此答案。 希望這可以使您開始正確地進行矢量化工作。

我認為問題是您有一個名為“ y”的函數,並且打印y會打印該函數的位置。 同樣,函數y不僅被定義為運行,而且也不會返回任何內容。 因此,要在y函數中打印新創建的y列表,可以執行以下操作:

def y(t_array):
    y_values = []
    y_values.append(A*(e**(-gamma)**(t_array))*cos((sqrt(k/m))*(t_array)))
    return y_values
print(y(t_array))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM