Maple学习笔记——数据结构

不可变数据结构

序列

1.定义:一组用逗号隔开的表达式
2.例如:函数的参数项为一个序列:

[< l := 2*x + 3 = 1, x;#生成序列
[< solve(l);#求解
                               -1

3.提取序列元素:使用索引(序列名[索引])
4.编码生成一个序列:使用seq函数

[< seq(2*i + 1, i = 1 .. 5, 2);#生成序列2i+1,i=1,3,5
                            3, 7, 11

列表

1.定义:用方括号:[ ]封装的序列
2.特点:有序、保留重复元素

相关函数操作

1.判断表达式类型:whattype(a)
2.返回列表中表达式的序列:op(a)
3.测试一个表达式是否为列表的成员:member(表达式,列表名)has(列表名,表达式)
4.列表所含元素数量:numelems(列表名)

a := seq(2*i + 1, i = 1 .. 5);#生成一个序列
                      a := 3, 5, 7, 9, 11
b:=[1,2,3,1]
whattype(a);whattype(b) #判断表达式的类型
                            exprseq
                              list
member(1,b);hasr(b,4)
                             true
                              false
numelems(b);
                               4

集合

定义:{序列}
特点:不含重复元素,无序。

相关操作

1.提取集合中的元素:op( )
2.集合与列表的转换:convert(集合名,'list')[op(集合名)]
3.筛选出集合中满足一定条件的元素:select(x->条件表达式,集合名)
4.去掉不满足条件的元素:remove(x->条件表达式,集合名)
5.筛选+去掉二者兼得:selectremove(issqr, d)
6.对列表或集合中的所有元素应用到一个函数:map

a := {1, 2, 3};
b := {1, a};
                         a := {1, 2, 3}
                      b := {1, {1, 2, 3}}
op(a);#提取集合中的元素
                            1, 2, 3
[op(b)];#集合——>列表
                         [1, {1, 2, 3}]
convert(a, 'list');列表——>集合
                           [1, 2, 3]
select(x -> x^2 = 4, a);#选出集合a中元素x,满足x^2=4
                              {2}
remove(x -> x^2 = 4, a);#去电集合a中满足x^2=4的元素
                             {1, 3}
selectremove(x -> x^2 = 4, a);
                          {2}, {1, 3}
map(sin, a);#a作为sin函数的定义域
                    {sin(1), sin(2), sin(3)}

可变数据结构

数组Array

1.创建:a:=Array([ a,b,c])
2.获取数组内元素个数:numelems(a)
3.获得索引上下界:lowerbound(a), upperbound(a);
在这里插入图片描述
4.计算累和:s(k)=sum(xi,i=1,…k)
这里取k=10;x(i)=i
在这里插入图片描述

矩阵/向量

1.创建:
1.Matrix() 、 Vector()
2.使用索引:M := Matrix(x, y, (i, j) -> f)
其中x,y为矩阵的行数、列数,f为元素Mij的表达式
3.使用<<>>:M := <<<1,2>|<3,4>>>
2.类型转换:

命令说明
convert(列表名, Vector)列表—>向量
convert(L[L1,[L2]], Matrix)列表—>矩阵 (L1,L2为元素个数相同的列表)

1.创建:A:=table(a1=b1,a2=b2;a3=b3,...)
其中a1,a2,…为列表的索引;b1,b2,…为对应的值
调用:A[a1]
2.添加元素:A[索引]:=值
3.查看列表内容:eval()
4.若变量没有值,则Maple会子宫创建一个空列表
5.查看索引序列:indices( )(默认输出形式为列表)
6.查看值:entries( )(默认输出形式为列表)
7.二者都获得indices(数组名, pairs);(默认输出形式为列表)
8.参数nolist:解除封装列表 indices(table, nolist),entries(table, nolist)

t := table([age = 18, name = lily]);
t[age];
t[name];
t[sex] := boy;
eval(t);
              t := table([age = 18, name = lily])
                               18
                              lily
                         t[sex] := boy
           table([age = 18, sex = boy, name = lily])
eval(T);
                               T
T[3] := 5;
                           T[3] := 5
eval(T);
                         table([3 = 5])
indices(t);entries(t);
indices(t, pairs);
indices(t, nolist);entries(t, nolist);
                      [age], [sex], [name]
                      [18], [boy], [lily]
                age = 18, sex = boy, name = lily
                         age, sex, name
                         18, boy, lily
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值