科學(xué)計(jì)算語(yǔ)言Julia及MWORKS實(shí)踐 課件8 - 基本數(shù)據(jù)類(lèi)型_第1頁(yè)
科學(xué)計(jì)算語(yǔ)言Julia及MWORKS實(shí)踐 課件8 - 基本數(shù)據(jù)類(lèi)型_第2頁(yè)
科學(xué)計(jì)算語(yǔ)言Julia及MWORKS實(shí)踐 課件8 - 基本數(shù)據(jù)類(lèi)型_第3頁(yè)
科學(xué)計(jì)算語(yǔ)言Julia及MWORKS實(shí)踐 課件8 - 基本數(shù)據(jù)類(lèi)型_第4頁(yè)
科學(xué)計(jì)算語(yǔ)言Julia及MWORKS實(shí)踐 課件8 - 基本數(shù)據(jù)類(lèi)型_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

二、Julia語(yǔ)言基礎(chǔ)語(yǔ)法2.1基本數(shù)據(jù)類(lèi)型2.2數(shù)組2.3集合容器2.4數(shù)學(xué)運(yùn)算和初等函數(shù)2.5

流程控制2.1、基本數(shù)據(jù)類(lèi)型Julia語(yǔ)言中定義了多種基本的數(shù)據(jù)類(lèi)型,包括數(shù)值型、字符型和邏輯型等。Julia內(nèi)部的所有數(shù)據(jù)類(lèi)型都是按照數(shù)組的形式進(jìn)行存儲(chǔ)和運(yùn)算的,同時(shí),Julia支持不同數(shù)據(jù)類(lèi)型間的轉(zhuǎn)換,增加了數(shù)據(jù)處理的靈活性。2.1.1變量變量賦值:與其他動(dòng)態(tài)類(lèi)型語(yǔ)言一樣,Julia無(wú)需提前聲明變量類(lèi)型,可以直接創(chuàng)建。julia>a="Hello,World""Hello,World"julia>print(a)Hello,Worldjulia>b

=

11julia>x#x未定義ERROR:UndefVarError:xnotdefined一般形式:x=val注意:輸入變量名則會(huì)顯示該變量的值Julia中不會(huì)自動(dòng)創(chuàng)建變量2.1、基本數(shù)據(jù)類(lèi)型2.1.1變量變量的命名規(guī)則:英文,規(guī)則如下:區(qū)分大小寫(xiě);不能以數(shù)字開(kāi)頭;變量與函數(shù)名建議用下劃線分隔;類(lèi)與模塊首字母建議大寫(xiě),駝峰式;中文:不推薦使用Unicode字符:輸入某個(gè)LaTeX符號(hào)(比如\beta),再敲擊Tab鍵。注意:不能使用Julia中已有的單詞的關(guān)鍵詞作為變量名julia>a="Hello,World""Hello,World"julia>a

=

22julia>啊=

10#不推薦使用10julia>β

=

