построение векторных уравнений с растущими переменными на обеих осях python - PullRequest
0 голосов
/ 20 апреля 2020

Я пытался построить векторный график (используя колчан), в котором каждому местоположению в сетке назначен вектор, зависящий от местоположения и уравнений, но я застрял при попытке использовать диапазон параметров обеих осей (x1 и x3). ), получая ошибку: TypeError: только массивы длины 1 могут быть преобразованы в Python скаляры

, это код, созданный до сих пор, и любая помощь будет удивительной:

def SVmotion(t,A,beta,f,j):
    x1= np.arange(0,10001,100)
    x3= np.arange(0,10001,100)
    w=2*np.pi*f
    k=w/beta
    k1=k*np.sin(j)
    k3=k*np.cos(j)
    k_beta_x = k1*x1+k3*x3
    theta = k_beta_x-w*t
    Usvx1 = k3*A*complex(-np.sin(theta),np.cos(theta))
    Usvx3 = k1*A*complex(-np.sin(theta),np.cos(theta))
    Usvx1_real=Usvx1.real
    Usvx3_real=Usvx3.real

    return  Usvx1_real,  Usvx3_real

    fig ,ax = plt.subplots()
    ax.quiver(x1,x3,Usvx1_real,Usvx3_real)


SVmotion(0,1,3000,2,0)   

1 Ответ

0 голосов
/ 20 апреля 2020

Проблема в том, что 'theta' - это массив. Пожалуйста, проверьте, помогает ли следующее.

import numpy as np

def SVmotion(t,A,beta,f,j):
    x1= np.arange(0,10001,100)
    x3= np.arange(0,10001,100)
    w=2*np.pi*f
    k=w/beta
    k1=k*np.sin(j)
    k3=k*np.cos(j)
    k_beta_x = k1*x1+k3*x3
    theta = k_beta_x-w*t
    for t in theta:
        Usvx1 = k3*A*complex(-np.sin(t),np.cos(t))
        Usvx3 = k1*A*complex(-np.sin(t),np.cos(t))
        Usvx1_real=Usvx1.real
        Usvx3_real=Usvx3.real   

    return  Usvx1_real,  Usvx3_real

SVmotion(0,1,3000,2,0)
#(0.003627598728468422, 0.0)

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