Julia(複數和有理數)

2020-12-17 酷扯兒

本文轉載自【微信公眾號:雲深之無跡,ID:TT1827652464】經微信公眾號授權轉載,如需轉載與原文作者聯繫

複數和有理數

Julia附帶了預定義的類型,表示複數和有理數,並支持所有標準數學運算和基本函數。定義了「 轉換」和「提升」,以便對預定義數字類型(原始的或複合的)的任何組合執行的操作均符合預期。

複數

全局常數

im

綁定到複數i,代表-1的主平方根。

i

為全局常量選擇名稱被認為是有害的,因為它是一個如此流行的索引變量名稱。由於Julia允許將數字文字與標識符作為係數並置,因此該綁定足以為複數提供方便的語法,類似於傳統的數學符號:

julia> 1 + 2im

1 + 2im

您可以使用複數執行所有標準算術運算:

julia> (1 + 2im)*(2 - 3im)

8 + 1im

julia> (1 + 2im)/(1 - 2im)

-0.6 + 0.8im

julia> (1 + 2im) + (1 - 2im)

2 + 0im

julia> (-3 + 2im) - (5 - 1im)

-8 + 3im

julia> (-1 + 2im)^2

-3 - 4im

julia> (-1 + 2im)^2.5

2.7296244647840084 - 6.960664459571898im

julia> (-1 + 2im)^(1 + 1im)

-0.27910381075826657 + 0.08708053414102428im

julia> 3(2 - 5im)

6 - 15im

julia> 3(2 - 5im)^2

-63 - 60im

julia> 3(2 - 5im)^-1.0

0.20689655172413796 + 0.5172413793103449im

提升機制確保不同類型的操作數的組合可以正常工作:

julia> 2(1 - 1im)

2 - 2im

julia> (2 + 3im) - 1

1 + 3im

julia> (1 + 2im) + 0.5

1.5 + 2.0im

julia> (2 + 3im) - 0.5im

2.0 + 2.5im

julia> 0.75(1 + 2im)

0.75 + 1.5im

julia> (2 + 3im) / 2

1.0 + 1.5im

julia> (1 - 3im) / (2 + 2im)

-0.5 - 1.0im

julia> 2im^2

-2 + 0im

julia> 1 + 3/4im

1.0 - 0.75im

注意

3/4im == 3/(4*im) == -(3/4*im)

,因為文字係數比除法綁定更緊密。

提供了用於處理複雜值的標準函數:

julia> z = 1 + 2im

1 + 2im

julia> real(1 + 2im) # real part of z

1

julia> imag(1 + 2im) # imaginary part of z

2

julia> conj(1 + 2im) # complex conjugate of z

1 - 2im

julia> abs(1 + 2im) # absolute value of z

2.23606797749979

julia> abs2(1 + 2im) # squared absolute value

5

julia> angle(1 + 2im) # phase angle in radians

1.1071487177940904

通常,

abs()

複數的絕對值()是它到零的距離。

abs2()

給出絕對值的平方,特別適用於避免求平方根的複數。

angle()

返回弧度的相角(也稱為自變量arg函數)。還為複數定義了其他基本功能的全部數域:

julia> sqrt(1im)

0.7071067811865476 + 0.7071067811865475im

julia> sqrt(1 + 2im)

1.272019649514069 + 0.7861513777574233im

julia> cos(1 + 2im)

2.0327230070196656 - 3.0518977991518im

julia> exp(1 + 2im)

-1.1312043837568135 + 2.4717266720048188im

julia> sinh(1 + 2im)

-0.4890562590412937 + 1.4031192506220405im

請注意,數學函數通常在應用於實數時返回實數值,而在應用於複數時返回複數值。例如,即使

sqrt()

應用於

-1

或,行為也不同:

-1 + 0im

-1 == -1 + 0im

julia> sqrt(-1)

ERROR: DomainError:

sqrt will only return a complex result if called with a complex argument. Try sqrt(complex(x)).

Stacktrace:

[1] sqrt(::Int64) at ./math.jl:434

julia> sqrt(-1 + 0im)

0.0 + 1.0im

從變量構造複數時,文字數字係數符號不起作用。相反,必須明確寫出乘法:

julia> a = 1; b = 2; a + b*im

