рдЗрд▓реЗрдХреНрдЯреНрд░реЛрд╕реНрдЯреИрдЯрд┐рдХ рдЪрд╛рд░реНрдЬ рдХреЗ рддрдирд╛рд╡ рдФрд░ рдЖрдВрджреЛрд▓рдиреЛрдВ рдХреА рд░реЗрдЦрд╛рдУрдВ рдХрд╛ рджреГрд╢реНрдп, рд╕реМрд░ рдордВрдбрд▓ рдХреЗ рдЧреНрд░рд╣реЛрдВ рдХреА рдЧрддрд┐ рдХрд╛ рдЕрдиреБрдХрд░рдг

рдирдорд╕реНрддреЗ, рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ рдХреБрдЫ рд╢рд╛рд░реАрд░рд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдореЙрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рджреГрд╢реНрдп рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рджрд┐рдЦрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рд╕реБрдВрджрд░ рдЪрд┐рддреНрд░ рдФрд░ рдПрдирд┐рдореЗрд╢рди рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдмрд╣реБрдд рд╕реА рддрд╕реНрд╡реАрд░реЛрдВ рдХреЛ рд╕рд╛рд╡рдзрд╛рдиреАред


рд╕рднреА рдХреЛрдб Google рдХреЛрд▓рд╛рдм рдореЗрдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред

рд╕рд┐рджреНрдзрд╛рдВрдд


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рдЫреЛрдЯреА рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдЗрдП рдпрд╣ рд╕рдордЭрдиреЗ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдХрд┐ рддрдирд╛рд╡ рдХреА рд░реЗрдЦрд╛рдПрдВ рдХреНрдпрд╛ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдЧрд┐рдиреЗрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреЗ рд░реЗрдЦрд╛рдПрдБ рдХрдИ рдЯреЗрдВрд╢рди рд╡реИрдХреНрдЯрд░реЛрдВ рдХрд╛ рд╡рд┐рд▓рдп рд╣реИрдВ, рдЬрд┐рдирдХреА рдЧрдгрдирд╛ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╕реЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:E=kтИЧ|q|r2ред

рдЫрд╡рд┐

рдИ рдЧрдгрдирд╛ рд╡рд┐рдзрд┐


рдореИрдВрдиреЗ рддреНрд░рд┐рдХреЛрдгреЛрдВ рдХреА рд╕рдорд╛рдирддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддрдирд╛рд╡ рд╡реЗрдХреНрдЯрд░ рдХреА рдЧрдгрдирд╛ рдХреА, рдЬрд┐рд╕рд╕реЗ рдХреНрд░рдорд╢рдГ x рдФрд░ y рдЕрдХреНрд╖реЛрдВ dx рдФрд░ рдбрд╛рдИ рдкрд░ рдЕрдиреБрдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд┐рдПред



рд╕рдорд╛рдирддрд╛ рд╕реЗ рдпрд╣ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ рдХрд┐ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдЖрд░ рд╕реЗ рдмрд┐рдВрджреБ рддрдХ рд╡реЗрдХреНрдЯрд░ рдХреА рддреНрд░рд┐рдЬреНрдпрд╛ рдФрд░ рддреАрд╡реНрд░рддрд╛ рд╡реЗрдХреНрдЯрд░ рд╡реЗрдХреНрдЯрд░ рдХреА рд▓рдВрдмрд╛рдИ рдХреНрд░рдорд╢рдГ рдЗрди рд╡реИрдХреНрдЯрд░ (X1 рдФрд░ dx) рдХреЗ рдЕрдиреБрдорд╛рдиреЛрдВ рдХреЗ рдЕрдиреБрдкрд╛рдд рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИRE=xdx=ydyред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╡реЗрдХреНрдЯрд░ рдХрд╛ рдлреЙрд░реНрдореВрд▓рд╛EтЖТ=(тИСi=0NxiтИЧ|EтЖТi|RiтИСi=0NyiтИЧ|EтЖТi|Ri)
рдЗрд╕ рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рде рд╣рдореЗрдВ рдкрд╣рд▓рд╛ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддрд╛ рд╣реИред



рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рдЧрдгрдирд╛ рд╕рдорд╛рд░реЛрд╣
def E(q_prop, xs, ys, nq): #q_prop=[[xq1, yq1, q1, mq1, vxq1, vyq1], [xq2, yq2, q2, mq2, vxq2, vyq2] ... ] 
    l=1
    k=9*10**9
    Ex=0
    Ey=0
    c=0
    for c in range(len(q_prop)):#                
        q=q_prop[c]
        r=((xs-q[0])**2+(ys-q[1])**2)**0.5
        dEv=(k*q[2])/r**2
        dEx=(xs-q[0])*(dEv/r)*l
        dEy=(ys-q[1])*(dEv/r)*l

        Ex+=dEx
        Ey+=dEy
    return Ex, Ey


рд▓рд╛рдЗрди рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдзрд┐


рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рд╕реНрдЯрд╛рд░реНрдЯ рдФрд░ рдПрдВрдб рдкреЙрдЗрдВрдЯ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд▓рд╛рдЗрди рдФрд░ рдбреЙрдХ рдХрд╣рд╛рдВ рд╕реЗ рдЬрд╛рдПрдВрдЧреЗред рд╢реБрд░реБрдЖрдд рдЪрд╛рд░реНрдЬ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рддреНрд░рд┐рдЬреНрдпрд╛ рдЖрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░реНрдХрд▓ рдкрд░ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рдЖрд░реЛрдкреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЖрд░ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

рдЕрдВрдХ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб
theta = np.linspace(0, 2*np.pi, n)
mask=q_prop[ q_prop[:,2]>0 ]#    
for cq in range(len(mask)):
    qmask=mask[cq]
    xr = r_q*np.cos(theta)+qmask[0]# -    
    yr = r_q*np.sin(theta)+qmask[1]#


