我有这个4x4系统
变量为Eor
,Eot
,Eo2r
和Eo2t
(即Eo
,d
,n1
,n2
,n3
,g2
和g3
已知复杂数字。)
我有兴趣找不到变量本身,而是找到其他值:
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)
问题在于,在A
矩阵中,第4行,第4列中的值并不反映您在问题中提供的方程组。
而不是(n3/n2)
,它应该是(n2/n3)
。