2014-11-17 3 views
0

3 개의 행렬이 있으며 그 중 하나에는 미지수가 들어 있습니다. 그 중 두 개는 서로 곱 해져서 마지막 한 개가됩니다.MATLAB : 상징 행렬을 풀다

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

이 질문에는 상징적 인 수학이 필요하지 않습니다. 귀하의 A1A3 행렬은 숫자로 정의됩니다. A2의 항목을 찾으려면 숫자 A1A3 사이의 역 연산자 (\)를 호출해야합니다. 특히, 경우에 당신이 주어진다 :

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; 

A2B, C, D 당신을 위해 F을 계산합니다. 각각 A2의 첫 번째, 두 번째, 세 번째 및 네 번째 요소를 참조하십시오.

+1

대단히 감사합니다. 그렇게 간단하지만 그렇게 필요합니다. – Katt

+0

@Katt - 당신은 환영합니다 :) 그것은 단지 MATLAB을 가지고 노는 경험과 수년간의 경험을 제공합니다. 문제를 지나치게 복잡하게 만드는 것은 제 1 원칙입니다. 행운을 빕니다! – rayryeng

+0

다시 한번 감사드립니다. :) – Katt

관련 문제