Documentation |
Perform assignments given as equations
This functionality does not run in MATLAB.
assign(L) assign(L, S)
For each equation in a list, a set, or a table of equations L, assign(L) evaluates both sides of the equation and assigns the evaluated right hand side to the evaluated left hand side.
assign(L, S) does the same, but only for those equations whose left hand side is in the set S.
Since the arguments of assign are evaluated, the evaluation of the left hand side of each equation in L must be an admissible left hand side for an assignment. See the help page of the assignment operator := for details.
Several assignments are performed from left to right. See Example 4.
assign can be conveniently used after a call to solve to assign a particular solution of a system of equations to the unknowns. See Example 5.
We assign values to the three identifiers B1,B2,B3:
delete B1, B2, B3: assign([B1 = 42, B2 = 13, B3 = 666]): B1, B2, B3
We specify a second argument to carry out only those assignments with left hand side B1:
delete B1, B2, B3: assign([B1 = 42, B2 = 13, B3 = 666], {B1}): B1, B2, B3
The first argument may also be a table of equations:
delete B1, B2, B3: assign(table(B1 = 42, B2 = 13, B3 = 666)): B1, B2, B3
Unlike _assign, assign evaluates the left hand sides:
delete a, b: a := b: assign({a = 3}): a, b
delete a, b: a := b: a := 3: a, b
The object assigned may also be a sequence:
assign([X=(2,7)])
X
The assignments are carried out one after another, from left to right. Since the right hand side is evaluated, the identifier C gets the value 3 in the following example:
assign([B=3, C=B])
level(C,1)
When called for an algebraic system, solve often returns a set of lists of assignments. assign can then be used to assign the solutions to the variables of the system:
sys:={x^2+y^2=2, x+y=5}: S:= solve(sys)
We want to check whether the first solution is really a solution:
assign(S[1]): sys
Things become clearer if we use floating-point evaluation:
float(sys)