Skip to main content

复数乘法

复数乘法


介绍
Complex Multiplication; 複數乘法;
复数乘法有两种做法,第一种做法使用了四个乘法指令,第二种做法使用三个乘法指令。在效能上第二种做法比较好,因此我们会实作第二种做法。

假设两个复数分别是ab
a=a.r+ja.i
b=b.r+jb.i
cab的复数乘积:
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) 提供的解决方法.


Popular posts from this blog

Python 日期與時間的處理

Visual Basic 6.0 (VB6) 程式語言案例學習 (10. 條碼列印程式)

寫作:波蘭文學習之旅:1-1. 波蘭文字母與發音(注音版)

Python 日期與時間的處理

Image

Visual Basic 6.0 (VB6) 程式語言案例學習 (10. 條碼列印程式)

Image

寫作:波蘭文學習之旅:1-1. 波蘭文字母與發音(注音版)

Image

數位影像處理:最佳化處理策略之快速消除扭曲演算法

Image

Visual Basic 6.0 (VB6) 程式語言案例學習 (04. 人事考勤管理系統)

Image

用10種程式語言做影像二值化(Image binarization)

Visual Basic 6.0 (VB6) 程式語言案例學習 (07. 收據列印程式)

Image

Visual Basic .Net (VB.Net) 程式語言案例學習 (03. 場地預約系統)

Image

Visual Basic 6.0 (VB6) 程式語言案例學習 (11. 生產線拍照程式)

Image

Visual Basic .Net (VB.Net) 程式語言案例學習 (06. 題庫測驗系統)

Image