假设我的方程组如下:
A(1+2i) + B(100i) =10i;
CONJ(A)*(11i) +B(12+ 17i)= 167;
其中A
和B
是复数;
如何使用MATLAB解决A
和B
? (我需要解决一个由10个方程组成的系统。)
答案 0 :(得分:2)
这是一个数学问题。基本上,一旦你分离了真实/成像组件,你就有四个未知数的方程式
A*(1+2i) + B*(100i) =10i;
CONJ(A)*(11i) +B*(12+ 17i)= 167;
相当于
real(A) - 2*imag(A) - 100*imag(B) = 0
2*real(A) + imag(A) + 100*real(B) = 10
11*imag(A) + 12*real(B) - 17*imag(B) = 167
11*real(A) + 17*real(B) + 12*imag(B) = 0
然后在线性方程中定义系数 x = [real(A)imag(A)real(B)imag(B)] 并将其求解为
A= [1 -2 0 -100
2 1 100 0
0 11 12 -17
11 0 17 12];
b = [0 10 167 0]';
A\b
ans =
0.4049
14.7920
-0.0560
-0.2918
所以A=0.4049+14.7929i
,B = -0.0560 -0.2908i
有一些平均舍入错误。
当然,如果您有10个复杂的方程式(20个未知数中的20个方程式),这不是很有帮助。但是,您可以将上面的系统重写为
real(A) - 2*imag(A) - 100*imag(B) = 0
+ 12*real(B) + 11*imag(A) - 17*imag(B) = 167
2*real(A) + 100*real(B) + imag(A) = 10
11*real(A) + 17*real(B) + 12*imag(B) = 0
并定义
D= [(1+2i) (100i)
(11i) (12+17i) ];
c = [10i 167]';
(来自原始系统 Dx = c )我认为这是 E * x_ = f
E = [ real(D) -imag(D)
imag(D) real(D) ];
f = [real(c) ; imag(c)];
除了一些术语由于共轭操作而改变了符号。可以通过将数组E
乘以适当的ones
矩阵并将符号反转为复共轭运算中涉及的项来单独处理。这可以如下完成。在应用共轭运算的原始方程组中的位置定义包含conj
的矩阵1
:
conj=[ 0 0
1 0];
然后符号矩阵
sgn = 2* ([ imag(conj) -real(conj)
real(conj) imag(conj)]+1 >0)-1;
,解决方案是
(E.*sgn)\f
ans =
0.4049
-0.0560
14.7920
-0.2918