複數指數形式轉換三角 - CSDN

2020-11-23 CSDN技術社區

目錄

寫在前面

複數算法


寫在前面

種種原因,最近一年總是靜不下心來學一些東西。前些天在網上閒逛時,看到量子計算機的一些新聞,查找了一些資料,決定以量子計算為方向,進行學習。期間會將學習過程整理出來,分享給大家。

2019年,谷歌發布了53位量子計算機,號稱只用3分20秒,完成了世界第一超算Summit需要計算 1 萬年的實驗。微軟也發布了Horse Ridge量子計算控制晶片,有望解決目前原型機上百根控制線密布問題,為量子計算機小型化提供了希望。

學習路線是根據Microsoft上的【Microsoft Quantum 入門】一文進行,分為【量子計算概念入門】、【量子計算基礎知識】、【算法】、【協議和庫】幾個部分。期間代碼實現用的是Python,學習前掌握一些Python基礎,有助於理解本文。

 

複數算法

理解複數算法,對於處理量子計算很重要。這裡,【複數算法】是學習量子計算的第一部分內容。

需要用到的數學知識:實數、虛數、複數的三角形式、複數的指數形式、複數的極坐標形式、複數的運算。

 

在一些特定情況下, 實數是不夠用的,例如:

      

在實數中,沒有x的解。在高等數學中,面對這樣的情況,引入了虛數單位,即。虛數單位為i,我們稱i的實數倍為虛數。

虛數有以下特點:

      

 

虛數相加很簡單,但如果是虛數和實數相加呢?這個加法的結果部分是實得,部分是虛的,也就是複數。

複數通常寫成兩部分的和:a + bi,其中a和b都是實數。例如3 + 4i或-5 + 7i都是有效的複數。注意,純實數或純虛數也可以寫成複數形式:2是2 + 0i,-3i是0 - 3i。

這裡我們先定義下複數和極坐標,後續會使用到。這裡,我沒用用tuple表示複數,其中第一個元素是實部,第二個元素是虛部。

from typing import Tupleimport mathComplex = Tuple[float, float]Polar = Tuple[float, float]

 

輸入:

        1.複數x = a + bi,表示成一個元組(a, b)

        2.複數y = c + di,表示成一個元組(c, d)

目標:

        返回這兩個數字的和x+y=z=g+hi,表示為一個元組(g, h)。

 

兩複數相加就是,實部與實部相加,虛部與虛部相加,公式為:

用Python定義複數加法:

# 複數加法def complex_add(x: Complex, y: Complex) -> complex: a = x[0] b = x[1] c = y[0] d = y[1] # 分別求實部和虛部的值 real = a + c imaginary = b + d ans = (real, imaginary) return ans

 

輸入:

        1.複數x = a + bi,表示成一個元組(a, b)

        2.複數y = c + di,表示成一個元組(c, d)

目標:

        返回這兩個數字的和,表示為一個元組(g, h)。

 

兩複數想成就像多項式相乘,公式為:

用Python定義複數乘法:

# 複數乘法# x = a + bi; y = c + di# x * y = a * (c + di) + b*(c + di) = a * c - b * d + (a * d + b * c)idef complex_mult(x: Complex, y: Complex) -> Complex: a = x[0] b = x[1] c = y[0] d = y[1] # 分別求實部和虛部的值 real = a * c - b * d imaginary = a * d + b * c ans = (real, imaginary) return ans

 

在學習其他的複數運算前,這裡先介紹下共軛複數。共軛是一個簡單的操作:一個複數,它的共軛複數是。如果將一個複數乘以它的共軛複數:

       

即一個複數乘以它的共軛複數會得到一個非負的實數。

共軛複數的另一個特性體現在加法和乘法上:

       

       

用Python定義複數轉換為共軛複數:

# 返回共軛複數def conjugate(x: Complex) -> Complex: a = x[0] b = x[1] # 共軛是實部相同,虛部相反,複數乘以共軛複數,虛部為0 ans = (a, -b) return ans

 

輸入:

        1.複數x = a + bi,表示成一個元組(a, b)

        2.複數y = c + di ≠ 0,表示成一個元組(c, d)

目標:

        返回x除以y,x / y = (g + hi),表示為一個元組(g, h)。

 

利用共軛複數,我們可以把分母(0除外)轉換為實數。轉換過程如下:

       

通過這樣的轉換,我們使得分子變成了複數,分母變成了實數,即。這樣就變成了複數除以實數,用實部和虛部分別除以分母(實數)即可。

用Python定義複數的除法:

