日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

julia常用矩阵函数_Julia系列教程3 数学运算 矩阵运算

發布時間:2023/12/2 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 julia常用矩阵函数_Julia系列教程3 数学运算 矩阵运算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數學運算https://www.zhihu.com/video/1113554595376295936

數學運算

比Matlab更直觀的數學表達方式

x = 10

2x

>>20

但這就導致了可能會出現語法的沖突十六進制整數文本表達式 0xff 可以被解析為數值文本 0 乘以變量 xff

浮點數文本表達式 1e10 可以被解析為數值文本 1 乘以變量 e10

因此,Julia中

以 0x 開頭的表達式,都被解析為十六進制文本

以數字文本開頭,后面跟著 e 或 E ,都被解析為浮點數文本

運算方法

常用的 + - x /就不多說了,跟其他語言基本完全一樣。

這里說一下向量運算,跟MATLAB的操作完全相同,比如向量的點乘,就是說對向量的元素一一操作

[1,2,3].*3

>>3-element Array{Int64,1}:

3

6

9

比較運算,支持鏈式比較

1 <= 2 <= 3 == 3 <=5 >4 >=2

>>true

常用的數學函數

# 進位函數

round(x) #四舍五入

floor(x) #向下取整

ceil(x) #向上取整

trunc(x) #trunc是直接砍掉小數,在正數的時候trunc跟floor一樣,負數時跟ceil一樣

# 除法函數

div(x,y) #取模

fld(x,y) #取小于結果的最大整數

cld(x,y) #取大于結果的最小整數

rem(x,y) #取余

mod(x,y)

mod1(x,y1) #如果x是y的整數倍,則返回y,不會返回余數

mod2pi(x) #對2pi取余

divrem(x,y) #返回取模的值和取余的值

fldmod(x,y) #返回取小于x的最大整數和取余的值

gcd(x,y...) #最大公約數

lcm(x,y...) #最小公倍數

# 符號函數

abs(x) #求模

abs2(x) #求平方

sign(x) #取符號

signbit(x) #正數返回false,負數返回true

copysign(x,y) #返回x * sign(y)

flipsign(x,y) #返回x * sign(y) * -1

# 開根號 log

sqrt(x) #開根號

cbrt(x) #開三次根

hypot(x,y) #sqrt(x^2 + y^2)

exp(x) #e^x

expm1(x) #e^-x

ldexp(x,n) #x^n

log(x) #loge(x)

log(b,x) #logb(x)

log2(x) #log2(x)

log10(x) #log10(x)

log1p(x) #loge(1+x)

# 三角函數

sin cos tan cot sec csc

sinh cosh tanh coth sech csch

asin acos atan acot asec acsc

asinh acosh atanh acoth asech acsch

sinc cosc

矩陣操作

既然是做科學計算,那肯定是少不了矩陣,先從簡單的向量說起

首先定義一個簡單的矩陣,在REPL中看返回的類型

a = [1,2,3,4]

>>4-element Array{Int64,1}:

1

2

3

4

Julia中也可以像MATLAB中定義步進向量

aa = (1:2:5)

aa.start

aa.step

aa.stop

first(aa)

step(aa)

last(aa)

Int8[3, 4, 5]

>>3-element Array{Int8,1}:

3

4

5

["one", "two", "threee"]

>>3-element Array{String,1}:

"one"

"two"

"threee"

[true, "two", 1, 2.0]

>>4-element Array{Any,1}:

true

"two"

1

2.0

[]

>>0-element Array{Any,1}

Int8[]

>>0-element Array{Int8,1}

a = (1, 2, 3) # tuple

b = collect(a)

>>3-element Array{Int64,1}:

1

2

3

c = collect(1:4) #不能直接寫成[1:4]

c[2:end]

c1 = c # c1與c的內存地址相同

c2 = c[:] # c2是c的一個拷貝

c1[1] = 10

c

>>4-element Array{Int64,1}:

10

2

3

4

c2[1] = 20

c

>>4-element Array{Int64,1}:

10

2

3

4

b = [1;2;3;4]

>>4-element Array{Int64,1}:

1

2

3

4

c = [1 2 3 4]

>>1×4 Array{Int64,2}:

1 2 3 4

再來看矩陣拼接中的空格 , ;的區別

x = ones(2,3)

y = zeros(2,3)

z = [x y]

>>2×6 Array{Float64,2}:

1.0 1.0 1.0 0.0 0.0 0.0

1.0 1.0 1.0 0.0 0.0 0.0

相當于hcat(x,y)

ndims(z)

>>2

z = [x,y]

>>2-element Array{Array{Float64,2},1}:

[1.0 1.0 1.0; 1.0 1.0 1.0]

[0.0 0.0 0.0; 0.0 0.0 0.0]

ndims(z)

>>1

[x;y]

>>4×3 Array{Float64,2}:

1.0 1.0 1.0

1.0 1.0 1.0

0.0 0.0 0.0

0.0 0.0 0.0

相當于vcat(x,y)

ndims(z)

>>2

那怎么把[x,y]也變成一個沒有嵌套的矩陣呢?

hcat([x,y]...) #表示把矩陣內部的Array作拼接

# 矩陣索引,從1開始

x[1]

>>1

x[6]

>>1

size(x)

>>(2,3)

length(x)

>>6

sum(x)

>>6

矩陣運算

a = collect(reshape(1:6,2,3))

b = ones(2,3)

a .+ b

a .- b

a * b # error

a .* b

a * b'

a / b

a ./ b

函數對矩陣操作時,也要加.

A = [1,2,3]

sin.(A)

>>3-element Array{Float64,1}:

0.8414709848078965

0.9092974268256817

0.1411200080598672

添加/刪除/移動

a = [1,2,3]

push!(a, 4)

pop!(a)

push!(a, 4,5,6)

push!(a, [7,8,9])

>>error

append!(a, [7,8,9])

prepend!(a, [10,11,12])

arr = reshape(1:6, 2, 3)

circshift(arr, (0,1))

circshift(arr, (1,-2))

對于矩陣的基本操作中,很多matlab中的函數Julia中基本也有,用法也基本一致

eg.

rand(10)

rand(2,3)

rand(Int32,2,3)

reshape(1:6, (2,3))

注:如果有些常用的數學函數發現在Julia中不能使用,比如mean()函數,則可以使用Statistics package。常用的數值分析的函數都在里面。

在網易云課堂上搜索《Julia教程 從入門到進階》可以看到所有免費教程視頻

微信公眾號:Quant_Times

Julia系列教程

總結

以上是生活随笔為你收集整理的julia常用矩阵函数_Julia系列教程3 数学运算 矩阵运算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。