2015-12-07 154 views
2

我的研究涉及從標量配方到基體配方的問題,反之亦然。有時找到相應的矩陣模式和必要的操作來執行它們可能會變得不明顯並且難以可視化(特別是當產生的矩陣模式很大且稀疏時)。爲了驗證我的推導,我通常使用MATLAB的sym變量(允許對它們執行所有數學運算)實現兩個公式並檢查它們是否相等。Julia等價於MATLAB的`sym`?

的我是什麼意思一個簡單的例子:

vec = sym('x',[2,1]) 
a = (3:4)' 
vectorResult = a'*vec 

scalar1 = sym('x1') 
scalar2 = sym('x2') 
scalarResult = a(1)*scalar1 + a(2)*scalar2 

isequaln(vectorResult,scalarResult) 

ans = 

    1 

所以我的問題是有沒有在朱莉婭這樣做相當於替代?

目前這是唯一的東西(除了像IDE一樣的MATLAB的缺失),這是阻止我完全遷移到朱莉婭。

回答

4

Base Julia不支持符號計算。對於這個功能,你可以使用像SymPy.jl這樣的東西,這是一個用於Julia(通過Python)或Nemo的符號計算包,它是基於Julia的完整計算機代數系統。

2

這裏是上面的例子中的朱等效形式,SymPy包的幫助下:

using SymPy # load SymPy package, you must Pkg.add("SymPy") before 
n=10; # vector length 
vec=Sym[Sym(symbol(:x,i)) for i in 1:n]; # create the vector of Sym 
a=rand(Int,n); # random vector of factors 
vectorResult= transpose(a)*vec; # matrix product 
scalarResult=[sum([vec[i]*a[i] for i in 1:n])]; # scaler operation 
scalarResult==vectorResult # => true 
+1

第三行似乎有點令人生畏,以下是少一點,以便:'VEC =符號[「× $ i「for i in 1:n]'。 – jverzani