複數乘法
複數乘法¶
介紹¶
Complex Multiplication; 复数乘法;
複數乘法有兩種做法,第一種做法使用了四個乘法指令,第二種做法使用三個乘法指令。在效能上第二種做法比較好,因此我們會實作第二種做法。
假設兩個複數分別是 a 和 b:
a = a.r + ja.i
b = b.r + jb.i
c 是 a 和 b 的複數乘積:
c = c.r + jc.i
第一種做法(四個乘法):
c = a × b
= ( a.r + ja.i )( b.r + jb.i )
= a.r × b.r + ja.i × b.r + ja.r × b.i - a.i × b.i
= ( a.r × b.r - a.i × b.i ) + j( a.i × b.r + a.r × b.i )
c.r = a.r × b.r - a.i × b.i
c.i = a.i × b.r + a.r × b.i
c = c.r + jc.i
第二種做法(三個乘法):
p = a.r × b.r
q = a.i × b.i
s = ( a.r + a.i )( b.r + b.i )
c.r = p - q
c.i = s - p - q
c = c.r + jc.i
環境¶
作業系統:Microsoft Windows 7 (64 bit)
開發工具:Microsoft Visual C# 2015
實作¶
namespace Complex_Multiplication
{
public struct cm
{
public double r;
public double i;
}
class Program
{
static void Main(string[] args)
{
cm a = new cm();
cm b = new cm();
cm c = new cm();
double p = 0.0;
double q = 0.0;
double s = 0.0;
// Example: (3+5i)(2-4i)=
a.i = 3; // Test
a.r = 5; // Test
b.i = 2; // Test
b.r = -4; // Test
p = a.r * b.r;
q = a.i * b.i;
s = (a.r + a.i) * (a.r + a.i);
c.r = p - q;
c.i = s - p - q;
Console.WriteLine("c.i = " + c.i.ToString() + " , c.r = " + c.r.ToString());
Console.ReadKey();
}
}
}