36#\beta,再敲擊Tab鍵36julia>α?=10#先轉(zhuǎn)義\alpha,在轉(zhuǎn)義\^pjulia>12a=12#不能以數(shù)字開(kāi)頭,12a含義為12*aERROR:syntax:"12"isnotavalidfunctionargumentnamearoundREPL[6]:1julia>x,y,z=11,12,13#平行賦值法(11,12,13)2.1、基本數(shù)據(jù)類(lèi)型2.1.1變量變量的作用域:即變量的可用性范圍,是指標(biāo)識(shí)符可以被其他代碼直接引用的一個(gè)區(qū)域,超出該區(qū)域,這個(gè)標(biāo)識(shí)符在默認(rèn)的情況下是不可見(jiàn)的。Julia語(yǔ)言中作用域:全局作用域、局部作用域。根據(jù)作用域?qū)⒆兞糠譃椋喝肿兞?、局部變量。結(jié)構(gòu)作用域baremodule、module全局struct全局for、while、try全局或局部macro全局let、function、comprehensions、generators全局或局部2.1、基本數(shù)據(jù)類(lèi)型變量的類(lèi)型:Julia有Any類(lèi)型和Union{}類(lèi)型兩個(gè)特殊類(lèi)型以及抽象類(lèi)型(abstracttypes)、原始類(lèi)型(primitivetypes)、復(fù)合類(lèi)型(compositetypes)三種主要類(lèi)型。Any類(lèi)型:唯一的頂層類(lèi)型,是所有類(lèi)型的直接超類(lèi)型或間接超類(lèi)型。Union{}類(lèi)型:是所有相關(guān)類(lèi)型的子類(lèi)型。Union{Types…},Types…代表任意個(gè)類(lèi)型參數(shù),多個(gè)時(shí)用逗號(hào)隔開(kāi),可以把多個(gè)類(lèi)型聯(lián)合成一個(gè)類(lèi)型,并讓后者作為前者的同一代表,因此又稱(chēng)聯(lián)合類(lèi)型。抽象類(lèi)型:不能被實(shí)例化,只能作為類(lèi)型圖中的節(jié)點(diǎn)使用,從而描述由相關(guān)具體類(lèi)型組成的集合,為具體類(lèi)型提供默認(rèn)實(shí)現(xiàn)原始類(lèi)型:是一種具體類(lèi)型,其數(shù)據(jù)是由簡(jiǎn)單的位組成。原始類(lèi)型的經(jīng)典示例是整數(shù)和浮點(diǎn)數(shù)。復(fù)合類(lèi)型:也是一種具體類(lèi)型,在各種語(yǔ)言中被稱(chēng)為record、struct和object。2.1.1變量2.1、基本數(shù)據(jù)類(lèi)型2.1.2整數(shù)與浮點(diǎn)數(shù)整數(shù)類(lèi)型:類(lèi)型是否帶符號(hào)比特?cái)?shù)最小值最大值Int8√8-2^72^7-1UInt8802^8-1Int16√16-2^152^15-1UInt161602^16-1Int32√32-2^312^31-1UInt323202^32-1Int64√64-2^632^63-1UInt646402^64-1Int128√128-2^1272^127-1UInt12812802^128-1BoolN/A8false(0)true(1)julia>a=11julia>typeof(a)#操作系統(tǒng)為64位Int64julia>max=typemax(Int64)9223372036854775807julia>max+1#超限-9223372036854775808julia>min=typemin(Int64)-9223372036854775808julia>min–1#超限9223372036854775807julia>x=typeof(0x123)UInt16julia>Int64(0x123)#轉(zhuǎn)化為Int64291說(shuō)明:根據(jù)操作系統(tǒng)不同,整數(shù)Int可能是Int32或Int64超出一個(gè)類(lèi)型可表示的范圍會(huì)導(dǎo)致環(huán)繞無(wú)符號(hào)整數(shù)會(huì)使用0x為前綴的十六進(jìn)制來(lái)表示可以使用T()進(jìn)行數(shù)據(jù)類(lèi)型轉(zhuǎn)換minmax2.1、基本數(shù)據(jù)類(lèi)型2.1.2整數(shù)與浮點(diǎn)數(shù)浮點(diǎn)類(lèi)型:用于表示小數(shù)類(lèi)型精度比特?cái)?shù)Float16半(half)16Float32單(single)32Float64雙(double)64julia>a=5.25.2julia>typeof(a)#操作系統(tǒng)為64位Float64julia>typeof(1e5)#操作系統(tǒng)為64位Float64julia>typeof(5.2f0)#使用f則為32位Float32julia>Float32(a)5.2f0說(shuō)明:浮點(diǎn)數(shù)的默認(rèn)類(lèi)型取決于電腦系統(tǒng)是32位還是64位浮點(diǎn)數(shù)可以用科學(xué)記數(shù)法表示使用“f”替代“e”或Float32()可以得到Float32的浮點(diǎn)數(shù)半精度一般采用軟件模擬,性能較差,不推薦使用2.1、基本數(shù)據(jù)類(lèi)型2.1.2整數(shù)與浮點(diǎn)數(shù)特殊浮點(diǎn)數(shù):正零、負(fù)零、正無(wú)窮、負(fù)無(wú)窮、NaNFloat16Float32Float64名稱(chēng)描述Inf16Inf32Inf正無(wú)窮大于所有有限浮點(diǎn)數(shù)的值-Inf16-Inf32-Inf負(fù)無(wú)窮大于所有有限浮點(diǎn)數(shù)的值NaN16NaN32NaN非數(shù)不等于任何浮點(diǎn)數(shù),甚至不等于自己julia>typemax(Float64)Infjulia>typemin(Float64)-Infjulia>0/0NaNjulia>Inf/InfNaNjulia>0*InfNaNjulia>NaN+1#傳染性NaNjulia>Inf+1#傳染性Infjulia>NaN==NaN#NaN不等于任何值falsejulia>Inf==Inftruejulia>0.0==-0.0#正零與負(fù)零相等truejulia>0.0===-0.0#正零與負(fù)零二進(jìn)制表示不同

falsejulia>bitstring(0.0)

"0000000000000000000000000000000000000000000000000000000000000000"

julia>bitstring(-0.0)

"1000000000000000000000000000000000000000000000000000000000000000"說(shuō)明:Inf和NaN具有傳染性NaN甚至不等于它自己2.1、基本數(shù)據(jù)類(lèi)型任意精度計(jì)算:BigInt和BigFloat分別提供了任意精度的整數(shù)和浮點(diǎn)數(shù)julia>typemax(Int64)+1#超限-9223372036854775808julia>BigInt(typemax(Int64))+1#擴(kuò)位9223372036854775808julia>typeof(ans)BigIntjulia>big“1.23456789012345678901”#提高精度1.234567890123456789010000000000000000000000000000000000000000000000000000000004julia>2.0^66/32.4595658764946067e19julia>BigFloat(2.0^66)/3#提高精度2.459565876494606882133333333333333333333333333333333333333333333333333333333344e+19julia>typeof(ans)BigFloat可使用以下語(yǔ)句對(duì)數(shù)值進(jìn)行擴(kuò)位:BigInt(x)或BigFloat(x)big""minmaxminmax2.1.2整數(shù)與浮點(diǎn)數(shù)復(fù)數(shù)的定義Julia中復(fù)數(shù)的虛部用“im”

表示,im為全局變量。注意:

不能使用i和j來(lái)表示虛部復(fù)數(shù)的構(gòu)建Julia>1+2im1+2imjulia>1+Inf*im1.0+Inf*imjulia>1+NaN*im1.0+NaN*im方法一(im直接構(gòu)建):方法二(complex函數(shù)構(gòu)建):julia>a=1;b=2;complex(a,b)1+2im注意:

a+bim,b如果為變量名稱(chēng)時(shí)則錯(cuò)誤一般形式:a+b*im2.1、基本數(shù)據(jù)類(lèi)型2.1.3復(fù)數(shù)和有理數(shù)2.1、基本數(shù)據(jù)類(lèi)型2.1.3復(fù)數(shù)和有理數(shù)說(shuō)明:不同數(shù)據(jù)類(lèi)型可直接進(jìn)行計(jì)算復(fù)數(shù)運(yùn)算的結(jié)果必為復(fù)數(shù)系數(shù)的優(yōu)先級(jí)比除法的優(yōu)先級(jí)更高:3/4im==3/(4*im)==-(3/4)im復(fù)數(shù)的運(yùn)算julia>1+2im1+2imjulia>(1+2im)*(2-3im)#復(fù)數(shù)乘法8+1imjulia>(1+2im)/(1-2im)#復(fù)數(shù)除法-0.6+0.8imjulia>(1+2im)+(1-2im)#復(fù)數(shù)加法2+0imjulia>(1+2im)+0.5#復(fù)數(shù)和實(shí)數(shù)可以直接運(yùn)算1.5+2.0imjulia>(-1+2im)^2.5#復(fù)數(shù)指數(shù)運(yùn)算2.729624464784009-6.9606644595719imjulia>2im^2#復(fù)數(shù)求解的結(jié)果還是復(fù)數(shù)-2+0imjulia>1+3/4im#4im的優(yōu)先級(jí)最高1.0-0.75im2.1、基本數(shù)據(jù)類(lèi)型2.1.3復(fù)數(shù)和有理數(shù)復(fù)數(shù)的初等函數(shù)使用julia>real(1+2im)#取實(shí)部1julia>imag(1+2im)#取虛部2julia>conj(1+2im)#求復(fù)共軛1-2imjulia>abs(1+2im)#求絕對(duì)值2.23606797749979julia>abs2(1+2im)#取絕對(duì)值的平方5julia>angle(1+2im)#取相位角1.1071487177940904julia>cos(1+2im)2.0327230070196656-3.0518977991517997imjulia>exp(1+2im)-1.1312043837568135+2.4717266720048188im說(shuō)明:復(fù)數(shù)的絕對(duì)值(abs)是從零點(diǎn)到它的距離abs2給出絕對(duì)值的平方所有其他的初等函數(shù)在復(fù)數(shù)上都可使用關(guān)鍵字描述real實(shí)部imag虛部conj復(fù)共軛abs絕對(duì)值abs2取平方后的絕對(duì)值angle以弧度為單位的相位角sqrt開(kāi)根號(hào)cos求余弦exp指數(shù)運(yùn)算sinh雙曲正弦函數(shù)運(yùn)算julia>sqrt(1im)0.7071067811865476+0.7071067811865475imjulia>sqrt(1+2im)1.272019649514069+0.7861513777574233imjulia>sqrt(-1)#負(fù)數(shù)不能直接開(kāi)方,要改為復(fù)數(shù)形式ERROR:DomainErrorwith-1.0:sqrtwillonlyreturnacomplexresultifcalledwithacomplexargument.Trysqrt(Complex(x))julia>sqrt(-1+0im)0.0+1.0im注意:雖然-1==-1+0im,但是要對(duì)負(fù)數(shù)求平方根,負(fù)數(shù)只能寫(xiě)成復(fù)數(shù)的形式。2.1、基本數(shù)據(jù)類(lèi)型2.1.3復(fù)數(shù)和有理數(shù)有理數(shù)的構(gòu)建分?jǐn)?shù)的標(biāo)準(zhǔn)化分子和分母分別可以使用numerator和denominator函數(shù)得到:julia>numerator(4//6)#查看標(biāo)準(zhǔn)化分子2julia>numerator(2//3)2julia>denominator(4//6)#查看標(biāo)準(zhǔn)化分母3julia>denominator(2//3)3有理數(shù)通過(guò)“//”

