MATLAB:解决符号矩阵

时间:2014-11-17 22:28:12

标签: matlab matrix equation symbolic-math

我有三个矩阵,其中一个包含未知数。其中两个相互相乘并产生最后一个。

A1 * A2 = A3

所以,我在MATLAB中得到了这段代码:

syms A1 A2 A3 B C D F
k1=1; k2=2, b=3, a=4

A1 = [ -exp(i*k1*b) exp(-k2*b) exp(k2*b) 0; i*k1*exp(i*k1*b) k2*exp(-k2*b) -k2*exp(k2*b) 0; 0 -exp(-k2*a) -exp(k2*a) (exp(-i*k1*a) + exp(i*k1*a)); 0 -k2*exp(-k2*a) k2*exp(k2*a) i*k1*(exp(-i*k1*a) - exp(i*k1*a)) ]
A2 = [ B; C; D; F ]
A3 = [ exp(-i*k1*b) ; i*k1*exp(-i*k1*b) ; 0 ; 0 ]

我想解决B,C,D和F的结果。我知道我必须使用函数solve,但我一直遇到语法问题。

感谢您的时间和回复......

1 个答案:

答案 0 :(得分:1)

这个问题不需要任何象征性的数学。您的A1A3矩阵是以数字方式定义的。要在A2中查找条目,您只需在\A1之间调用逆运算符(A3)即可。具体来说,如果给你:

A1 * A2 = A3   ,

要查找A2,您可以这样做:

A2 = A1^{-1} * A3

您会找到A1的倒数并将其与A3相乘。您可以通过逆运算符在MATLAB中轻松完成此操作:

A2 = A1 \ A3;

因此,只需这样做:

k1=1; k2=2; b=3; a=4;

A1 = [ -exp(i*k1*b) exp(-k2*b) exp(k2*b) 0; i*k1*exp(i*k1*b) k2*exp(-k2*b) -k2*exp(k2*b) 0; 0 -exp(-k2*a) -exp(k2*a) (exp(-i*k1*a) + exp(i*k1*a)); 0 -k2*exp(-k2*a) k2*exp(k2*a) i*k1*(exp(-i*k1*a) - exp(i*k1*a)) ]
A3 = [ exp(-i*k1*b) ; i*k1*exp(-i*k1*b) ; 0 ; 0 ]
A2 = A1 \ A3;

A2将为您计算BCDF。只需分别参考A2的第一,第二,第三和第四个元素。