2017-01-27 113 views
0

我有這樣的4×4系統爲什麼MATLAB爲相同的線性系統返回不同的結果?

enter image description here

其中變量EorEotEo2rEo2t(即,Eodn1n2n3g2g3已知複雜數) 。

我感興趣的是尋找不變量本身,但是這些值:

p_tot = Eor/Eo; 
t_tot = Eot/Eo; 
p_1 = Eo2r/Eo; 
t_1 = Eo2t/Eo; 

我試圖解決這個使用MATLAB,如做手工將是相當繁瑣的。

常量的值是這些:

e0 = 8.854187817*10^(-12); 
u0 = 4*pi*10^(-7); 
n0 = sqrt(u0/e0); 

f = 10^9; 
w = 2*pi*f; 
d = 0.3; 
tg_p = 0.23; 

g2 = w*sqrt(u0*e0*9)*sqrt(1-i*tg_p); 
g3 = w*sqrt(u0*e0); 

n1 = n0; 
n2 = w*u0/g2; 
n3 = n0; 
Eo = 1; 

當我解決線性系統這個腳本

syms Eor Eo2t Eo2r Eot 

eq1 = Eo+Eor == Eo2t + Eo2r; 
eq2 = Eo-Eor == (n1/n2)*(Eo2t-Eo2r); 
eq3 = Eo2t*exp(-i*g2*d)+Eo2r*exp(i*g2*d) == Eot*exp(-i*g3*d); 
eq4 = Eo2t*exp(-i*g2*d)-Eo2r*exp(i*g2*d) == (n2/n3)*Eot*exp(-i*g3*d); 

[SEor, SEo2t, SEo2r, SEot] = solve([eq1,eq2,eq3,eq4] , [Eor, Eo2t, Eo2r, Eot]); 
S = [SEor; SEo2t; SEo2r; SEot]; 

p_tot = double(SEor/Eo) 
t_1 = double(SEo2t/Eo) 
p_1 = double(SEo2r/Eo) 
t_tot = double(SEot/Eo) 

我從一個完全不同的結果我得到的,如果我解決系統Ax = b的,然後執行操作MATLAB A\b

A = [1 -1 -1 0; 
    1 n1/n2 -n1/n2 0; 
    0 exp(-j*g2*d) exp(j*g2*d) -exp(-j*g3*d); 
    0 exp(-j*g2*d) -exp(j*g2*d) -exp(-j*g3*d)*(n3/n2)]; 

b = [-1;1;0;0]; 

S = A\b; 

p_tot = S(1)/Eo 
t_1 = S(2)/Eo 
p_1 = S(3)/Eo 
t_tot = S(4)/Eo 

所以事情是,我獲得兩個不同結果採用兩種不同的方法(這應該是等同的)同樣的問題。

我得到的結果是這些:

隨着Ax = b的方法

p_tot = 

    -0.5109 + 0.0436i 


t_1 = 

    0.4924 + 0.0427i 


p_1 = 

    -0.0032 + 0.0009i 


t_tot = 
    0.0284 + 0.0011i 

直接求解系統

p_tot = 

    -0.5011 + 0.0406i 


t_1 = 

    0.4956 + 0.0415i 


p_1 = 

    0.0033 - 0.0009i 


t_tot = 

    0.0866 - 0.0066i 

我是什麼做錯了,哪一個纔是真正的解決方案?

+0

這是兩個獨立的問題:1)是你的數學正確,2)MATLAB做數學,你覺得是這樣的。儘管我很樂意仔細檢查你的數學,但你應該首先確定你遇到的錯誤是否與MATLAB的一個問題有關,或者是你的手算問題。是否確定你的手算是正確的?如果你是,只要解釋你在MATLAB中做什麼,並清理你的問題。如果你不是,那麼你應該檢查你的數學或在http://math.stackexchange.com/上提出一個問題。 –

+0

你能展示你得到的答案嗎?這可能會在解決其他評論中提出的問題方面發生。另外,我不清楚你的第三種方法是什麼。請指定您在撥打電話時用於A,x和b的內容。 – Brick

+0

@VladislavMartin實際上沒有太多的數學參與。這只是4x4的系統,除了構建A和b矩陣(這非常簡單)之外,我沒有任何東西可以用手去做。其餘的只是在MATLAB中輸入這4個方程。 – Tendero

回答

1

的問題是,在你的A矩陣,第4行中的值,第4列不反映你在你的問題提出的方程組。

相反的(n3/n2)應該(n2/n3)

相關問題