Обратная сумма матриц

Я совершенно новичок в Maple, и я хотел бы решить следующую линейную систему:

Y=BX

где X — вход, Y — выход, а B — передаточная функция, которая имеет следующую форму:

B :=(t) ->  matrix(A0)+matrix(A1)*f1(t)+matrix(B1)*f2(t)

A0 := matrix(3, 3, [1, 0, 0, 1, 0, 0, 1, 0, 0]);
A1 := matrix(3, 3, [1, 1/2, (1/2)*sqrt(3), 1/2, 1, (1/2)*sqrt(3), (1/2)*sqrt(3), 1/2, 2]);
B1 := matrix(3, 3, [1, 1/2, -(1/2)*sqrt(3), -1/2, 1, (1/2)*sqrt(3), (-sqrt(3))*(1/2), 1/2, 2]);

f1 := (t) -> cos(omega*t)
f2 := (t) -> sin(omega*t)

omega:=0.95;

Однако теперь я хочу получить входной вектор с учетом вывода, поэтому мне нужно инвертировать B, так как:

X = B^-1 Y

Я был бы признателен за подсказку, чтобы получить символическое выражение, обратное B. Однако, когда я делаю

inverse(B(t)) :  nothing happens
inverse(matrix(B(t))) :  Error, (in matrix) invalid argument 
solve(x = B(t), t): Error, (in SolveTools:-complexity) invalid input: numer expects its 1st argument

Я хотел бы, чтобы это было в следующей форме, если это возможно:

B^-1 := A0' + A1'*f1(t) + B1'*f2(t)

Где A0', A1' и B1' — обратные матрицы.


person JPV    schedule 08.12.2014    source источник
comment
Этот вопрос действительно о математике, а не о программировании. Попробуйте сайт Mathematics.   -  person John Alexiou    schedule 08.12.2014
comment
Но мне все еще нужно научиться вычислять символические матрицы   -  person JPV    schedule 08.12.2014
comment
Это было бы второстепенным по сравнению с знанием того, как вычислять инверсии. Если есть форма, обратная запрашиваемой вами форме, тогда кодирование B^-1 будет простым (используя предоставленное уравнение). После того, как вы найдете матрицы компонентов A0' A1' и A2' с помощью математики, вы можете задать вопрос о кодировании здесь.   -  person John Alexiou    schedule 08.12.2014
comment
Но я все еще не могу получить выражение B в символической форме и, следовательно, не могу вычислить обратное.   -  person JPV    schedule 08.12.2014
comment
То, что вы ищете, это B^-1(t) символически, поэтому вам не нужно инвертировать матрицу на каждом шаге. Это правильно?   -  person John Alexiou    schedule 08.12.2014
comment
Таким образом, A0', A1' и B1' не являются прямыми противоположностями A0, A1 и B1.   -  person JPV    schedule 08.12.2014
comment
Нет. (A+B)^-1 не равно A^-1+B^-1. Может быть выражение, но вам нужно спросить на математическом форуме, чтобы получить лучший ответ.   -  person John Alexiou    schedule 08.12.2014
comment
Посмотрите обновление пожалуйста   -  person JPV    schedule 08.12.2014


Ответы (1)


Рассмотрите возможность использования замены половинного угла касательной для создания (в псевдокоде)

z = TAN(ω·t/2) = TAN(φ/2)
φ = ω·t = 2 ATAN(z)

       | 2*(z+1)/(1+z^2)          (z+1)/(1+z^2)-1/2  √3*(1-z)/(1+z^2)-√3/2  |
B(z) = | 1/2+(1-z)/(1+z^2)        2*(z+1)/(1+z^2)-1   √3*(z+1)/(1+z^2)-√3/2 |
       | 1-√3/2+√3*(1-z)/(1+z^2)  (z+1)/(1+z^2)-1/2  4*(z+1)/(1+z^2)-2      |

который затем вы можете получить IB(z)=inverse(B(z)) для использования в качестве X = IB(tan(omega*t/2))*Y

person John Alexiou    schedule 08.12.2014
comment
Пожалуйста, проверьте коэффициенты самостоятельно, используя maple и приведенную выше символическую замену. - person John Alexiou; 08.12.2014