Визуализация магнитного поля с функцией колчана в Python - PullRequest
0 голосов
/ 19 февраля 2011

Я хочу визуализировать магнитное поле провода с помощью функции колчана.

#Calculation of a magnetic field of a wire

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
from pylab import *

I = 100000000000
constant = 1e-7/(4*np.pi)

# wire elements; always lenght one
coord = [(10,10,0), (11,10,0), (12,10,0), (13,10,0), (14,10,0), (15,10,0), (16,10,0), (17,10,0), (18,10,0),
         (19,10,0), (19,11,0), (19,12,0), (19,13,0)]

xwidth = 3
ywidth = 3
z = 1
b = np.zeros((xwidth,ywidth))

# calculate the b-field
def bfield(x,y,z,c):
    for x in range(xwidth):
        for y in range(ywidth):
            # number of wire elements
            for i in range(1,12):
                rx = x-(coord[i][0]+coord[i+1][0])/2.
                ry = y-(coord[i][1]+coord[i+1][1])/2.
                rz = z * 1.0 # = z-0
                r = (rx**2+ry**2+rz**2)**0.5 # distance r between field and middle of the wire
                dl = np.array([(coord[i+1][0]-coord[i][0]), (coord[i+1][1]-coord[i][1]), 0])
                bb = np.cross(dl, np.array([rx,ry,rz]))
                e = constant*I*bb/r**3
                print e
                #print e[0], e[1]
                b[x,y] += e[c]  # EDIT
    return b

X,Y = meshgrid(arange(0,xwidth,1),arange(0,ywidth,1))
U = bfield(X,Y,z,0)
V = bfield(X,Y,z,1)
quiver(X,Y,U,V)
xlim(0,xwidth)
ylim(0,ywidth)
show()

РЕДАКТИРОВАТЬ 2: Как я могу построить линии координат на графике?РЕДАКТИРОВАТЬ 3: Я хочу использовать колчан, но он не работает.

Ответы [ 2 ]

1 голос
/ 19 февраля 2011

Похоже, Колчан поддерживает только 2-мерные графики прямо сейчас, но вы можете сделать это 3D, построив несколько 2D-слоев в 3D-графике.Вы можете следовать моему примеру , чтобы увидеть, как сделать эти слои.

0 голосов
/ 19 февраля 2011
ValueError: too many values to unpack

Это означает, что у вас больше значений RHS, чем переменных на LHS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...