рддреЛ рдпрд╣ рдХрд╣рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд▓рд╛рдЗрдиреЗрдВ рдХреЗрд╡рд▓ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╢реБрд▓реНрдХ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рд╣реИрдВред

рдФрд░ рдЕрдВрдд рдореЗрдВ, рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдгред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рд╕реЗ рдЙрд╕рдореЗрдВ рддрдирд╛рд╡ рдХреА рд╡реЗрдХреНрдЯрд░ рдХреА рд░реЗрдЦрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рдирд┐рд░реНрдорд╛рдг рдмрд┐рдВрджреБ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рддрдм рддрдХ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рддреА рд╣реИрдВред



рд▓рд╛рдЗрди рд╕рдордиреНрд╡рдп рдЧрдгрдирд╛ рд╕рдорд╛рд░реЛрд╣
def Draw(size, q_prop,r_q, n):
  
  linen=np.empty((np.count_nonzero(q_prop[:,2]>0),n, 2000000), dtype=np.float64)
  linen[:] = np.nan
  theta = np.linspace(0, 2*np.pi, n)
  mask=q_prop[ q_prop[:,2]>0 ][ q_prop[q_prop[:,2]>0][:,3]==1 ]
  for cq in range(len(mask)):
    qmask=mask[cq]
    x11 = r_q*np.cos(theta)+qmask[0]
    x22 = r_q*np.sin(theta)+qmask[1]
    for c in range(len(x11)):

      xs=x11[c]
      ys=x22[c]

      lines=np.empty((2,1000000), dtype=np.float64)
      lines[:]=np.nan
      stop=0
      nnn=0
      
      lines[0][nnn]=xs
      lines[1][nnn]=ys
      while  abs(xs)<size+2 and abs(ys)<size+2: 
        nnn+=1

        for cq1 in range(len(q_prop)):
          q=q_prop[cq1]
          if ((ys-q[1])**2+(xs-q[0])**2)**0.5<r_q/2 :
            stop=1
            break
        if stop==1:
          break
        dx, dy = E1(q_prop,xs,ys)

        xs+=dx
        ys+=dy
        lines[0][nnn]=xs
        lines[1][nnn]=ys
       
      linen[cq,c,:]=lines.reshape(-1)

  return linen 


рдЖрд░реЛрдкреЛрдВ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд


рдЙрдирдХреА рдмрд╛рддрдЪреАрдд рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдЫреЛрдЯреЗ рд╕рдордп рдХреЗ рдмрд╛рдж рдЕрдкрдиреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдФрд░ рдЧрддрд┐ рдХреЛ рдмрджрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

x+=ExтЛЕqтЛЕdt22тЛЕm+vxтЛЕdt


y+=EyтЛЕqтЛЕdt22тЛЕm+vyтЛЕdt


vx+=ExтЛЕqтЛЕdtm


vy+=EyтЛЕqтЛЕdtm





рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдФрд░ рдЪрд╛рд░реНрдЬ рдЧрддрд┐ рдХреЗ рдЕрдиреБрдорд╛рдиреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп
def Update_all(q_prop):
  vx=0
  vy=0
  x=0
  y=0
  q_prop_1=np.copy(q_prop)
  for c in range(len(q_prop)):#         
    xs=q_prop[c][0]
    ys=q_prop[c][1]
    q =q_prop[c][2]
    m =q_prop[c][3]
    vx=q_prop[c][4]
    vy=q_prop[c][5]
    Ex, Ey= E(q_prop, xs, ys, c)

    x=(((Ex*q)/m)*dt**2)/2+vx*dt+xs
    y=(((Ey*q)/m)*dt**2)/2+vy*dt+ys
    vx+=((Ex*q)/m)*dt
    vy+=((Ey*q)/m)*dt
    #print(q_prop[c]-[x,y,q,m,vx,vy])
    q_prop_1[c]=[x,y,q,m,vx,vy]
  
  return q_prop_1#    


рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг


рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореИрдВрдиреЗ рдПрдХ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рд▓рд┐рдЦрд╛ рдЬреЛ рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдХреЗ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рдирд┐рдХрд╛рдпреЛрдВ рдХреЗ рдЖрдВрджреЛрд▓рдиреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдХреЛрдб рдореЗрдВ рдмрджрд▓рд╛рд╡ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рддрдирд╛рд╡ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╣реИ рддреНрд╡рд░рдг рдЕрдм рдПрдХ рд╕рдорд╛рди рд╕реВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

g=GтИЧmr2


gтЖТ=(тИСi=0NxiтИЧ|gтЖТi|RiтИСi=0NyiтИЧ|gтЖТi|Ri)


рдЧреНрд░рд╣ рдПрдХреНрд╕ рдЕрдХреНрд╖ рд╕реЗ рдкреЗрд░реАрд╣реЗрд▓рд┐рдпрди рджреВрд░реА рдФрд░ рдкреЗрд░реАрд╣реЗрд▓рд┐рдпрди рдЧрддрд┐ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред рдЧреНрд░рд╣реЛрдВ рдХреЗ рд╕рднреА рдорд╛рди рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд╕реВрд░реНрдп (рджреНрд░рд╡реНрдпрдорд╛рди, рджреВрд░реА, рдЫреЛрд░)ред

рдкрд╣рд▓реЗ 4 рдЧреНрд░рд╣реЛрдВ + рд╕реВрд░реНрдп рдХреЗ рд▓рд┐рдП рдПрдиреАрдореЗрд╢рдиред



рдЖрд▓реЛрдЪрдирд╛ рдФрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реИред рдЕрд▓рд╡рд┐рджрд╛ред

Source: https://habr.com/ru/post/undefined/


All Articles