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

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

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

Python 日期與時間的處理

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

Image

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

Image

Python 日期與時間的處理

Image

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

Image

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

Image

修復損毀的 SQLite DB 資料庫

Image

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

解決 ValueError: If using all scalar values, you must pass an index

Image

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

Image

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

Image