科学计算语言Julia及MWORKS实践 课件8 - 基本数据类型_第1页
科学计算语言Julia及MWORKS实践 课件8 - 基本数据类型_第2页
科学计算语言Julia及MWORKS实践 课件8 - 基本数据类型_第3页
科学计算语言Julia及MWORKS实践 课件8 - 基本数据类型_第4页
科学计算语言Julia及MWORKS实践 课件8 - 基本数据类型_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

二、Julia语言基础语法2.1基本数据类型2.2数组2.3集合容器2.4数学运算和初等函数2.5

流程控制2.1、基本数据类型Julia语言中定义了多种基本的数据类型,包括数值型、字符型和逻辑型等。Julia内部的所有数据类型都是按照数组的形式进行存储和运算的,同时,Julia支持不同数据类型间的转换,增加了数据处理的灵活性。2.1.1变量变量赋值:与其他动态类型语言一样,Julia无需提前声明变量类型,可以直接创建。julia>a="Hello,World""Hello,World"julia>print(a)Hello,Worldjulia>b

=

11julia>x#x未定义ERROR:UndefVarError:xnotdefined一般形式:x=val注意:输入变量名则会显示该变量的值Julia中不会自动创建变量2.1、基本数据类型2.1.1变量变量的命名规则:英文,规则如下:区分大小写;不能以数字开头;变量与函数名建议用下划线分隔;类与模块首字母建议大写,驼峰式;中文:不推荐使用Unicode字符:输入某个LaTeX符号(比如\beta),再敲击Tab键。注意:不能使用Julia中已有的单词的关键词作为变量名julia>a="Hello,World""Hello,World"julia>a

=

22julia>啊=

10#不推荐使用10julia>β

=

36#\beta,再敲击Tab键36julia>αᵖ=10#先转义\alpha,在转义\^pjulia>12a=12#不能以数字开头,12a含义为12*aERROR:syntax:"12"isnotavalidfunctionargumentnamearoundREPL[6]:1julia>x,y,z=11,12,13#平行赋值法(11,12,13)2.1、基本数据类型2.1.1变量变量的作用域:即变量的可用性范围,是指标识符可以被其他代码直接引用的一个区域,超出该区域,这个标识符在默认的情况下是不可见的。Julia语言中作用域:全局作用域、局部作用域。根据作用域将变量分为:全局变量、局部变量。结构作用域baremodule、module全局struct全局for、while、try全局或局部macro全局let、function、comprehensions、generators全局或局部2.1、基本数据类型变量的类型:Julia有Any类型和Union{}类型两个特殊类型以及抽象类型(abstracttypes)、原始类型(primitivetypes)、复合类型(compositetypes)三种主要类型。Any类型:唯一的顶层类型,是所有类型的直接超类型或间接超类型。Union{}类型:是所有相关类型的子类型。Union{Types…},Types…代表任意个类型参数,多个时用逗号隔开,可以把多个类型联合成一个类型,并让后者作为前者的同一代表,因此又称联合类型。抽象类型:不能被实例化,只能作为类型图中的节点使用,从而描述由相关具体类型组成的集合,为具体类型提供默认实现原始类型:是一种具体类型,其数据是由简单的位组成。原始类型的经典示例是整数和浮点数。复合类型:也是一种具体类型,在各种语言中被称为record、struct和object。2.1.1变量2.1、基本数据类型2.1.2整数与浮点数整数类型:类型是否带符号比特数最小值最大值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)#操作系统为64位Int64julia>max=typemax(Int64)9223372036854775807julia>max+1#超限-9223372036854775808julia>min=typemin(Int64)-9223372036854775808julia>min–1#超限9223372036854775807julia>x=typeof(0x123)UInt16julia>Int64(0x123)#转化为Int64291说明:根据操作系统不同,整数Int可能是Int32或Int64超出一个类型可表示的范围会导致环绕无符号整数会使用0x为前缀的十六进制来表示可以使用T()进行数据类型转换minmax2.1、基本数据类型2.1.2整数与浮点数浮点类型:用于表示小数类型精度比特数Float16半(half)16Float32单(single)32Float64双(double)64julia>a=5.25.2julia>typeof(a)#操作系统为64位Float64julia>typeof(1e5)#操作系统为64位Float64julia>typeof(5.2f0)#使用f则为32位Float32julia>Float32(a)5.2f0说明:浮点数的默认类型取决于电脑系统是32位还是64位浮点数可以用科学记数法表示使用“f”替代“e”或Float32()可以得到Float32的浮点数半精度一般采用软件模拟,性能较差,不推荐使用2.1、基本数据类型2.1.2整数与浮点数特殊浮点数:正零、负零、正无穷、负无穷、NaNFloat16Float32Float64名称描述Inf16Inf32Inf正无穷大于所有有限浮点数的值-Inf16-Inf32-Inf负无穷大于所有有限浮点数的值NaN16NaN32NaN非数不等于任何浮点数,甚至不等于自己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#正零与负零相等truejulia>0.0===-0.0#正零与负零二进制表示不同

falsejulia>bitstring(0.0)

"0000000000000000000000000000000000000000000000000000000000000000"

julia>bitstring(-0.0)

"1000000000000000000000000000000000000000000000000000000000000000"说明:Inf和NaN具有传染性NaN甚至不等于它自己2.1、基本数据类型任意精度计算:BigInt和BigFloat分别提供了任意精度的整数和浮点数julia>typemax(Int64)+1#超限-9223372036854775808julia>BigInt(typemax(Int64))+1#扩位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可使用以下语句对数值进行扩位:BigInt(x)或BigFloat(x)big""minmaxminmax2.1.2整数与浮点数复数的定义Julia中复数的虚部用“im”

表示,im为全局变量。注意:

不能使用i和j来表示虚部复数的构建Julia>1+2im1+2imjulia>1+Inf*im1.0+Inf*imjulia>1+NaN*im1.0+NaN*im方法一(im直接构建):方法二(complex函数构建):julia>a=1;b=2;complex(a,b)1+2im注意:

a+bim,b如果为变量名称时则错误一般形式:a+b*im2.1、基本数据类型2.1.3复数和有理数2.1、基本数据类型2.1.3复数和有理数说明:不同数据类型可直接进行计算复数运算的结果必为复数系数的优先级比除法的优先级更高:3/4im==3/(4*im)==-(3/4)im复数的运算julia>1+2im1+2imjulia>(1+2im)*(2-3im)#复数乘法8+1imjulia>(1+2im)/(1-2im)#复数除法-0.6+0.8imjulia>(1+2im)+(1-2im)#复数加法2+0imjulia>(1+2im)+0.5#复数和实数可以直接运算1.5+2.0imjulia>(-1+2im)^2.5#复数指数运算2.729624464784009-6.9606644595719imjulia>2im^2#复数求解的结果还是复数-2+0imjulia>1+3/4im#4im的优先级最高1.0-0.75im2.1、基本数据类型2.1.3复数和有理数复数的初等函数使用julia>real(1+2im)#取实部1julia>imag(1+2im)#取虚部2julia>conj(1+2im)#求复共轭1-2imjulia>abs(1+2im)#求绝对值2.23606797749979julia>abs2(1+2im)#取绝对值的平方5julia>angle(1+2im)#取相位角1.1071487177940904julia>cos(1+2im)2.0327230070196656-3.0518977991517997imjulia>exp(1+2im)-1.1312043837568135+2.4717266720048188im说明:复数的绝对值(abs)是从零点到它的距离abs2给出绝对值的平方所有其他的初等函数在复数上都可使用关键字描述real实部imag虚部conj复共轭abs绝对值abs2取平方后的绝对值angle以弧度为单位的相位角sqrt开根号cos求余弦exp指数运算sinh双曲正弦函数运算julia>sqrt(1im)0.7071067811865476+0.7071067811865475imjulia>sqrt(1+2im)1.272019649514069+0.7861513777574233imjulia>sqrt(-1)#负数不能直接开方,要改为复数形式ERROR:DomainErrorwith-1.0:sqrtwillonlyreturnacomplexresultifcalledwithacomplexargument.Trysqrt(Complex(x))julia>sqrt(-1+0im)0.0+1.0im注意:虽然-1==-1+0im,但是要对负数求平方根,负数只能写成复数的形式。2.1、基本数据类型2.1.3复数和有理数有理数的构建分数的标准化分子和分母分别可以使用numerator和denominator函数得到:julia>numerator(4//6)#查看标准化分子2julia>numerator(2//3)2julia>denominator(4//6)#查看标准化分母3julia>denominator(2//3)3有理数通过“//”

