Comments (5)
Indeed, there is no support for matrix expressions. There was in old Math.NET Classic, but not in Symbolics yet.
from mathnet-symbolics.
I would skip matrices completely and go for tensors (#14) instead.
This would make sense since scalars, vectors, and matrices are just a special kind of tensors.
from mathnet-symbolics.
the lack for matrices and tensors is annoying. it is currently not possible to solve system of equations symbolically:
let burger = symbol "burger"
let pommes = symbol "pommes"
let coke = symbol "coke"
let bill = symbol "bill"
let equations = [
(2*coke) == 30.0
(1*coke + 2*burger) == 20.0 // equals does not exist
(1*burger + 4*pommes) == 9.0
(burger + pommes * coke) == bill
]
linSolve equations bill // not working
the only way i could figure out was the numerical solution:
let M = matrix [[3.0; 0.0; 0.0]
[1.0; 2.0; 0.0]
[0.0; 1.0; 4.0]]
let R = vector [30.0; 20.0; 9.0]
let result = M.Solve(R)
let coke = result.[0]
let burger = result.[1]
let pommes = result.[2]
burger + pommes * coke // 15
maybe we could port Redberry (Sourcecode), since it has great support for tensors.
from mathnet-symbolics.
Quick way / ugly way to achieve vector/matrix support
from mathnet-symbolics.
Matrix multiplication supported with an ugly way
let v = FloatingPoint.RealVector <| vector[1.0;2.0;3.0]
let M = FloatingPoint.RealMatrix <|
matrix [[3.0; 0.0; 0.0]
[1.0; 2.0; 0.0]
[0.0; 1.0; 4.0]]
let symbols2 = dict[ "a", v; "m", M ]
let a0 = SymbolicExpression(Infix.parseOrThrow("a * 2")).Evaluate(symbols2)
printfn "%A" a0.RealVectorValue
let a1 = SymbolicExpression(Infix.parseOrThrow("a + 1")).Evaluate(symbols2)
printfn "%A" a1.RealVectorValue
let a2 = SymbolicExpression(Infix.parseOrThrow("mat_by_row(a, a)")).Evaluate(symbols2)
printfn "%A" a2.RealMatrixValue
let a4 = SymbolicExpression(Infix.parseOrThrow("mat_multiply(m, mat_by_col(a, vec(1.0, 2.0, 3.0), a), a)")).Evaluate(symbols2)
printfn "%A" a4
Result
seq [2.0; 4.0; 6.0]
seq [2.0; 3.0; 4.0]
DenseMatrix 2x3-Double
1 2 3
1 2 3
DenseMatrix 3x2-Double
1 1
2 2
3 3
RealVector (seq [9.0; 13.0; 61.0])
from mathnet-symbolics.
Related Issues (20)
- Processing does not end
- "not supported" exception with divide by zero in equation
- FSI
- Errors parsing and evaluating complex-valued string
- Evaluation of an expression dealing with Vector
- MathML eq
- How to get the inverse function
- Expression.Zero.Equals() Bug? HOT 2
- Rational.Simplify gets stuck in endless loop HOT 3
- Problem with eager numeric calculation HOT 1
- Automatically escape special LaTeX characters in symbol names HOT 4
- What about cooperation? HOT 3
- Latex HOT 8
- Multiplication signs being removed by Latex.formatvisual function HOT 4
- Simplify a string of variables and numbers - vb HOT 2
- How to use variables in algebra problems using a string? HOT 2
- How to add Parsing and Evaluation of the min and max functions HOT 2
- Approximation.Real vs FloatingPoint.Real
- No effective way to generate large sums
- Order of expressions
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mathnet-symbolics.