博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mathematica中清除一系列符号定义的函数
阅读量:5776 次
发布时间:2019-06-18

本文共 1408 字,大约阅读时间需要 4 分钟。

Mathematica中使用Clear[symbol_1,symbol_2,... ] 清除符号symbol_i的值和定义。但是,有时需要清除一系列符号的值和定义。比如, 

有一系列变量a, b, c构成一个集和,称作 Vars,

Vars={a,b,c,...};

中间计算得到,

a=1; b=2; c=3;...

现在想清除这一系列变量a, b, c,...的值。

虽然可以将每一个要清除的变量列出,用Clear[a,b,c,...]清除,但是如果这个变量的集合很大,元素有成百上万个,那么使用Clear[ ]很不现实。

下面的函数可以实现这一目标,它输入一个列表(List),调用这一函数之后,将清除这个列表里每个变量的值。

基本想法是,先保持输入不变,将输入转变成一个字符串,再从这个字符串中恢复每一个变量相应的子字符串,比如''a"是变量a相应的字符串,最后使用Clear的另外一种用法Clear["symbol_1","symbol_2",... ]清除每个子字符串对应的变量。

(*给函数设定HoldAll属性,防止参数被计算*)SetAttributes[ClearList, HoldAll]; (*如果输入不是列表List,返回错误信息*)ClearList::nnarg = "The argument `1` is not a list."; ClearList[syml_] /;    If[Head[Evaluate[syml]] === List, True,      Message[ClearList::nnarg, syml]; False] := Module[{str, seq},   str[1] = ToString[HoldForm[syml]];   (*ClearList[{}] or ClearList[Var]*)   If[StringFreeQ[str[1], "{" ~~ __ ~~ "}"],    str[1] = ToString[Trace[syml][[2]]]];   (*ClearList[{c0[1],...}]*)   str[2] =     StringReplace[     str[1], {"{" -> "", "}" -> "", "[" ~~ __ ~~ "]" -> ""}];   str[3] = StringSplit[str[2], {", "}];   seq = str[3] /. List -> Sequence;   Clear[Evaluate[seq]]; ];
测试如下:

1.  Var = {a, c0[1], epsilon};
     a = 1; c0[1] = 2; epsilon = 3;
     ClearList[Var];
2. a = 1; c0[1] = 2; epsilon = 3;
     Var := {a, c0[1], epsilon};     (*此处延迟赋值*)
     ClearList[Var];
3. a = 1; c0[1] = 2; epsilon = 3;
    ClearList[{a, c0[1], epsilon}] ;

转载于:https://www.cnblogs.com/seventhsaint/archive/2012/11/20/2805656.html

你可能感兴趣的文章
如何用UPA优化性能?先读懂这份报告!
查看>>
这些Java面试题必须会-----鲁迅
查看>>
Linux 常用命令
查看>>
NodeJS 工程师必备的 8 个工具
查看>>
CSS盒模型
查看>>
ng2路由延时加载模块
查看>>
使用GitHub的十个最佳实践
查看>>
脱离“体验”和“安全”谈盈利的游戏运营 都是耍流氓
查看>>
慎用!BLEU评价NLP文本输出质量存在严重问题
查看>>
基于干净语言和好奇心的敏捷指导
查看>>
Node.js 2017企业用户调查结果发布
查看>>
“软”苹果水逆的一周:杂志服务崩溃,新机型遭泄露,芯片首架离职
查看>>
JAVA的优势就是劣势啊!
查看>>
ELK实战之logstash部署及基本语法
查看>>
帧中继环境下ospf的使用(点到点模式)
查看>>
BeanShell变量和方法的作用域
查看>>
LINUX下防恶意扫描软件PortSentry
查看>>
由数据库对sql的执行说JDBC的Statement和PreparedStatement
查看>>
springmvc+swagger2
查看>>
软件评测-信息安全-应用安全-资源控制-用户登录限制(上)
查看>>