1 + 2im

但是,建議這樣做。改用

complex()

函數直接從其實部和虛部構造一個複雜值:

julia> a = 1; b = 2; complex(a, b)

1 + 2im

這種結構避免了乘法和加法運算。

Inf

NaN

通過特殊浮點值部分中所述的複數在複數的實部和虛部中傳播:

julia> 1 + Inf*im

1.0 + Inf*im

julia> 1 + NaN*im

1.0 + NaN*im

有理數

Julia具有一個有理數類型來表示整數的精確比例。使用

//

運算符構造有理數:

julia> 2//3

2//3

如果有理數的分子和分母具有公因子,則將它們簡化為最低項,以使分母為非負數:

julia> 6//9

2//3

julia> -4//8

-1//2

julia> 5//-15

-1//3

julia> -4//-12

1//3

這種整數比率的標準化形式是唯一的,因此可以通過檢查分子和分母的相等性來測試有理值的相等性。可以使用

numerator()

denominator()

函數提取有理值的標準分子和分母:

julia> numerator(2//3)

2

julia> denominator(2//3)

3

通常不需要對分子和分母進行直接比較,因為標準算術和比較運算是針對有理值定義的:

julia> 2//3 == 6//9

true

julia> 2//3 == 9//27

false

julia> 3//7 < 1//2

true

julia> 3//4 > 2//3

true

julia> 2//4 + 1//6

2//3

julia> 5//12 - 1//4

1//6

julia> 5//8 * 3//12

5//32

julia> 6//5 / 10//7

21//25

有理數可以很容易地轉換為浮點數:

julia> float(3//4)

0.75

轉換,從理性到浮點方面的任何整數值以下的身份

a

b

與案件的例外

a == 0

b == 0

julia> a = 1; b = 2;

julia> isequal(float(a//b), a/b)

true

構造無限有理值是可以接受的:

julia> 5//0

1//0

julia> -3//0

-1//0

julia> typeof(ans)

Rational{Int64}

NaN

但是,嘗試構造一個合理的值不是:

julia> 0//0

ERROR: ArgumentError: invalid rational: zero(Int64)//zero(Int64)

Stacktrace:

[1] Rational{Int64}(::Int64, ::Int64) at ./rational.jl:13

[2] //(::Int64, ::Int64) at ./rational.jl:40

像往常一樣,升級系統使與其他數字類型的交互變得輕鬆:

julia> 3//5 + 1

8//5

julia> 3//5 - 0.5

0.09999999999999998

julia> 2//7 * (1 + 2im)

2//7 + 4//7*im

julia> 2//7 * (1.5 + 2im)

0.42857142857142855 + 0.5714285714285714im

julia> 3//2 / (1 + 2im)

3//10 - 3//5*im

julia> 1//2 + 2im

1//2 + 2//1*im

julia> 1 + 2//3im

1//1 - 2//3*im

julia> 0.5 == 1//2

true

julia> 0.33 == 1//3

false

julia> 0.33 < 1//3

true

julia> 1//3 - 0.33

相關焦點

  • Julia語言極簡入門教程
    也非常希望有更多的機構可以贊助我們的(甚至是接下來的)活動和伺服器等開支。如果有Julia的招聘崗位也歡迎來社區做廣告。定義一個複數類型 複數是很多數值計算和數據分析算法都會用到的類型,然而一般的處理器上並不是自帶複數類型的,我們往往使用兩倍精度的浮點數來模擬一個複數,例如在 `C` 語言裡,雙精度的複數可以寫作:double _Complex a;或者在 `C++` 中,雙精度的複數可以寫作:std::complex<double
  • 幾何意義,數形結合,巧解複數
    雖然在近幾年的數學高考中,《複數》考查要求有所淡化,但是《複數》與《平面向量》、《解析幾何》等等,高中數學的其他重要分支(高考主體和核心)之間,卻有著非常豐富、至關重要的關聯(特別是複數的幾何意義)。通過適度拓展,適當加寬對《複數》的幾何意義(平面向量,解析幾何)部分的學習,不但沒有加重考生學業負擔,反而拓展了考生的數學思維和數學眼界(這真是高考的本質,數學學科素養),還對高中數學其他主幹部分(解析幾何,平面向量)還是一次難得的系統深入複習,完善考生數形結合數學思想方法,何樂而不為。
  • 什麼是有理數和無理數
    任何有理數,都可以表示為兩個整數之商。設n是任意給定的正整數,把單位長分成n等分,找出代表1/n的那點,從而對任何整數m,可以找出代表m/n的那一點。無限循環小數也是有理數,例如1/3=0.333333333.........,1/7=0.142857142857……都是有理數,而且不循環的小數我們可以在其後填無數個零,零就是循環體,這樣可以說有理數是循環的無盡小數。而那些不表示有理數的無限小數稱為無理數,例如2的開方,根號2=1.4142135623731.........,它是一個無理數,它不能表示成兩整數之比,是一個無限不循環小數。
  • 複數和共軛複數之間的性質以及證明的過程
    z是實數時,複數和共軛複數相等複數一般情況下均用z來表示,一般寫成z=a+bi的形式,a,b均為實數,a是這個複數的實部,bi為這個複數的虛部。當a=0時,bi就是純虛數,當b=0時,z是實數,當a≠0時z時非純虛數;當兩個複數的實部相等,虛部互為相反數時,這兩個複數叫做互為共軛複數;複數是最大範圍的數,它包括所有的實數,所以當複數的純虛部為0 時,我們可以說這兩個互為共軛複數的數相等。
  • 初一數學《有理數》——有理數基本概念
    3.有限小數和無限循環小數都可以化成____分___數,因此,它們都是___有理___數.是有理數嗎?是,不是,不是(2)-5是整數嗎?是負數嗎?是有理數嗎?是,是,是(3)自然數是整數嗎?是正數嗎?是有理數嗎?是,不是,是4.把下列各數填入相應的集合中:+3,-4又1/3,-(+1.9),3.1415(15無限重複),0,-1998,+123.
  • 吳國平:世界上第一個提出「複數」概念的人是誰?
    在人類文明發展歷史上,「數的意識」出現具有裡程碑的意義。原始人類在與大自然進行鬥爭的過程中,漸漸明白「有」和「無」、「大」和「小」、多少等等最基本數的概念。一旦原始人類掌握這些「數」,學會運用這些基本「數」的概念來解決生活當中的問題,就宣告人類開始脫離愚昧。
  • 使用Pyhon+Flux+Julia實現手寫數字識別
    該技術在現實場景中是很有用的,比如可以把該技術用來掃描銀行轉帳單或支票,其中帳號和需要轉帳的金額可以被識別處理並寫在明確定義的方框中。在本教程中,我們將介紹如何使用Julia程式語言和名為Flux的機器學習庫來實現這一技術。為什麼使用Flux和Julia?
  • π的萊布尼茲公式,無窮多個有理數相加還是有理數嗎?
    關注默契小甜瓜,每天分享不一樣的小知識在我們的直覺中,有理數和有理數相加結果還是有理數,事實上,有限個有理數相加結果就是有理數。但是,無窮多個有理數相加結果還是有理數嗎?很多問題在有窮的範圍內是很容易理解的,但是如果涉及到無窮的時候,結果往往跟我們的直覺是相悖的。
  • 英語中名詞有單數和複數之分
    英語中的很多名詞有單數和複數之分。我國學生使用名詞時,在詞形和詞義方面,很容易出現錯誤,以下幾個方面應特別引起注意。1.規則與不規則變化的名詞對於規則變化的名詞,不要誤當作不規則變化的名詞;對於不規則變化的名詞,應牢記其複數形式,不要按規則變化形式在詞尾加-s。
  • 根號2是有理數嗎?
    根號2是有理數嗎?一.學習目標1.通過拼圖活動,讓學生感受無理數產生的實際背景和引入的必要性.2.能判斷給出的數是否為有理數;並能說出理由.3、通過回顧有理數的有關知識,能正確地進行推理和判斷,識別某些數是否為有理數,訓練他們的思維判斷能力.二、探究新知1、兩個邊長為1的正方形剪一剪,拼一拼,設法得到一個大的正方形.
  • 複數的幾何意義
    上期我已經講解了數系的擴充和複數的概念,想要了解的小夥伴,可以去看我上期的作品哦。今天,讓我們一起來學習複數的幾何意義吧。我相信,當你學習完本節課之後,對複數的掌握一點會紮實。那我們來學習複數的幾何意義:已知複數為形如Z=a+bi(a、b∈R,其中i為虛數單位)的數。為了更加直觀地表示複數,我們將複數按照向量在直角坐標系中的表示方法一樣,將它在直角坐標系中表示。值得大家注意的是,此時表示複數的直角坐標系的y軸與之前相比,發生了一些變化。
  • 研究人員在一組複數中發現了弦理論的聯繫
    圖1:積分「數」概念的擴展。黑點是複平面上的常整數。任何一對黑點的加法或乘法最終會得到另一個黑點。該圖中所有紅點和藍點都是一些具有整數係數的二次方程的解。紫點是一些具有整數係數的四次方程的解。所以,我們可以把這些點看作是「數字」的一部分。
  • 2021年中考數學知識點:有理數
    中考網整理了關於2021年中考數學知識點:有理數,希望對同學們有所幫助,僅供參考。   一、正數和負數   正數和負數的概念   負數:比0小的數;正數:比0大的數。   二、有理數   有理數的概念   (1)正整數、0、負整數統稱為整數(0和正整數統稱為自然數)   (2)正分數和負分數統稱為分數   (3)整數和分數統稱有理數   ☆注意:①π是無限不循環小數,不能寫成分數形式,不是有理數。②有限小數和無限循環小數都可化成分數,都是有理數。
  • 英語的不規則複數
    古斯堪地那維亞語的eggs和義大利語的pianos我說點離題的:英語名詞的複數形式之所以會有多元化,一個主要原因在於英語從多種其他語言中借用了大量詞語,人們認為英語詞彙的一半都是由外來語構成,它們在過去的一千多年間不斷豐富著英語。
  • 複數核心 共軛與模
    雖然在近幾年的數學高考中,《複數》考查要求有所淡化,但是《複數》與《三角函數》、《解析幾何》、《均值不等式》等等,高中數學的其他重要分支(高考主體和核心)之間,卻有著非常豐富、至關重要的關聯(特別是複數的核心部分:共軛與模)。
  • 小升初數學銜接系列,第二講,正負數與有理數
    理解正數、負數、有理數的概念;2. 掌握用正負數表示實際問題中具有相反意義的量;3. 掌握有理數的分類方法,初步建立分類討論的思想.二、知識點1. 正數和負數定義:大於0的數叫做正數。有理數正整數、0、負整數統稱整數。正分數、負分數統稱分數。整數和分數統稱為有理數。(1)有理數都可以寫成分數的形式,整數也可以看作是分母為1的數.
  • 初一數學必考知識點:有理數的乘法
    中考網整理了關於初一數學必考知識點:有理數的乘法,希望對同學們有所幫助,僅供參考。   (1)有理數乘法法則:兩數相乘,同號得正,異號得負,並把絕對值相乘。   (2)任何數同零相乘,都得0。
  • 高中數學知識點總結:複數
    方程組,數形結合,分域討論,等價轉化的數學思想與方法在本章中有突出的體現.而複數是代數,三角,解析幾何知識,相互轉化的樞紐,這對拓寬學生思路,提高學生解綜合習題能力是有益的.數、式的運算和解方程,方程組,不等式是學好本章必須具有的基本技能.簡化運算的意識也應進一步加強.
  • 還有沒有比複數更高級的數及好玩遊戲?如何理解,願你不再掉頭髮
    02哈密頓的四元數,本質高階複數哈密頓在數學上的成就,主要在微分方程理論和泛函分析方面。他也是衝破傳統代數關卡的勇士,寫下了《四元數基礎》(1886)名著。下面介紹一下他創造四元數的趣事。大家知道,代數學有各種運算律。
  • 初一數學必考知識點:有理數的混合運算
    中考網整理了關於初一數學必考知識點:有理數的混合運算,希望對同學們有所幫助,僅供參考。   1.有理數混合運算順序:先算乘方,再算乘除,最後算加減;同級運算,應按從左到右的順序進行計算;如果有括號,要先做括號內的運算。   2.進行有理數的混合運算時,注意各個運算律的運用,使運算過程得到簡化。