GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - symengine/SymEngine.jl: Julia wrappers of SymEngine

BranchesTags
Open more actions menu

Latest commit

 

History

551 Commits
551 Commits

Folders and files

NameName
Last commit message
Last commit date
.devcontainer
.devcontainer
 
 
.github
.github
 
 
docs
docs
 
 
ext
ext
 
 
src
src
 
 
test
test
 
 
.appveyor.yml.bak
.appveyor.yml.bak
 
 
.gitignore
.gitignore
 
 
LICENSE
LICENSE
 
 
Project.toml
Project.toml
 
 
README.md
README.md
 
 

Repository files navigation

SymEngine.jl

Build Status Build status Codecov Coveralls Documentation

Julia Wrappers for SymEngine, a fast symbolic manipulation library, written in C++.

Installation

You can install SymEngine.jl by giving the following command.

julia> Pkg.add("SymEngine")

Quick Start

Working with scalar variables

Defining variables

One can define variables in a few ways. The following three examples are equivalent.

Defining two symbolic variables with the names a and b, and assigning them to julia variables with the same name.

julia> a=symbols(:a); b=symbols(:b)
b

julia> a,b = symbols("a b")
(a, b)

julia> @vars a b
(a, b)

Simple expressions

We are going to define an expression using the variables from earlier:

julia> ex1 = a + 2(b+2)^2 + 2a + 3(a+1)
3*a + 3*(1 + a) + 2*(2 + b)^2

One can see that values are grouped, but no expansion is done.

Working with vector and matrix variables

Defining vectors of variables

A vector of variables can be defined using list comprehension and string interpolation.

julia> [symbols("α_$i") for i in 1:3]
3-element Vector{Basic}:
 α_1
 α_2
 α_3

Defining matrices of variables

Some times one might want to define a matrix of variables. One can use a matrix comprehension, and string interpolation to create a matrix of variables.

julia> W = [symbols("W_$i$j") for i in 1:3, j in 1:4]
3×4 Matrix{Basic}:
 W_11  W_12  W_13  W_14
 W_21  W_22  W_23  W_24
 W_31  W_32  W_33  W_34

Matrix-vector multiplication

Now using the matrix we can perform matrix operations:

julia> W*[1.0, 2.0, 3.0, 4.0]
3-element Vector{Basic}:
 1.0*W_11 + 2.0*W_12 + 3.0*W_13 + 4.0*W_14
 1.0*W_21 + 2.0*W_22 + 3.0*W_23 + 4.0*W_24
 1.0*W_31 + 2.0*W_32 + 3.0*W_33 + 4.0*W_34

Operations

expand

julia> expand(a + 2(b+2)^2 + 2a + 3(a+1))
11 + 6*a + 8*b + 2*b^2

subs

Performs substitution.

julia> subs(a^2+(b-2)^2, b=>a)
a^2 + (-2 + a)^2

julia> subs(a^2+(b-2)^2, b=>2)
a^2

julia> subs(a^2+(b-2)^2, a=>2)
4 + (-2 + b)^2

julia> subs(a^2+(b-2)^2, a^2=>2)
2 + (-2 + b)^2

julia> subs(a^2+(b-2)^2, a=>2, b=>3)
5

diff

Peforms differentiation

julia> diff(a + 2(b+2)^2 + 2a + 3(a+1), b)
4*(2 + b)

License

SymEngine.jl is licensed under MIT open source license.

About

Julia wrappers of SymEngine

Topics

computer-algebrajuliamath

Resources

Readme
License
Activity
Custom properties

Stars

199 stars

Watchers

4 watching

Forks

42 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.