# 除法x / ydef complex_div(x: Complex, y: Complex) -> Complex: # 分子分母分別乘以y的共軛 num_ator = complex_mult(x, conjugate(y)) num_deno = complex_mult(y, conjugate(y)) # m為分子實部,n為分子虛部,r為分母實部(分母虛部為0) m = num_ator[0] n = num_ator[1] r = num_deno[0] # 分別求實部和虛部的值 real = m / r imaginary = n / r ans = (real, imaginary) return ans

 

實數可以用數軸來表示,數軸上的每個點代表一個實數。我們可以把這種表示擴展成實數和虛數,從而生成一個特殊的數軸:虛數軸,它只與實數軸在0處相交,這樣一個坐標系我們稱為複平面。

複數x = a + bi對應著複平面上的點(a, b),也對應複平面上的一個向量(如上圖所示)。這個向量的長度叫做複數a+bi的模,一般用字母r表示。同時這個向量針對x軸的正方向有一個方向角,我們稱為幅角,一般用希臘字母θ表示。

顯然,代入複數代數形式得:。

我們把叫做a+bi的三角形式。有時間的可以自己定義下複數三角形式下的運算。

三角形式下,複數的乘法「一部分」轉換成加法(模相乘,幅度相加),轉換公式如下:

除法遵從模相除,幅度相減,這裡不展開講解。

 

上述提到的向量的長度叫做複數x = a + bi的模,複數的模用r表示,求模的公式轉換如下:

       

用Python定義求模:

# 求模def modulus(x: Complex) -> Complex: a = x[0] b = x[1] ans = math.sqrt(a * a + b * b) return ans

 

根據歐拉公式可以推導出,具體證明過程我也沒有去了解,這裡也不展開講。有興趣的朋友可以自行查找資料。

需要用到的幾個等式,可以留個印象:

       

 

我們還可以計算自然常數e的複數冪,計算的轉換公式如下:

       

        tip:可以轉換為模為1,幅度為b的三角形式的複數,即

用Python定義自然常數e的複數冪:

# 自然常數e的複數冪,x = a + bi ,輸出 e^x = g + hidef complex_exp(x : Complex) -> Complex: a = x[0] b = x[1] # e^x = e^(a+bi)= e^a * e^bi = e^a * (cos(b) + i*sin(b)) real = (math.e ** a) * math.cos(b) imaginary = (math.e ** a ) * math.sin(b) ans = (real, imaginary) return ans

 

輸入:

        1.一個實數r

        2.複數x = a + bi,表示成一個元組(a, b)

目標:

        返回

 

用Python定義實數的複數冪:

# 實數的複數冪, x = a + bi, r^x = g + hidef complex_exp_real(r: float, x: Complex) -> Complex: a = x[0] b = x[1] # r^x = r^(a +bi) = r^a * r^bi = r^a * (cos(b) + i*sin(b)) real = r ** a * math.cos(b) imaginary = r ** a * math.sin(b) ans = (real, imaginary) return ans

 

已知表達式,如果我們把這個數映射到複平面上,它將落在一個圍繞0+0i的單位圓上,這意味著它的模總是1。利用這個事實,我們可以用極坐標表示複數,在極坐標系統中,複數,我們用兩個數字來表示,r表示長度,θ表示方向角,轉換為元組形式為(r, θ)。

 

輸入:

        1.複數x = a + bi,表示成一個元組(a, b)

目標:

        返回極坐標形式,表示成一個元組(r, θ)

 

用Python定義複數代數形式轉換為極坐標:

# 通過笛卡爾坐標求極坐標def polar_convert(x : Complex) -> Ploar: r = modulus(x) value_cos = x[0] / r degree = math.acos(value_cos) # 如果虛數為負,則θ為2π-θ if x[1] < 0: degree = 2 * math.pi - degree ans = (r, degree) return ans

 

輸入:

        1.複數極坐標形式,表示成一個元組(r, θ)

目標:

        返回極坐標形式x = a + bi,表示成一個元組(a, b)

 

用Python定義複數極坐標z形式轉換為代數形式:

# 通過極坐標求笛卡爾坐標def cartesian_convert(x : Ploar) -> Complex: a = x[0] * math.cos(x[1]) b = x[0] * math.sin(x[1]) ans = (a, b) return ans

 

輸入:

        1.複數極坐標形式,表示成一個元組

        2.複數極坐標形式,表示成一個元組

目標:

        返回,表示成一個元組。注意,,

 

用Python定義極坐標的乘法:

# 極坐標乘法def ploar_mult(x : Ploar, y : Ploar) -> Ploar: r1 = x[0] r2 = y[0] degree1 = x[1] degree2 = y[1] r3 = r1 * r2 degree3 = degree1 + degree2 if degree3 >= 0: degree3 = degree3 % (2 * math.pi) else: degree3 = degree3 % (-2 * math.pi) ans = (r3, degree3) return ans

 

