技术标签: 经验分享
表面上,Maple与Mathematica非常相似,本文将从易用性,符号技术和性能上介绍Maple的技术优势:
Maple的目标是为用户提供一种自然的环境用于教学,学习和计算。这包括在任何地方使用标准的数学符号,遵守标准软件约定,并给用户提供环境创建一致的文档,与他们的教科书,白板和笔记本中的一样。
Maple使用标准的数学符号,圆括号表示函数 f(x) , |
Mathematica中使用方括号 f[x] |
Maple使用中的函数使用标准的表达,首字母小写 log(x),sin(x),cos(x) |
Mathematica中使用首字母大写Log[x],Sin[x], Cos[x] |
Maple中等号表示为“=” |
Mathematica中,等号用于变量赋值,双等号表示等于,因此表达会报错 |
Maple中自动使用二维的分数和指数表达,例如,当输入“/”时,Maple插入水平分数线,然后你的输入就会出现在分母的位置 |
Mathematica中分数和指数不是自动应用格式,使用功能键和标准键组合输入(如Ctrl+/输入“/”)或先输入Mathematica表达式 再用菜单操作将其转化为传统形式。 |
Maple通过默认面板使用标准数学格式。 |
Mathematica中,面板输入命令。必须使用菜单操作将命令转化为标准的数学形式。 |
对于不同的用户习惯,Maple也提供了传统的语法输入给用户。如Maple支持计算样式的语法:2*x^2+cos(x/2)。用户也可选择他们习惯的样式,包括在同一文档中使用两种形式。
Enter vs. Shift Enter
Maple的数学表达式与教科书中的排版一样,易于阅读和理解。
Mathematica中,即使使用传统样式,仍然与教科书的标准不同。如变量名没有使用斜体。对很容易理解的表达式,也难以快速理解。
从1998年开始引入的数学操作的环境敏感的智能菜单,到今天扩展到指导,任务模板,Math Apps,Smart Popups等更多应用中,Maple的可点击数学方法颠覆了数学教学与学习。
下面的示例使用Maple的Drag-to-Solve求解线性方程,教学生如何操作,移动子项并执行等号两边的操作。为从等号的一边移动子项到另一边,学生只要简单拖动这部分,Maple会执行学生所期望的操作。
学生也可以使用Maple中的智能化菜单直接得到计算结果:
Mathematica中,不能通过拖曳的方式一步步实现计算。为实现上述计算,必须输入公式,选择菜单项直接得到结果。
示例:子项的菜单操作
Maple中,可以对整个表达式或一个子项进行数学操作。这允许你用不同的形式重写部分表达式,作为求解过程中的一步。你可以使用三角恒等式对sec(x)操作:
Maple中也可以对子项绘图。例如,你想提醒学生表达式中有时分母会为0,可以使用智能弹出预览特性,快速预览分母的图形,如图。
Mathematica中,使用菜单不可能对子项进行操作。
在Maple中,你可以拖放GUI元件(滑动条、按钮、数学、画图等)到Maple文件中快速创建复杂的互动式应用程序,然后使用菜单定义属性。
相比,Mathematica需要使用GUIKit工具包使用编程方式创建相似的应用程序,对用户的编程知识和经验要求较高。
Maple的数学引擎由有才干的工程师和遍布全球的研究实验室的专家合作开发。这种合作让Maplesoft提供先进的数学算法应用于各领域。
学生使用数学软件不仅仅是为得到最终答案,他们需要通过软件工具了解问题背后的概念。Maple提供的各种功能,如Drag-to-Solve,智能菜单,任务模板和Smart Popup,让学生一步步解决问题而不需要输入命令。此外,Maple的学生包给学生提供一个学习环境,使
用和课堂上老师一样的方法,探索和强化基本概念。
Mathematica没有这样的一步步求解工具。最接近的是Wolfram/Alpha中的”Show Steps”, 它不在Mathematica中,必须通过浏览器访问。此外,它的功能不是交互式的,它显示最终答案和中间的步骤,不允许学生一步步尝试他们的问题。
Maple学生包的另一个优势是,所执行的计算考虑到了学生的水平。这样避免了返回的结果超出了学生的知识范围。例如,在计算向量欧式范数时,使用不同函数包结果如下:
Mathematica没有这样的能力更具学生特定的知识和能力给出相应的解,它只能给出通解。这样,指导老师需要花费更多的时间向学生解释所不期望的结果。
Maple中,你可以编写脚本和程序,与其他的过程化编程语言类似,如C,Java,Fortran,Visual Basic等。它也包含来自于函数和面向对象编程的很多元素,让你选择最适合你的问题和编程风格的方法。
Mathematica也支持不同的编程风格,但是主要是函数化的方法。这种方法难以读,写和调试。
语法错误是编程中常见的错误。编译器或翻译器的任务是帮助程序员查找错误并尽可能简单地改正。下面的一个简单程序,因缺少分号,Maple会很快定位到这个语法错误并将光标移到这个位置,而Mathematica不能得到所期望的答案,也没有任何提示信息。
Maple的数值模型源自IEEE/754浮点标准,该标准扩展了Maple的一致性覆盖更高的精度和更复杂的浮点计算。这个数值模型被软硬件行业接受,并被深入理解和接受。Maple的计算结果可以与使用相同国际标准的系统的结果用同一种方法比较。例如,Matlab中的算法代码可导入到Maple中并得到相同的结果。此外,选择Maple的决定总是查阅了标准文档后作出的。
Mathematica使用的数值模型派生自一个“有效位运算”的东西,不是国际标准,而且细节也未公布。其他系统写的算法在Mathematica中实现时常会得到不同结果,而且差别是不可预测的。虽然每种系统在浮点运算上有其固有的优势和弱点,Maple的模型的优势是易于理解,且经过了可识别的问题验证。相反,Mathematica的专有模型意味着错误的结果不是总能预测或检测。
示例(来自加州大学伯克利分校的Richard Fateman):一个递归序列定义为
收敛于1/3,程序如下:
Mathematica的程序中最后输出
显然不是1/3的近似。可以看到,Mathematica没有任何警示信息给用户。这些意外的结果不是软件的bug造成的,而是其使用的浮点模型导致的。
Maple是世界上最快的符号计算引擎。很多对标分析表明很多基本运算,如多项式计算,Maple的速度快很多,而且每个版本都有更多改进。多项式计算似乎不会出现在许多日常应用中,事实上,它是几乎所有符号算法的核心,如求解方程或积分。
求解方程的符号解是一项基本操作。从多项式求解文献中找到50个小型的多项式,Maple用少于50秒的时间求解了所有问题,Mathematica只能求解其中的26个,时间也更长。另外24个问题,5分钟内未得到结果而终止计算。
Maple提供了许多应用程序接口与其它标准工具和语言连接。因此,无论你用什么工具,都可以利用Maple强大的数学计算环境。
代码生成功能将计算公式和程序转换为不同的编程语言。你可以使用Maple或Mathematica开发原始的方案或算法,然后导出成其他语言,作为正在开发的大型项目的一部分。
Maple可以生成Visual Basic,MATLAB,Java,C,C#和Fortran代码。包含自动类型推导,自动类型转换,方程化简分析和代码优化。Maple的目标是容易的将代码集成到你的代码中。为最大化的保证兼容性,Maple坚持导出的C代码符合ANSII C标准。
Mathematica可以导出C或Fortran代码,但不能直接使用,因为它不是标准的C或Fortran代码。
示例
上图中,Mathematica生成的代码将Sin[]的方括号转换成了圆括号,但正弦和平方根函数首字母大写,因此必须用一个宏文件(mdefs.h)装换成对等的C语言。即使这样,还不够,见下图示例。
函数arctanh(x)不是标准C数学库的部分,Maple自动将其转换为C中对等的表达,而Mathematica不变,因此即使使用宏文件转换也不能使用。
生成Fortran语言也与此类似。Maple生成的代码可以马上直接使用,Mathematica生成的代码需要编译成单独的定义文件,也不是总能生成可工作的代码。此外,Maple还会考虑Fortran编译器在行格式和变量名长度上的限制。
因为Mathematica没有考虑这些因素,因此生成的代码需要后处理后才能工作。
Maple紧密集成在MATLAB中,直接调用对方所有的命令,变量和函数并工作在对方环境中。可以将MATLAB代码转换成Maple代码,或从Maple表达式和程序生成MATLAB代码。
Mathematica不支持任何内建联系。第三方工具提供调用MATLAB函数或生成MATLAB代码功能,但不被Wolfram Research支持。代码生成工具有十多年没有更新了。不支持相互的通讯和代码转换。
Maple提供参数化的双向接口连接SolidWorks,AutoDesk Inventor和NX CAD系统,可以从CAD文件中获取参数进行分析和优化,并将新的值返回到设计中。交互式助手和编程API都支持该功能用于重新配置和优化。
Mathematica提供工具导出3D对象成CAD格式,但不提供两种产品中的主动连接。没有办法从CAD图形中获取参数,也不可能将新的参数值直接推送到CAD设计中。
Maple和Mathematica的数学引擎有相似的架构:用C 或C++编写内核,用Maple或Mathematica编程语言编写的大型预定义函数库 。
Maple大约95%的功能是用Maple编程语言开发,每个用户都可以察看这些预定义库的源代码,这对了解Maple内部机制很有用。Maple的调试器允许用户一步步查看对于给定输入的函数库的表现。事实上,用户不仅可以查看这些代码,还可以修改或拓展这些代码以实现自定义的功能。
Mathematica中所有的内置库由Mathematica编程语言开发,但对用户是隐藏的。源代码存储在专有文件格式.mx文件中。用户不能查看这些代码,也不可能使用Mathematica调试器逐步运行它们。因为代码是不可见的,也不可能自定义Mathematica库程序。
文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态
文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境
文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn
文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker
文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机
文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk
文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入
文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。 Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。
文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动
文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计
文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;gt;Jni-&amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图
文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法