Построение случайно выбранных векторов с помощью колчана (python, matplotlib)

#python #matplotlib

#питон #matplotlib

Вопрос:

Я начинаю с заданного векторного поля, определенного в двух измерениях. Я хочу случайным образом выбрать M точек в квадрате 1 на 1 и построить векторы, соответствующие желаемому векторному полю, в этих случайно выбранных точках, используя колчан из matplotlib.pyplot

 import numpy as np from math import * import sys import matplotlib.pyplot as plt import numpy.random as rn  L=1  def dipole(x,y): #This is the vector field  Bx = 0   By = 0  position = [0,0]  moment = [0,1]  R = (x-position[0])**2 (y-position[1])**2  R = np.sqrt(R)  A = 3*(moment[0]*(x-position[0]) moment[1]*(y-position[1]))/R**5  Bx = A*(x-position[0])-moment[0]/R**3  By = A*(y-position[1])-moment[1]/R**3  return np.array([Bx,By])  #We now choose M random vectors in the square  xm = [] #array of random vector positions vectors = [] #vectors at the random positions M = int(1e1) #number of vectors  for i in range(M):  random_point = [rn.uniform(-L,L),rn.uniform(-L,L)]  xm.append(random_point)  vectors.append([dipole(random_point[0],random_point[1]). [0],dipole(random_point[0],random_point[1])[1]])  xm = np.array(xm) vectors = np.array(vectors)   plt.quiver(xm,vectors[:,0],vectors[:,1])  

ВОЗВРАТ

 ValueError: Argument V has a size 10 which does not match 20, the number of arrow positions  

Пишу

 plt.quiver([xm[:,0],xm[:,1]],np.array(vectors[:,0]),np.array(vectors[:,1]))  

вместо этого не помогает. Есть какие-нибудь предложения? Спасибо

Ответ №1:

 plt.quiver(xm[:,0], xm[:,1],vectors[:,0],vectors[:,1])  

Комментарии:

1. Ого. Спасибо 🙂