我是编程新手,对于如何编写自己的for循环有点不确定。这是我想要的吗?
让我们将时间间隔[0,1]
细分为 n
点x0=0,...,xn−1=1
。
编写一个返回两个numpy数组的函数compute_discrete_u(epsilon, n)
:
x_array
包含 n
点的坐标
u_array在这些点包含 u
的离散值。
u(x)=sin(1x+ϵ)
谢谢!
答案 0 :(得分:0)
首先,你根本不需要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数组(或单个浮点数)计算u。如果您在其他地方不需要compute_u
,您甚至可以完全删除它并写下u = np.sin(x + epsilon)