输出值不正确

时间:2018-11-26 20:03:43

标签: python python-3.x

变量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))

1 个答案:

答案 0 :(得分:0)

x_fy_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))