Python中的错误余弦值

时间:2015-06-16 16:08:26

标签: python equation angle cosine

我正在通过取0到1之间的数字来模拟积分,所以我可以得到一个力分量。但是我总是得到错误的余弦值,例如,当我取a = 1(因此它使得45°角,因此“L”应该等于“k”)时,我得到比“L”大的“k”如果有人可以请你看看我错了,我真的很赞。

from math import pi, sin,cos, atan
for n in s:
    f=atan(n/a)
    L=ko*(Q/N*)*cos(f)
    k=ko*(Q/N)*sin(f)
    y.append(k)
    x.append(L)
yy=sum(y)
xx=sum(x)
print (xx,yy)

2 个答案:

答案 0 :(得分:5)

你知道它是弧度的,对吧?

In [4]: math.cos(45)
Out[4]: 0.5253219888177297

In [5]: math.cos(45 / 180. * math.pi)
Out[5]: 1.0

答案 1 :(得分:0)

如果你想处理大数组,你应该使用np.array初始化为零(只是一个建议,无论是哪种方式,我更喜欢使用数组):

#from math import pi, sin,cos, atan 
import numpy as np 
a=1                 #float( input("Introduce distance: ")) 
N=10                #float( input("Introduce number of charges: ")) 
Q=10**-8 
s=np.linspace (0,1,N)
y=np.zeros(N)
x=np.zeros(N) 
z=np.zeros(N) 
ko=1/(4*np.pi*8.8542*10**-12)
for n in s: 
    f=np.arctan(n/a) 
    L=ko*(Q/(N*(a**2+n**2)))*np.cos(f) 
    k=ko*(Q/(N*(a**2+n**2)))*np.sin(f) 
    E=ko*(Q/(N*(a**2+n**2))) 
    z[n]=E 
    y[n]=k 
    x[n]=L 

zz=sum(z) 
yy=sum(y) 
xx=sum(x) 
print (x,y)       #xx
print(z)          #zz

由于浮动而存在的微小差异无法保持更精确的值。您可以使用np.pi/4代替f来获取相同的值。如果您想使用更高精度的值,请参阅此answer. 如果你想模拟集成,你可能需要研究蒙特卡罗模拟。