朱莉娅相当于MATLAB的`sym`?

时间:2015-12-07 07:17:31

标签: matlab matrix 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的荒谬之外)阻止我完全迁移到Julia。

2 个答案:

答案 0 :(得分:4)

Base Julia不支持符号计算。对于该功能,您可以使用SymPy.jl之类的东西,它是Julia中的符号计算包(通过Python)或Nemo,它是基于Julia的完整计算机代数系统。

答案 1 :(得分:2)

以上示例的Julia等效形式,在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