变量d_f是所需的2d数组,但仅包含最多(9,9)的值。所有其他值均为零。同样,获得的值似乎不正确。我为d_f分配值的方式有问题吗?
import matplotlib.pyplot as plt
import numpy as np
x_o = 0.5
y_o = 0
z_o = 0
#Define flash position
x_f = np.linspace(-0.4,0.4,10)
y_f = np.linspace(-0.4,0.4,10)
z_f = 0
# Define angle of inclination
i_A =np.pi/2 # pi/2 means edge on
c = 3*pow(10,8) # A.U/minute
r = 0.5 # A.U
n_s = 360
# 1) Take 360 phi values and compute t values
phi = np.linspace(0,2*359.9*np.pi/360,n_s)
d_f_o = np.sqrt(pow((x_f-x_o),2)+ pow((y_f-y_o),2)+ pow((z_f-z_o),2))
x_r = r*np.cos(phi)
y_r = r*np.sin(phi)
z_r = 0 # Circle is in the x-y plane
d_f = np.zeros(shape=(100,n_s))
d_o = np.zeros(shape=(n_s))
d_p = np.zeros(shape=(100,n_s))
for j in np.arange(len(x_f)):
for k in np.arange(len(y_f)):
for i in np.arange(0,n_s,1):
d_f[j][k] = (np.sqrt(pow((x_f[j]-x_r[i]),2)+ pow((y_f[k]-y_r[i]),2)+ pow((z_f-z_r),2)))
d_o[i] = ((1-np.cos(phi[i]))*r*np.sin(i_A))
答案 0 :(得分:0)
x_f
和y_f
的尺寸为10 x10。也许您想这样做吗?
for j in range(100):
for k in range(n_s):
for i in np.arange(0, n_s, 1):
d_f[j][k] = (np.sqrt(pow((x_f[j%10] - x_r[i]), 2) + pow((y_f[k%10] - y_r[i]), 2) + pow((z_f - z_r), 2)))
d_o[i] = ((1 - np.cos(phi[i])) * r * np.sin(i_A))