很抱歉问这个问题,这是我与python的联合项目&我刚学了一个星期的python,我试了很多次,我想不通。有人能帮我吗?拜托!你知道吗
这是公式xdot=ax的示例代码
所以,我应该把汽车巡航控制写成离散的,它的方程如下
巡航控制方程为:xdot=(c/m)u-gamma*x 其中u是u=k(r-x)
离散方程是
最后这是我的代码,但我得到一个错误:
import matplotlib.pyplot as plt
import numpy as np
C = 1
M = 1
GAMMA = 0.1
R = 1
X0 = 0
TFINAL = 3
DT = 0.1
t = np.arange(0, TFINAL, 0.1)
x = X0*np.exp(C*t)
td = np.arange(0, TFINAL, DT)
xd = np.zeros(len(td))
xd[0] = X0
for k in range(len(td)-1):
u = k * (R - x)
xd[k+1] = xd[k] + DT * (C / M * u - GAMMA * xd[k])
plt.plot(td,xd,'b-',label='approximate')
plt.xlabel('time')
plt.ylabel('x values')
plt.title('dynamical system: xdot=(c/m)u-gammax')
plt.legend()
plt.grid(True)
plt.show()
错误是:
ValueError Traceback (most recent call last)
<ipython-input-4-e64edffca1fb> in <module>()
10 for k in range(len(td)-1):
11 u=k*(r-x)
---> 12 xd[k+1]=xd[k]+dt*(((c/m)*u)-(gamma*xd[k]))
13
14 plt.plot(td,xd,'b-',label='approximate')
ValueError: setting an array element with a sequence.
求你了,我不需要名声或加分什么的,我只需要帮助。 对不起,我的英语不好或问题格式不好
x
是一个数组,因此u
是一个数组,因此您试图将数组分配给其中一个元素。用u = k * (R - x)
交换u = k * (R - xd[k])
。这样xd[k]
就是一个数字,因此u
也是一个数字,您将为一个元素分配一个数字,这样就不会出错。你知道吗相关问题 更多 >
编程相关推荐