Skip to main content

複數乘法

複數乘法

複數乘法

介紹

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();
        }
    }
}

參考

[1] http://mathworld.wolfram.com/ComplexMultiplication.html

致謝

感謝 (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