复数乘法
复数乘法
介绍
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();
}
}
}
参考
致谢
感谢
(Math World) 提供的解决方法.