我是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'
是反矩阵。
答案 0 :(得分:0)
考虑使用tangent half angle substitution创建(伪代码)
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