通過上述的學習,已經了解了很多複數相關的知識,下面嘗試定義複數的任意指數計算。

輸入:

        1.複數x = a + bi,表示成一個元組(a, b)

        2.複數y = c + di,表示成一個元組(c, d)

目標:

        返回,表示成一個元組(g, h)

 

推導過程:

1.將x轉換為極坐標形式:

2.則

用Python定義複數的任意指數計算:

def complex_exp_arbitary(x : Complex, y : Complex) ->Complex: # x = a + bi, y = c + di, x^y = g + hi # polar_convert(x) -> (r, θ) -> x = r*e^θi -> x^y = (r*e^θi)^(c+di) = r^(c+di) * e^(-dθ+cθi) # Complex : x -> Ploar : x (r, θ) ploar_x = polar_convert(x) # tmp_v1 = r^(c+di) tmp_v1 = complex_exp_real(ploar_x[0], y) # tmp_v2 = -dθ+cθi tmp_v2 = (-y[1]*ploar_x[1], y[0]*ploar_x[1]) # tmp_v3 = e^(-dθ+cθi) tmp_v3 = complex_exp(tmp_v2) # Complex: x^y = r^(c+di) * e^(-dθ+cθi) = tmp_v1 * tmp_v3 ans_complex = complex_mult(tmp_v1, tmp_v3) ans = polar_convert(ans_complex) return ans

 

