#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. Ого. Спасибо 🙂