Я разрабатываю программное обеспечение для моделирования в Qt (C ++), которое должно принимать входные данные (u) для динамической системы SISO, определяемой матрицами A, B, C, D и получать выходные данные (y) на основе начального значения состояние (x0):
dx = Ax + Bu
y = Cx + Du
Такого рода вещи можно сделать с помощью функции Matlab LSIM ...
Я знаю, что могу определить дифференциальные уравнения и решить их численно, однако определить их и решить их в правильном порядке немного сложно, поэтому мне интересно, если кто-нибудь знает, существует ли существующая библиотека C ++ или пример C ++, который может сделать это ...
Редактировать отсюда ...
Я разрабатываю свое приложение Qt как отдельное приложение без Matlab ... Поэтому я подумал, что у меня есть способ, подобный этому, если у меня есть система с двумя состояниями для одного состояния системы:
double y(double A[2][2], double B[2], double C[2], double D, double XAct[2], double XNext[2], double u)
Но, несмотря ни на что, я обнаружил, что могу сделать что-то вроде этого:
X[k+1] = A*X[k] + B*u[k]
y[k] = C*X[k] + D*u[k]
Однако я беспокоюсь о временных метках, так что ... я не знаю, правильно ли это для систем с массивом в качестве входных данных ... я полагаю, что да, но ...