2014-11-17 3 views
0

У меня есть три матрицы, одна из которых содержит неизвестные. Два из них умножаются друг на друга и приводят к последнему.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

Этот вопрос не имеет нужды ни в символьной математики. Матрицы 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 соответственно.

+1

спасибо! Так просто, но так необходимо. – Katt

+0

@ Katt - Добро пожаловать :) Это просто опыт и годы игры с MATLAB. Не слишком сложная проблема - это мое правило №1. Удачи! – rayryeng

+0

Еще раз спасибо и спокойной ночи! :) – Katt