構(gòu)建,用于表示整數(shù)精確比值的分?jǐn)?shù)類(lèi)型julia>2//32//3有理數(shù)的標(biāo)準(zhǔn)化如果一個(gè)分?jǐn)?shù)的分子和分母含有公因子,它們會(huì)被約分到最簡(jiǎn)形式且分母非負(fù):julia>6//92//3julia>-4//8-1//2julia>5//-15-1//3julia>-4//-121//3注意:分子分母只能為整型。一般形式:a//b2.1、基本數(shù)據(jù)類(lèi)型2.1.3復(fù)數(shù)和有理數(shù)有理數(shù)的運(yùn)算:“//”優(yōu)先級(jí)高于所有運(yùn)算符(除im以外)julia>2//3==6//9truejulia>3//7<1//2truejulia>2//4+1//62//3julia>5//8*3//125//32julia>2//7*(1+2im)#2//7優(yōu)先級(jí)最高2//7+4//7*imjulia>1//2+2im#1//2優(yōu)先級(jí)最高1//2+2//1*imjulia>1+2//3im#3im優(yōu)先級(jí)最高1//1-2//3*imjulia>float(1//2)#分?jǐn)?shù)轉(zhuǎn)化為小數(shù)0.5julia>a=1;b=2;julia>isequal(float(a//b),a/b)true使用float()將值轉(zhuǎn)換為合適的浮點(diǎn)數(shù)類(lèi)型,且完全相等除a==0且b==0時(shí),任意整數(shù)值a,b從分?jǐn)?shù)到浮點(diǎn)數(shù)轉(zhuǎn)換遵循數(shù)值一致性Julia接受構(gòu)建無(wú)窮分?jǐn)?shù)值,但不接受構(gòu)建NaN分?jǐn)?shù)值julia>5//01//0julia>-3//0-1//0julia>float(ans)Infjulia>0//0ERROR:ArgumentError:invalidrational:zero(Int64)//zero(Int64)2.1、基本數(shù)據(jù)類(lèi)型2.1.4字符和字符串字符與字符串聲明Julia中,Char表示單個(gè)字符,用單引號(hào)包圍String表示字符串,用雙引號(hào)或三引號(hào)包圍Char不等于Stringjulia>'x'#Char類(lèi)型'x':ASCII/UnicodeU+0078(categoryLl:Letter,lowercase)julia>typeof('x')Charjulia>"中"#String類(lèi)型"中"julia>typeof("中")Stringjulia>print("""中國(guó):"歡迎你"。""")中國(guó):"歡迎你"。#字符串中使用引號(hào),最外側(cè)需要使用"""julia>typeof(ans)Stringjulia>'x'=="x"#不同類(lèi)型false字符與字符串運(yùn)算:基于Unicode代碼進(jìn)行運(yùn)算julia>'A'<'a'#Char值比較,Int64('A')=65,Int64('a')=97truejulia>'x'-'a'#Char值有限運(yùn)算,Int64('A')=120,Int64('a')=9723julia>'A'+1#求解結(jié)果還是Char'B':ASCII/UnicodeU+0042(categoryLu:Letter,uppercase)julia>s="\u2200x\u2203y"#\u2200可以根據(jù)Unicode代碼直接轉(zhuǎn)義"?x?y"2.1、基本數(shù)據(jù)類(lèi)型2.1.4字符和字符串獲取長(zhǎng)度函數(shù)描述ncodeunits()字符串中特定位置代碼單元值sizeof()數(shù)據(jù)或數(shù)據(jù)類(lèi)型比特?cái)?shù)length()字符串的字符數(shù)julia>length(example1)#計(jì)算example1中的字符數(shù)20julia>length(“J”)#計(jì)算example1中字符“J”的字符數(shù)1julia>length(“編”)#計(jì)算example1中字符“編”的字符數(shù)1julia>example1[1:16]#顯示example1中第1到第16個(gè)字符"科學(xué)計(jì)算語(yǔ)言"julia>length(example1,1,16)#計(jì)算example1中第1到第16個(gè)字符的字符數(shù)6julia>example1=“科學(xué)計(jì)算語(yǔ)言Julia與MWORKS實(shí)踐“#定義一個(gè)示例example1"科學(xué)計(jì)算語(yǔ)言Julia與MWORKS實(shí)踐"julia>ncodeunits(example1)#計(jì)算example1中的單元值38#漢字占有3個(gè)單元值,字母占有一個(gè)單元值julia>sizeof(example1)#計(jì)算example1中的比特?cái)?shù)38julia>sizeof(“J”)#計(jì)算example1中字符“J”的比特?cái)?shù)1julia>sizeof(“科”)#計(jì)算example1中字符“科”的比特?cái)?shù)3julia>ncodeunits(“科”)#計(jì)算example1中字符“科”的占據(jù)的單元值3說(shuō)明:ncodeunits、sizeof,這兩個(gè)函數(shù)應(yīng)用于采用UTF-8編碼的字符串相當(dāng)于獲取其中字節(jié)的數(shù)量。2.1、基本數(shù)據(jù)類(lèi)型2.1.4字符和字符串索引函數(shù)描述firstindex()第一個(gè)元素的索引值lastindex()最后一個(gè)元素的索引值說(shuō)明:字符串的索引是從1開(kāi)始的可以使用end及begin進(jìn)行運(yùn)算begin表示為1,end表示為字符串長(zhǎng)度end÷2結(jié)果不為整數(shù)時(shí),采用去尾法取證下標(biāo)小于開(kāi)頭begin(1)或者大于結(jié)尾end都會(huì)導(dǎo)致錯(cuò)誤字符串的索引可使用范圍來(lái)索引str[k]輸出結(jié)果為字符,str[k:k]輸出結(jié)果為字符串julia>str="Hello,world.\n";

