[英]MATLAB: solving symbolic matrix
我有三個矩陣,其中之一包含未知數。 其中兩個彼此相乘,得出最后一個。
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
但始終遇到語法問題。
感謝您的時間和答復...
這個問題不需要任何符號數學。 您的A1
和A3
矩陣是用數字定義的。 在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
將為您計算B
, C
, D
和F
只需分別參考A2
的第一,第二,第三和第四元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.