我在我的Uni项目中对python有异议

2024-05-23 21:12:49 发布

您现在位置:Python中文网/ 问答频道 /正文

很抱歉问这个问题,这是我与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.

求你了,我不需要名声或加分什么的,我只需要帮助。 对不起,我的英语不好或问题格式不好


Tags: 代码inimportlen错误npdtplt
1条回答
网友
1楼 · 发布于 2024-05-23 21:12:49

x是一个数组,因此u是一个数组,因此您试图将数组分配给其中一个元素。用u = k * (R - x)交换u = k * (R - xd[k])。这样xd[k]就是一个数字,因此u也是一个数字,您将为一个元素分配一个数字,这样就不会出错。你知道吗

相关问题 更多 >