S =
finiteset (a, b, …)
¶S =
finiteset (cellarray)
¶emptyset =
finiteset ()
¶Return a symbolic set containing the inputs without duplicates.
Example:
syms x y S = finiteset(1, pi, x, 1, 1, x, x + y) ⇒ S = (sym) {1, π, x, x + y} subs(S, x, pi) ⇒ ans = (sym) {1, π, y + π}
You can also use this to make the empty set:
finiteset() ⇒ ans = (sym) ∅
You cannot directly access elements of a set using indexing:
S(2) -| ??? 2 is out of bound ...
Instead you can first convert it to a cell (see ‘@sym/children’):
elements = children(S) ⇒ elements = (sym) [1 π x x + y] (1×4 matrix) elements(end) ⇒ ans = (sym) x + y
Careful, passing a matrix creates a set of matrices (rather than a set from the elements of the matrix):
finiteset([1 x 1 1]) ⇒ ans = (sym) {[1 x 1 1]} finiteset([1 pi], [1 x 1 1], [1 pi]) ⇒ ans = (sym) {[1 π], [1 x 1 1]}
On the other hand, if you want to make a set from the elements of a matrix, first convert it to a cell array:
A = [1 x 1; 2 1 x]; finiteset(num2cell(A)) ⇒ ans = (sym) {1, 2, x}
Sets can be nested:
finiteset(finiteset(), finiteset(finiteset())) ⇒ (sym) {∅, {∅}}
Note that cell arrays are not the same thing as
sets (despite the similar rendering using {
and }
).
For example, this creates a set containing a set:
finiteset(finiteset(1, 2, 3, 3)) ⇒ ans = (sym) {{1, 2, 3}}
whereas passing a single cell array cellarray creates a set containing each element of cellarray:
finiteset({1, 2, 3, 3}) ⇒ ans = (sym) {1, 2, 3}
(This is implemented mainly to enable the num2cell
example
above.)
See also: @sym/interval, @sym/ismember, @sym/children, @sym/union, @sym/intersect, @sym/setdiff, @sym/setxor.
Package: symbolic