1

所以,我试图线性化我的简单符号系统,它有一个非线性输出方程和一个线性状态方程。

我试图弄清楚如何改变我的输入的名义值,你。又名,我想设置 u0。我想,我已经想出了如何设置状态向量的标称值,如下所示。

c_e = Variable('c_e')
c_2 = Variable('c_2')
u   = Variable('u')

x = [c_e, c_2]

sys = SymbolicVectorSystem(state = x, input = [u], dynamics = f(x, u), output = g(x))

context = sys.CreateDefaultContext()
context.get_continuous_state_vector().SetAtIndex(0, 10**-6)
linear_sys = Linearize(sys, context)

我目前收到输入端口未连接的错误,但我不确定这意味着什么。我应该怎么做才能修复这个错误,并设置我的标称点?

RuntimeError: InputPort::Eval(): required InputPort[0] (u0) of System ::_ (SymbolicVectorSystem<double>) is not connected
4

1 回答 1

1

错误消息为您指明了正确的方向。要对具有状态和输入的系统进行线性化,您不仅需要指定标称状态 (x0),还需要指定标称输入 (u0)。您需要在上下文中设置两者。

您已经设置了标称状态,但需要一行

context.FixInputPort(0, [0])

指定标称输入。

(特定的错误消息是由于调用系统动力学的线性化方法,它需要评估输入端口......并且失败了)

于 2020-05-01T00:25:30.760 回答