Python中的错误余弦值

Python中的错误余弦值,python,equation,angle,trigonometry,Python,Equation,Angle,Trigonometry,我正在模拟一个积分,取0到1之间的数字,这样我就可以得到一个力分量。但我总是得到错误的余弦值,例如,当我取a=1时(因此它形成45º角,因此“L”应该等于“k”),我得到的“k”比“L”大。如果有人能看看哪里出了问题,我会非常感激 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.appe

我正在模拟一个积分,取0到1之间的数字,这样我就可以得到一个力分量。但我总是得到错误的余弦值,例如,当我取a=1时(因此它形成45º角,因此“L”应该等于“k”),我得到的“k”比“L”大。如果有人能看看哪里出了问题,我会非常感激

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)

你知道它是以弧度为单位的,对吧

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

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

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

由于浮动而产生的微小差异无法保持更精确的值。您可以使用
np.pi/4
代替
f
来获得相同的值。如果要使用更高精度的值,请参见此
如果你想模拟积分,你可能必须研究蒙特卡罗模拟。

我得到的
L
k
的值是相同的,你能分享你使用的实际程序和变量的值吗。你能在问题中编辑这个吗。不适合我,但其他人可能会发现阅读你的代码更容易。是的,我知道。。。但是“atan”不应该以弧度表示角度?但是我得到的是(63.551473451641151,26.323789142728536)而不是(63.551500711322454,63.55150071132246)这是我应该得到的,所以我认为问题不在浮动中。。。但我不知道…:/好的,你的方法实际上是功能性的,touché,当角度为45º时,组件是相同的,但是数字不是我用积分得到的。积分!?你能解释一下,我们谈论的是什么集成吗?既然你刚才问的是电荷,你是指连续积分吗?
#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