Mathematica求解方程 |
您所在的位置:网站首页 › 解特征方程组 › Mathematica求解方程 |
不能不感叹Mathematica是真的强,但也不得不说Mathematica的各类教程是真的少。基本操作小半天就能上手了,但看着大神给出的那些极度抽象的代码甚至怀疑用的是不是一种程序。 关于MMA和MATLAB求解方程上的差距可以看这样一个例子 https://www.zhihu.com/question/22662349/answer/1297183755 可以看到即便是matlab2020b求得结果还是差点火候。 (不是说matlab处处弱,之前自己也遇到过一个方程matlab表现得比MMA好) 言归正传。 关于解方程,首先看MMA的帮助文档 How to 解方程 。 1、Solve函数 基本操作关于MMA中Solve函数的基本应用直接看帮助文档即可。 Solve[expr,vars] 试图求解以 vars 为变量的方程组或不等式组 expr. Solve[expr,vars,dom] 在定义域 dom 上求解. dom 的常用选择为 Reals、Integers 和 Complexes. 这里需要指出的是是否需要指出待求变量。 如果只有一个变量要求的话,其实是可以不指定变量的,比如 但如果有多个变量,则会默认将其中一个作为变量 指定解范围如果想求某个范围的解,此时加一个不等式即可,MMA将之认为是一个方程组。 用花括号{}括起来或者用&&链接均可。 求解包含特殊函数的方程遇到这个问题最初是要求方程 t e − t 1 F 1 ( − 3 2 ; 2 ; t ) = 0 t e^{-t}{ }_{1} F_{1}\left(-\frac{3}{2} ; 2 ; t\right)=0 te−t1F1(−23;2;t)=0 其中 1 F 1 ( a ; b ; z ) { }_{1} F_{1}\left(a ; b ; z\right) 1F1(a;b;z) 为第一类合流超几何函数(Confluent Hypergeometric Function of the First Kind),相关介绍可参考特殊函数相关教材或者Wolfram MathWorld网页。这个函数在matlab中用hypergeom(a,b,z)表示(注意不是kummerU(a,b,z)函数)。 但在用MMA对其进行求解的时候却遇到了一系列问题。 1、存在反函数、系数不精确 对于系数不精确的问题,是要把1.5换成3/2,这点之前确实没注意过。 2、存在反函数、无法求解 把1.5换成3/2 3、正解 需要指定解的范围。用Solve或Nsolve均可。 Solve函数可能出现的问题关于Solve函数可能存在的问题,帮助文档中也给出了说明。 这里列出部分,完整的还请参看帮助文档。 2、Reduce函数还是优先参考帮助文档。 下面内容参考丁大正《Mathematica基础与应用》2.1.4节。 Solve[eqns,vars]对系数按常规约定求出方程(组)的全部解。Reduce[eqns,vars]讨论系数出现的各种可能情况,分别求解。书中还有更多详细内容。 3、Root、FindRoot、Nsolve、Reduce等函数之后更新 一般来讲FindRoot应该是适用于更复杂的函数。 Nsolve是求数值解。 4、DSolve、RSolve等函数用 DSolve 求解微分方程 用 RSolve 求解递归方程 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |