create a duplicate table or rtable - Maple Help

copy - create a duplicate table or rtable

 Calling Sequence copy( a );

Parameters

 a - any expression

Description

 • The purpose of the copy function is to create a duplicate table (or rtable) which can be altered without changing the original table (or rtable).  If a is not a table (or rtable), a is returned.
 • This functionality is necessary since the statements s := table(); t := s; leave both names s and t evaluating to the same table structure.  Hence, unlike other Maple data structures, assignments made via one of the names affect the values associated with the other name as well.
 • Note that copy is not recursive.  This means that if a is a table of tables, the table data structure for a is copied but the table structures for the entries of a are not copied.
 • For an rtable, copy preserves rtable options and indexing functions, except for the readonly option which is not set.

Examples

 > ${s}_{1}:=x$
 ${{s}}_{{1}}{:=}{x}$ (1)
 > $t:=s$
 ${t}{:=}{s}$ (2)
 > ${t}_{1}:=y$
 ${{t}}_{{1}}{:=}{y}$ (3)
 > ${s}_{1}$
 ${y}$ (4)
 > $u:=\mathrm{copy}\left(s\right)$
 ${u}{:=}{\mathrm{table}}\left(\left[{1}{=}{y}\right]\right)$ (5)
 > ${u}_{1}:=z$
 ${{u}}_{{1}}{:=}{z}$ (6)
 > ${s}_{1}$
 ${y}$ (7)
 > $m:=\mathrm{Matrix}\left(1,\mathrm{shape}=\mathrm{symmetric},\left[a\right],\mathrm{readonly}\right)$
 ${m}{:=}\left[\begin{array}{c}{a}\end{array}\right]$ (8)
 > $\mathrm{MatrixOptions}\left(m\right)$
 ${\mathrm{shape}}{=}\left[{\mathrm{symmetric}}\right]{,}{\mathrm{datatype}}{=}{\mathrm{anything}}{,}{\mathrm{storage}}{=}{{\mathrm{triangular}}}_{{\mathrm{upper}}}{,}{\mathrm{order}}{=}{\mathrm{Fortran_order}}{,}{\mathrm{readonly}}$ (9)
 > $n:=\mathrm{copy}\left(m\right)$
 ${n}{:=}\left[\begin{array}{c}{a}\end{array}\right]$ (10)
 > $\mathrm{MatrixOptions}\left(n\right)$
 ${\mathrm{shape}}{=}\left[{\mathrm{symmetric}}\right]{,}{\mathrm{datatype}}{=}{\mathrm{anything}}{,}{\mathrm{storage}}{=}{{\mathrm{triangular}}}_{{\mathrm{upper}}}{,}{\mathrm{order}}{=}{\mathrm{Fortran_order}}$ (11)

For a table 'a' that contains another table 'b'; when copy is done on 'a' an entirely new copy of 'a' is created.  However the objects contained in the table are not duplicated; so both 'a' and the copy of 'a' contain the table 'b'. Thus, if a change is made to the table 'b' in 'a', that change will show up in the copy of 'a' as well, and vice versa.

 > $S:=\mathrm{table}\left(\left[45,\mathrm{table}\left(\mathrm{symmetric},\left[\left(1,2\right)=3\right]\right)\right]\right)$
 ${S}{:=}{\mathrm{table}}\left(\left[{1}{=}{45}{,}{2}{=}{\mathrm{table}}\left({\mathrm{symmetric}}{,}\left[\left({1}{,}{2}\right){=}{3}\right]\right)\right]\right)$ (12)
 > ${S}_{1}$
 ${45}$ (13)
 > $T:=\mathrm{copy}\left(S\right)$
 ${T}{:=}{\mathrm{table}}\left(\left[{1}{=}{45}{,}{2}{=}{\mathrm{table}}\left({\mathrm{symmetric}}{,}\left[\left({1}{,}{2}\right){=}{3}\right]\right)\right]\right)$ (14)
 > ${T}_{1}$
 ${45}$ (15)
 > ${T}_{1}:=50$
 ${{T}}_{{1}}{:=}{50}$ (16)
 > ${S}_{1}$
 ${45}$ (17)
 > ${{S}_{2}}_{2,1}$
 ${3}$ (18)
 > ${{T}_{2}}_{2,1}:=5$
 ${{{T}}_{{2}}}_{{2}{,}{1}}{:=}{5}$ (19)
 > ${{S}_{2}}_{2,1}$
 ${5}$ (20)