相關焦點

  • 極坐標形式的複數 - CSDN
    複數算法理解複數算法,對於處理量子計算很重要。這裡,【複數算法】是學習量子計算的第一部分內容。需要用到的數學知識:實數、虛數、複數的三角形式、複數的指數形式、複數的極坐標形式、複數的運算。顯然,代入複數代數形式得:。我們把叫做a+bi的三角形式。有時間的可以自己定義下複數三角形式下的運算。
  • 複數核心 共軛與模
    【完整·概念】複數的共軛與模一、共軛複數:(兩個複數之間)二、複數的模:(一個複數本身)【典型·例題】複數的共軛與模(感悟)共軛複數與複數的模之間的緊密關聯(規避複數的代數形式假設,規避了複數繁雜的代數運算,化虛為實,簡潔判斷—落實了複數分類的充要條件)(感悟)複數的模的基本特徵(規避複數繁雜的除法運算—分母實數化,
  • 進擊的複數
    記r=|z|,t為z與x軸正方向的夾角,稱為z的幅角,那麼有x=rcost,y=rsint,於是有z=r(cost+isint),稱為複數z的三角表示。歐拉證明了e^(it)=cost+isint,所以也有z=re^(it)(x^y 表示x的y次方),稱為z的指數表示。 複數的乘法用三角表示或者指數表示是簡單的。
  • 不可思議的結論:如果將函數e^x轉換到複數平面上是什麼樣式?
    最完美的公式e^iπ=-1隨處可見,也是最基礎的數學知識,都知道n個相同的因數a相乘的積記做a^n,也就是指數的疊加,關於e也一樣,如下圖左邊是複數上的,右邊是實數範圍內的,那左邊能分解成iπ個e相乘嗎?聽上去很荒唐,但這是否存在某種內在的聯繫?
  • 高中數學知識點總結:複數
    新東方網各科複習資料:http://gaokao.xdf.cn/list_1019_1.html   複數是高中代數的重要內容,在高考試題中約佔8%-10%,一般的出一道基礎題和一道中檔題,經常與三角、解析幾何、方程、不等式等知識綜合.本章主要內容是複數的概念,複數的代數、幾何、三角表示方法以及複數的運算.方程、
  • 三角函數的複數形式和本質原理
    我們結合歐拉公式,可以得到複數平面上的三角函數,x(t)的複數形式是Ae^j(Ωt+Φ),它是有實部和虛部組成如果將三角函數的實部和虛部所表示的圖形,與x(t)的複數形式一一對應,就得到如下樣式,非常直觀為了更加形象的說明這一點:我們假設一個物體繞半徑為1的圓在複平面上勻速轉動
  • 英語中可數名詞的複數形式
    可數名詞的單數形式用名詞原形表示;複數形式一般有規則與不規則兩種變化形式1、名詞變複數的規則變化:1)一般情況下,在名詞的詞尾加「S"。清輔音後讀/S/,濁輔音及元音後讀/Z/。例如:sheep---sheep羊 shark---shark鯊魚3、外來詞的複數變化:1)詞尾由"is"變成"es"的常見詞。
  • 知識點10名詞的複數形式(規則變化)
    rice和milk都是不可數名詞,它們是沒有複數形式的,不可以加s哦!」Molly : 「是這樣啊,那老師,你可以告訴我名詞的複數變化形式嗎?」老師:「當然可以啦! 今天老師就教你如何正確使用名詞的複數形式。」
  • 英語語法:哪些單詞常常以複數形式出現?
    新東方網>英語>英語學習>語法詞彙>語法指導>正文英語語法:哪些單詞常常以複數形式出現? 2019-03-12 10:53 來源:奇速英語 作者:   Goods,belongings,pants,contents… 英語中許多單詞常常以複數的形式出現,一不小心就會搞錯。
  • 漫談傅立葉變換——複數到底是個什麼東西?
    不是因為複數域恰好具有這樣的乘法性質(性質決定認識),而是發明複數域的人就是根據這樣的需求去弄出了這麼一個複數域(認識決定性質),是一種主觀唯心主義的研究方法。為了構造x²=-1,我們必須考慮把乘法看為兩個元素構成的集合:乘積和角度旋轉。因為三角函數可以看為圓周運動的一種投影,所以,在複數域,三角函數和乘法運算(指數)被統一了。
  • 代數基本定理,用複數證明所有多項式函數都有根
    複數複數z是具有以下形式的數:方程1:複數的定義。其中x和y是z的實部和虛部。i是虛數單位,它是二次方程的解:方程2:虛數單位i是這個二次方程的解16世紀著名的義大利數學家卡爾達諾(他同時還是一名醫生、生物學家、物理學家、化學家、哲學家等)在他的三次方程的根研究中引入了複數。圖2:左邊的圖顯示了一個複數的示例。
  • 複數在解析幾何中的妙用
    ↑↑相關文章在這裡↑↑我們知道,解析幾何中的點用一對數(x,y)來表示,而複數
  • 英語語法詳解——不規則名詞的複數形式及不可數名詞
    eg.a boy-stuent——boy-students男生a girl-student——girl-students女生(5)單複數形式一樣的名詞eg.deer鹿 fish魚 sheep綿陽 means方法 works著作
  • 看得懂的複數--溯源複數的物理意義
    對於他的問題,我無法直接回答,但是,關於傅立葉變換本身不複雜,但引入了複數之後,因為大家對複數的物理意義都不懂,最後都是屬於理性的公式推導,但最後的結果的物理意義是什麼,大家卻都不明白,只知道一堆的數學公式,這個是一種本末導致,所以我認為有必要先搞明白複數的物理意義,只有看得懂複數,有它的感性認識,那麼基於它的推理才可能有感性,深刻的認識。
  • 中考英語知識點:可數名詞及其複數形式
    中考英語知識點:可數名詞及其複數形式   (1)基本構成規則:   ①一般情況下加「s」;   ②以「s,x,sh,ch」結尾的加「es」;   ③以「輔音字母(即除了a,e,i,o,u之外的21個字母)+y」結尾的,先變「y」為「i」,再加「es」;
  • 2018中考英語知識點:可數名詞變複數的幾種形式
    下面是《2018中考英語知識點:可數名詞變複數的幾種形式》,僅供參考!   可數名詞變複數的幾種形式:     1) 單數名詞加s: students, apples, bags, trees, books, brothers.
  • 語法學習:名詞複數形式構成方法最新總結(8)
    名詞複數形式構成方法最新總結(8)   江西省新餘市下村中學 劉聰慶   十四、-u結尾的   加 -x   beau-beaux 花花公子,(女子的)情人,向女子獻殷勤的男人   flambeau-flambeaux/flambeaus 火炬,裝飾用的大燭臺   morceau-morceaux
  • 衝刺19年高考數學,典型例題分析202:複數代數形式的混合運算
    考點分析:複數代數形式的乘除運算;複數的基本概念.考點分析:複數代數形式的乘除運算.題幹分析:直接利用複數代數形式的乘除運算化簡複數z,求出z在複平面內對應的點的坐標,則答案可求.典型例題分析3:設i為虛數單位,複數Z=(1-2i)/(2+i),則|Z|=   .
  • 基於複數浮點運算的協方差矩陣的FPGA實現
    1.2 數據共軛轉換  由於測向陣列的輸出矢量X(t)是一個復矢量,對其求協方差矩陣需用陣列輸出列矢量X(t)與其共軛轉置矢量XH(n)對應相乘。如式(1)所示:由於運算數據是直接從接收機I,Q兩路通道的A/D變換器的輸出獲得,為定點數,因此必須要有一個將A/D採樣的定點數據轉換為浮點數的過程。設計中將16位定點數轉換為IEEE 754標準的單精度格式。32位單精度格式如圖2所示,最高位為符號位,其後8位為指數e(用移碼表示,基數f=2,偏移量為127),餘下的23位為尾數m。