3

假设我的方程组看起来像:

A(1+2i) + B(100i) =10i;
CONJ(A)*(11i) +B(12+ 17i)= 167;

其中AB是复数;

如何求解AB使用 MATLAB?(我需要求解一个由 10 个方程组成的系统。)

4

1 回答 1

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.7929iB = -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
于 2013-08-26T18:06:49.903 回答