我是編程新手,對於如何編寫自己的循環有點不確定。這是我想要的嗎?製作陣列的最佳方法
讓我們細分區間[0,1]
到n
點x0=0,...,xn−1=1
。
寫功能compute_discrete_u(epsilon, n)
該返回兩個numpy的數組:
x_array
包含n
點 u_array包含在這些點處的u
離散值的座標。
u(x)=sin(1x+ϵ)
謝謝!
我是編程新手,對於如何編寫自己的循環有點不確定。這是我想要的嗎?製作陣列的最佳方法
讓我們細分區間[0,1]
到n
點x0=0,...,xn−1=1
。
寫功能compute_discrete_u(epsilon, n)
該返回兩個numpy的數組:
x_array
包含n
點 u_array包含在這些點處的u
離散值的座標。
u(x)=sin(1x+ϵ)
謝謝!
首先,你根本不需要for循環。你想使用numpy,所以你可以使用numpy構建的矢量化操作。
這裏是你是從字面上要求(最有可能你不應該怎麼解決你的問題)功能:
# Do NOT use this.
import numpy as np
def compute_discrete_u(epsilon, n):
x = np.linspace(0, 1, n)
return x, np.sin(x + expsilon)
這是相當尷尬的API。從點,外觀設計上,你是在功能混合兩種責任:
x
矢量u
載體。您不應該爲了複雜性和可重用性的原因這樣做。如果你以後需要非統一的x
會怎樣?
因此,這裏是你應該做的:
import numpy as np
def compute_u(x, epsilon):
return np.sin(x + epsilon)
x = np.linspace(0, 1, num=101)
u = compute_u(x, epsilon=1e-3)
這是比較容易理解的,因爲該功能僅僅是數學函數。另外,你可以計算你喜歡的任何x數組(或單個浮點數)。如果你不需要compute_u
其他地方,你甚至可以完全放棄它,並寫入u = np.sin(x + epsilon)
這非常有幫助,非常感謝! – Kate
歡迎來到StackOverflow。請標記您指的是哪種語言。你更可能以這種方式得到答案 –
從「兩個numpy陣列」我推斷蟒蛇:) –
作爲@AP。指出,你會得到更多的答案與更合適的標籤。如果包含更多詳細信息,表明您已花費一些時間和精力自行解決問題,那麼您也有可能獲得更多更好的答案。具體來說,你有什麼嘗試?結果是什麼?他們怎麼不是你預期的結果? –