str=[begin]#索引初始字符'H':ASCII/UnicodeU+0048(categoryLu:Letter,uppercase)julia>str[1]#第1個(gè)Char,結(jié)果為Char'H':ASCII/UnicodeU+0048(categoryLu:Letter,uppercase)julia>str[end-1]#倒數(shù)第2個(gè)Char'.':ASCII/UnicodeU+002E(categoryPo:Punctuation,other)julia>str[end÷2]#第(length/2)個(gè)Char',':ASCII/UnicodeU+002C(categoryPo:Punctuation,other)julia>str[begin-1]#第0個(gè)Char,從1開(kāi)始索引,不存在第0個(gè)ERROR:BoundsError:attempttoaccess13-codeunitStringatindex[0]julia>str[end+1]#第(end+1)個(gè)Char,超限ERROR:BoundsError:attempttoaccess13-codeunitStringatindex[14]julia>str[4:9]#第4到9個(gè)Char,結(jié)果為String"lo,wor"julia>str[6]#第6個(gè)Char,結(jié)果為Char',':ASCII/UnicodeU+002C(categoryPo:Punctuation,other)julia>str[6:6]#第6個(gè)String,結(jié)果為String","關(guān)鍵字描述begin第一個(gè)元素end最后一個(gè)元素2.1、基本數(shù)據(jù)類(lèi)型2.1.4字符和字符串分割與拼接julia>split("ABCD")#以空格分隔"AB""CD"julia>join("ab","cd")#字符串組合"abcd"julia>join('a','c')#join不適用字符拼接"a"julia>string("Hello",",","world")#多個(gè)字符串組合"Hello,world"julia>string(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論