gpt4 book ai didi

python - 如何将正方形上的点作为数组返回?

转载 作者:太空宇宙 更新时间:2023-11-04 00:07:36 24 4
gpt4 key购买 nike

我目前正在尝试弄清楚如何返回正方形的周长,然后可以将其用作计算电荷密度的输入。具体而言,电荷在正方形周边均匀分布,然后用于计算电势和电荷密度。

这是我的积分兑换码。

def Q(i,j,x_max,y_max,delta):
x_dist=math.exp(-(i*delta-x_max/2.0)*(i*delta-x_max/2.0)/(1.0*delta*delta))
y_dist=math.exp(-(j*delta-y_max/2.0)*(j*delta-y_max/2.0)/(1.0*delta*delta))
return x_dist*y_dist

我发现这个非常有趣的网站暗示我可以通过使用方程 x^(一个非常大的数字)+ y^(一个非常大的数字)= 1 来近似一个正方形来完成这个。这引起了我的兴趣,所以我尝试在正方形上创建点以用作电荷源。

http://polymathprogrammer.com/2010/03/01/answered-can-you-describe-a-square-with-1-equation/

我已经尝试了下面的方法,但是那当然只会返回一分。

return math.pow(x_dist,1000000)-1

有什么建议吗?谢谢!

最佳答案

您可以直接使用 np.linspace 计算周长上的点.从左到右计算 x,从下到上计算 y,您可以使用以下方法:

import numpy as np


def square(top_left, l, n):
top = np.stack(
[np.linspace(top_left[0], top_left[0] + l, n//4 + 1),
np.full(n//4 + 1, top_left[1])],
axis=1
)[:-1]
left = np.stack(
[np.full(n//4 + 1, top_left[0]),
np.linspace(top_left[1], top_left[1] - l, n//4 + 1)],
axis=1
)[:-1]
right = left.copy()
right[:, 0] += l
bottom = top.copy()
bottom[:, 1] -= l
return np.concatenate([top, right, bottom, left])

例如:

import matplotlib.pyplot as plt

s = square((0, 0), 2, 400)
plt.plot(s[:, 0], s[:, 1], 'o')
plt.grid()
plt.show()

Square


如果您出于某种原因不能使用 numpy,那么(重新)创建所需程度的功能并不会太麻烦(例如,参见 np.linspace 的源代码作为方向):

def linspace(a, b, n):
return [a + (b - a) / (n - 1) * i for i in range(n)]


def full(n, x):
return n * [x]


def square(top_left, l, n):
top = list(zip(
linspace(top_left[0], top_left[0] + l, n//4 + 1),
full(n//4 + 1, top_left[1])
))
left = list(zip(
full(n//4 + 1, top_left[0]),
linspace(top_left[1], top_left[1] - l, n//4 + 1)
))
right = [(x + l, y) for x, y in left]
bottom = [(x, y - l) for x, y in top]
return top + right + bottom + left

关于python - 如何将正方形上的点作为数组返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53548996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com