【发布时间】:2017-03-15 21:10:32
【问题描述】:
所以我用 python 编写了这段代码。我不打算解释它,因为它是一个简单的语法修复,我似乎看不到,所以解释它的用途是没有用的。
我遇到的问题是,对于给定的 d,例如 15,我得到正确的“cuentas”值和正确的“e”值。
我想要做的是遍历一组 d 并获取每个 cuentas 和每个 e 的值,以便绘制 d 与 e。
我的问题是我似乎不知道如何在 python 中创建矩阵。
在matlab中我曾经写过两个不同的循环,比如theese:
for i=1:1:N
for j=1:9
a[i,j]= and so on
a[i,j] 将是一个包含 N 行和 9 列的矩阵,我可以访问和操作。
在我下面的代码中,我会故意将 # cmets 放在我想要遍历距离的地方
import numpy as np
import matplotlib.pyplot as plt
N=100000
cos=np.zeros(N)
phi=np.zeros(N)
teta=np.zeros(N)
a=np.zeros(N)
xrn=np.zeros(N)
yrn=np.zeros(N)
zrn=np.zeros(N)
x=np.zeros(N)
y=np.zeros(N)
z=np.zeros(N)
lim1=14.7
lim2=3.35
lim3=-lim1
lim4=-lim2
#d=np.array([15,20,25,30,35,40,45,50,55])
d=15
#for j in range(9):
for i in range(N):
cos[i]=np.random.uniform(-1,1)
teta[i]=np.random.uniform(-np.pi,np.pi)
phi[i]=np.random.uniform(0,2*np.pi)
# a[i]=d[j]/cos[i]*np.cos(phi[i])
a[i]=d/cos[i]*np.cos(phi[i])
xrn[i]=np.random.uniform(-1,1)*lim1
yrn[i]=np.random.uniform(-1,1)*lim2
x[i]=a[i]*np.sin(teta[i])*np.cos(phi[i])+xrn[i]
y[i]=a[i]*np.sin(teta[i])*np.sin(phi[i])+yrn[i]
#cuentas[j]=0
cuentas=0
#for j in range(9):
for i in range(N):
if a[i]>0 and x[i] < lim1 and x[i]>lim3 and y[i] < lim2 and y[i]>lim4:
cuentas=cuentas+1
#e[j]=cuenta[j]/N
e=cuentas/N
非常感谢那些阅读!
【问题讨论】:
-
您能确切地说明您希望脚本产生什么输出吗?似乎没有任何彻底的错误
标签: python matlab computer-science montecarlo data-science