构建,用于表示整数精确比值的分数类型julia>2//32//3有理数的标准化如果一个分数的分子和分母含有公因子,它们会被约分到最简形式且分母非负:julia>6//92//3julia>-4//8-1//2julia>5//-15-1//3julia>-4//-121//3注意:分子分母只能为整型。一般形式:a//b2.1、基本数据类型2.1.3复数和有理数有理数的运算:“//”优先级高于所有运算符(除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优先级最高2//7+4//7*imjulia>1//2+2im#1//2优先级最高1//2+2//1*imjulia>1+2//3im#3im优先级最高1//1-2//3*imjulia>float(1//2)#分数转化为小数0.5julia>a=1;b=2;julia>isequal(float(a//b),a/b)true使用float()将值转换为合适的浮点数类型,且完全相等除a==0且b==0时,任意整数值a,b从分数到浮点数转换遵循数值一致性Julia接受构建无穷分数值,但不接受构建NaN分数值julia>5//01//0julia>-3//0-1//0julia>float(ans)Infjulia>0//0ERROR:ArgumentError:invalidrational:zero(Int64)//zero(Int64)2.1、基本数据类型2.1.4字符和字符串字符与字符串声明Julia中,Char表示单个字符,用单引号包围String表示字符串,用双引号或三引号包围Char不等于Stringjulia>'x'#Char类型'x':ASCII/UnicodeU+0078(categoryLl:Letter,lowercase)julia>typeof('x')Charjulia>"中"#String类型"中"julia>typeof("中")Stringjulia>print("""中国:"欢迎你"。""")中国:"欢迎你"。#字符串中使用引号,最外侧需要使用"""julia>typeof(ans)Stringjulia>'x'=="x"#不同类型false字符与字符串运算:基于Unicode代码进行运算julia>'A'<'a'#Char值比较,Int64('A')=65,Int64('a')=97truejulia>'x'-'a'#Char值有限运算,Int64('A')=120,Int64('a')=9723julia>'A'+1#求解结果还是Char'B':ASCII/UnicodeU+0042(categoryLu:Letter,uppercase)julia>s="\u2200x\u2203y"#\u2200可以根据Unicode代码直接转义"∀x∃y"2.1、基本数据类型2.1.4字符和字符串获取长度函数描述ncodeunits()字符串中特定位置代码单元值sizeof()数据或数据类型比特数length()字符串的字符数julia>length(example1)#计算example1中的字符数20julia>length(“J”)#计算example1中字符“J”的字符数1julia>length(“编”)#计算example1中字符“编”的字符数1julia>example1[1:16]#显示example1中第1到第16个字符"科学计算语言"julia>length(example1,1,16)#计算example1中第1到第16个字符的字符数6julia>example1=“科学计算语言Julia与MWORKS实践“#定义一个示例example1"科学计算语言Julia与MWORKS实践"julia>ncodeunits(example1)#计算example1中的单元值38#汉字占有3个单元值,字母占有一个单元值julia>sizeof(example1)#计算example1中的比特数38julia>sizeof(“J”)#计算example1中字符“J”的比特数1julia>sizeof(“科”)#计算example1中字符“科”的比特数3julia>ncodeunits(“科”)#计算example1中字符“科”的占据的单元值3说明:ncodeunits、sizeof,这两个函数应用于采用UTF-8编码的字符串相当于获取其中字节的数量。2.1、基本数据类型2.1.4字符和字符串索引函数描述firstindex()第一个元素的索引值lastindex()最后一个元素的索引值说明:字符串的索引是从1开始的可以使用end及begin进行运算begin表示为1,end表示为字符串长度end÷2结果不为整数时,采用去尾法取证下标小于开头begin(1)或者大于结尾end都会导致错误字符串的索引可使用范围来索引str[k]输出结果为字符,str[k:k]输出结果为字符串julia>str="Hello,world.\n";

str=[begin]#索引初始字符'H':ASCII/UnicodeU+0048(categoryLu:Letter,uppercase)julia>str[1]#第1个Char,结果为Char'H':ASCII/UnicodeU+0048(categoryLu:Letter,uppercase)julia>str[end-1]#倒数第2个Char'.':ASCII/UnicodeU+002E(categoryPo:Punctuation,other)julia>str[end÷2]#第(length/2)个Char',':ASCII/UnicodeU+002C(categoryPo:Punctuation,other)julia>str[begin-1]#第0个Char,从1开始索引,不存在第0个ERROR:BoundsError:attempttoaccess13-codeunitStringatindex[0]julia>str[end+1]#第(end+1)个Char,超限ERROR:BoundsError:attempttoaccess13-codeunitStringatindex[14]julia>str[4:9]#第4到9个Char,结果为String"lo,wor"julia>str[6]#第6个Char,结果为Char',':ASCII/UnicodeU+002C(categoryPo:Punctuation,other)julia>str[6:6]#第6个String,结果为String","关键字描述begin第一个元素end最后一个元素2.1、基本数据类型2.1.4字符和字符串分割与拼接julia>split("ABCD")#以空格分隔"AB""CD"julia>join("ab","cd")#字符串组合"abcd"julia>join('a','c')#join不适用字符拼接"a"julia>string("Hello",",","world")#多个字符串组合"Hello,world"julia>string(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论