使用PYTHON绘制直流电机和交流电机机固有械特性曲线

使用PYTHON绘制直流电机和交流电机机固有械特性曲线

一、某直流电机固有机械特性曲线绘制程序

import numpy as np

import matplotlib.pyplot as plt

U_N=220;P_N=22;I_N=115;

n_N=1500;R_a=0.18;R_f=628;

Te=np.linspace(1,1000,1000)

Ia_N=I_N-U_N/R_f

C_EPhi_N=(U_N-R_a*Ia_N)/n_N

C_TPhi_N=9.55*C_EPhi_N

n=U_N/C_EPhi_N-R_a/(C_EPhi_N)*(Te/C_TPhi_N)

T2_N=9550*P_N/n_N

plt.plot(n,Te)

plt.show()

二、某三相异步电机固有机械特性曲线绘制程序

import numpy as np

import matplotlib.pyplot as plt

m1=3;U=380;ns=1000;pi=3.14;

R1=2.08;R2=1.53;X1=3.12;X2=4.25;

Os=2*pi*ns/60

n=np.linspace(0,1000,2000)

T=np.linspace(1,300,600)

T=(m1/Os)*(U**2*R2*ns/(ns-n))/((R1+R2*ns/(ns-n))**2+(X1+X2)**2);

plt.title('n-T')

plt.xlabel(' T (N.m)')

plt.ylabel(' n (r/min)')

plt.plot(T,n)

plt.show()
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
绘制Bezier曲线、B样条曲线和NURBS曲线,我们可以使用Python的matplotlib库和numpy库。 首先,我们需要导入这些库: ```python import matplotlib.pyplot as plt import numpy as np from scipy.interpolate import BSpline from geomdl import BSpline as NURBSpline from geomdl import utilities ``` 接下来,我们将定义一些控制点来绘制曲线。这些点将被用于Bezier曲线、B样条曲线和NURBS曲线绘制。我们将使用以下控制点: ```python points = np.array([[1, 0], [2, 3], [4, 5], [7, 8], [9, 7]]) ``` 接下来,我们将绘制Bezier曲线。要绘制Bezier曲线,我们需要使用numpy库中的polyval函数。该函数使用控制点和参数t来计算Bezier曲线上的点。 ```python t = np.linspace(0, 1, 100) curve = np.zeros((len(t), 2)) for i in range(len(t)): curve[i] = np.polyval(np.flip(points.T, axis=1), t[i]) plt.plot(curve[:,0], curve[:,1], label='Bezier') ``` 我们使用np.flip(points.T, axis=1)将我们的点数组转换为numpy多项式系数数组。然后,我们将该数组传递给polyval函数,该函数返回Bezier曲线上的点。最后,我们使用matplotlib库的plot函数绘制Bezier曲线。 接下来,我们将绘制B样条曲线。要绘制B样条曲线,我们使用SciPy库中的BSpline函数。该函数需要控制点、阶数和节点序列作为输入。我们将使用阶数3,因为这是最常用的。节点序列是一组非降序列,通常是均匀分布的,因此我们将使用numpy库中的linspace函数来生成节点序列。 ```python t = np.linspace(0, 1, 100) k = 3 tck, u = splprep(points.T, k=k) curve = splev(t, tck) plt.plot(curve[0], curve[1], label='B-spline') ``` 我们使用splprep函数来计算B样条曲线的参数。该函数返回一个元组,其中包含控制点、节点序列和阶数。然后,我们使用splev函数计算B样条曲线上的点。最后,我们再次使用matplotlib库的plot函数绘制B样条曲线。 最后,我们将绘制NURBS曲线。要绘制NURBS曲线,我们需要使用GeomDL库。该库提供了一个BSpline类,该类可以用于计算NURBS曲线。 ```python degree = 3 knots = utilities.generate_knot_vector(degree, len(points)) nurbs = NURBSpline.Curve() nurbs.degree = degree nurbs.ctrlpts = points.tolist() nurbs.knotvector = knots t = np.linspace(0, 1, 100) curve = nurbs.evaluate_list(t) plt.plot([pt[0] for pt in curve], [pt[1] for pt in curve], label='NURBS') ``` 我们首先使用generate_knot_vector函数生成节点序列。然后,我们创建一个NURBSpline.Curve对象,并将控制点、节点序列和阶数设置为对象的属性。最后,我们使用evaluate_list函数计算NURBS曲线上的点。最后,我们再次使用matplotlib库的plot函数绘制NURBS曲线。 完整代码如下所示: ```python import matplotlib.pyplot as plt import numpy as np from scipy.interpolate import splprep, splev from geomdl import BSpline as NURBSpline from geomdl import utilities points = np.array([[1, 0], [2, 3], [4, 5], [7, 8], [9, 7]]) # Bezier curve t = np.linspace(0, 1, 100) curve = np.zeros((len(t), 2)) for i in range(len(t)): curve[i] = np.polyval(np.flip(points.T, axis=1), t[i]) plt.plot(curve[:,0], curve[:,1], label='Bezier') # B-spline curve t = np.linspace(0, 1, 100) k = 3 tck, u = splprep(points.T, k=k) curve = splev(t, tck) plt.plot(curve[0], curve[1], label='B-spline') # NURBS curve degree = 3 knots = utilities.generate_knot_vector(degree, len(points)) nurbs = NURBSpline.Curve() nurbs.degree = degree nurbs.ctrlpts = points.tolist() nurbs.knotvector = knots t = np.linspace(0, 1, 100) curve = nurbs.evaluate_list(t) plt.plot([pt[0] for pt in curve], [pt[1] for pt in curve], label='NURBS') plt.legend() plt.show() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值