在两个轴上绘制带有增加的变量的矢量方程

时间:2020-04-19 22:03:41

标签: python python-3.x matplotlib variables

我一直在尝试矢量绘图(通过使用颤动),在该矢量绘图中,网格上的每个位置都根据位置和方程式分配了一个矢量,但是我坚持尝试使用两个轴参数(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 :(得分:0)

问题在于'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)