maple 解代数方程组得多项式_Maple&代数推导(一)——入门与提高

e7263b5b6cb546fbcdeaed5abf433005.png

Maple技术交互研讨群(QQ836204107)众多群友与自我的逼迫下,我决定在端午佳节写一篇关于Maple推导的文章。题图是只嘟嘟小蜜蜂,希望大家生活中能随心吃喝无忧无虑~之前有人反馈《Maple学习微指》学习起来有些吃力。这是因为《微指》偏向于个人操作经验的总结,相当于大方向的规范引导,对于具体实操确实涉及很少,需要读者各自体会。萌新如果觉得有难度,将教程卷、帮助文档卷、提问卷、强网站学习卷认真学习即可。鉴于本次推导主题,我先根据个人经历陈述符号推导的大局观,然后再从《微指》中“卷六——积累与提高”节选部分命令作具体说明。本文仅面向具备认真学习态度的萌新以及具有较好Maple操作基础的朋友。

1. 前言

一大部分数学素养有限的人对数学软件用于符号推导存在明显认知误区,总以为将个人看上去都觉得头大的符号系统(积分或(偏微分)方程组或不等式或优化)甩给M软件,她应该也必须能给出结果。

大错特错。

符号推导有既定解法推导与未定解法推导。计算机能解决所有人能解决的问题,人依靠计算机能解决一些未解问题。对Maple来说,你将Evan那本《Partial Differential Equations》上任何一个pde交给她,接近1的概率她能返回一个或隐或显或级数型或积分型的解。这是因为Maple求解偏微分方程的算法就是针对偏微分方程教科书上所有问题展开的,要是教科书里的偏微分都解决不了,何谈符号计算?同样的,你能想到的积分、不等式、优化问题,只要她收录进这个算法,势必可解。但要是她没收录进这个算法,或者她无法识别这个问题背后的解法匹配又或者这个问题本身就无解,又能指望她给出多好的结果呢?换句话说,指望有限的算法、命令去解决无限变化的问题,胜算几何?

此时,未定解法推导就出现了,这也是我对很多使用者的忠告。用Maple解决符号推导问题,大多数情况下请务必有个清晰思路。然而,这其中却存在一个内在矛盾————数学基础薄弱的人,主观上想依靠Maple辅助解决数学问题,客观上被自身能力掣肘而难以借助Maple充分解决问题。所以我时常感慨:Maple更多是为数学家或者物理学家设计的,操作自如的前提除了孰能生巧更多是数学功底。普通但暴躁的玩家用它解决既定问题还好,当simplify,solve,int,dsolve这些命令应用无果时,只能空锤桌子大骂“啥符号软件这都推导不出来”……

2. 推导命令的掌握

代数推导需要具体情境,毫无目的或者太过复杂的过程本身对读者也不友好。为让读者领会推导中一些重要命令与使用过程,我根据亲身经历,尽可能循序渐进地拆解其中常见的“小”问题,希望有心人举一反三。推导所需的常用命令如下:

# 其他但实用,不分次序
alias,type,whattype,apply,applyrule,unapply,applyop,assume,assuming*,lhs,rhs,taylor,
evaln,has*,hasfun*,hastype*,simplify,convert,expand,combine,isolate

# 赋值提取相关
%,%%,%%%,op,nops,[],{},indets*

# proc快速生成法f:=(x1,x2,...,xn)->func(x1,x2,...,xn)
f:=(x,y,z)->x*y*z;f(1,2,3)

# 隐批处理相关
seq,map,~*,zip*,MTM,select*,remove*

# 代换相关
assign,subs,subsop,eval,algsubs,subsindets*,dchange

# 简符相关
@,&,D,|

# 特别是`command`()的笔法
'',"",``,(*  *)

3. 推导命令的应用

本章内容涉及较广:有些命令看似跟推导无关但实际中会频繁用到,有些命令不局限于推导本身,有些命令是所有推导的基础。出于效率考虑在学习推导时仅掌握局限命令无可厚非,但弊端会很快显露。本着齐头并进原则下文会介绍一大批命令及其应用,出于篇幅限制与启发式行文目的,不少命令点到为止,需要有心人认真查阅相关帮助文档并不断摸索。最后关于函数&算符褪化、匹配替换、批处理与循环这三节内容是进阶学习,学习进程并非特别复杂,一旦掌握有利无害,是判断使用者水平高低的分水岭之一。

3.1. 项提取、列表打散

op用于提取表达式中第一级展开的某一项操作分支,伴随后期命令有subsop、applyop,分别用于对指定项用以替换与应用命令,因此了解其中元素选中机制极有必要。更深理解为:对于表达式

,其中
可以为函数或算符。
应用op(0,expr),op(n,expr)分别提取
本身以及第
个参数。
或许有人会有疑问,因为在 op(1,[1,2,3])、op(2,x+y+z) 这两步操作中,提取对象分别是列表与加法表达式, 结果是1与y,哪来的函数或算符
?这就涉及到函数降维问题,是后面讲解的内容。此处仅简要给出结论而不做解释:[1,2,3]和x+y+z的Maple内在表示机制可以理解为`[]`(1,2,3)、`+`(x,y,z)这样的函数算符表达式。
#提取某一项
op(0,x+y+z);#输出`+`
op(0,f(arg1,arg2,arg3));#输出f
op(2,f(arg1,arg2,arg3));#输出arg2
#列表、集合打散
op([1,2,3,4]);#输出1,2,3,4
op(f(arg1,arg2,arg3));#输出arg1,arg2,arg3
{a,b,c}[];#输出a,b,c

“第一级展开的某一项操作分支”中的第一项指的是什么? 由于表达能力有限,此处暂定义为函数或算符表达式中的所有参数,作为第一级展开。 在以下表达式中,按照之前思路应用op只能提取

这两个参数,
无法提取到
中的
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值