我试着画一个二维函数(特别是二维拉普拉斯解)。我定义了我的函数,当我输入特定的数字时,它返回正确的值,但是当我尝试运行一个值数组(下面的x,y)时,它仍然只返回一个数字。我尝试了一个x和y的随机函数(例如,f(x,y)=x^2+y^2),它给了我一个值数组。你知道吗
def V_func(x,y):
a = 5
b = 4
Vo = 4
n = np.arange(1,100,2)
sum_list = []
for indx in range(len(n)):
sum_term = (1/n[indx])*(np.cosh(n[indx]*np.pi*x/a))/(np.cosh(n[indx]*np.pi*b/a))*np.sin(n[indx]*np.pi*y/a)
sum_list = np.append(sum_list,sum_term)
summation = np.sum(sum_list)
V = 4*Vo/np.pi * summation
return V
x = np.linspace(-4,4,50)
y = np.linspace(0,5,50)
V_func(x,y)
出局:53.633709914177224
试试这个:
定义一对数组:
尝试2的简单函数
因为它们的大小相同,所以可以按元素求和(或以其他方式组合)。结果与2个输入具有相同的形状。你知道吗
现在试试“广播”。
x[:,None]
具有形状(3,1)结果是(3,3),第一个3来自重塑的
x
,第二个来自y
。你知道吗我可以用
meshgrid
生成一对数组:注意
meshgrid
中添加的参数。这就是我们从一对一维数组生成二维值的方法。你知道吗现在看看
sum
做了什么。在函数中使用时:结果是一个标量。见文件。如果我指定一个
axis
,我会得到一个数组。你知道吗如果你给了
V_func
正确的x
和y
,那么sum_list
可能是一个3d数组。无轴sum
将其减少为标量。你知道吗在这样的代码中,需要跟踪数组形状。如果需要,包括测试打印;不要只是假设什么;测试它。注意尺寸在通过各种操作时是如何增长和收缩的。你知道吗
相关问题 更多 >
编程相关推荐