Mathematica 双重求和符号计算法则能力不如 Maple 吗

有同时使用过mathematica和maple的人没?两者的符号计算哪个更好?【四川大学吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:527,938贴子:
有同时使用过mathematica和maple的人没?两者的符号计算哪个更好?收藏
准备学一个
符号计算绝对是mapleNB但是maple的数值计算功能几乎可以算没有 而且扩展性太差 Mathematica虽然符号计算比maple略有不如 但数值计算也很强大 扩展性远优与maple 如果LZ打算用纯的符号计算 那么就学maple
如果要学比较综合的数学软件 建议还是学Mathematica
登录百度帐号推荐应用maple图形椭圆内部着色命令是什么?如何操作?
maple图形椭圆内部着色命令是什么?如何操作?
09-11-09 &匿名提问
理科大学生学计算机,应该学什么?  对于大学生来说,计算机是一个非常重要的工具,必须掌握。一定要掌握其搜集存贮资料功能,学习功能,日常事务处理功能,通讯功能,娱乐功能,更重要地是要掌握其科研功能。至于工作功能则要据工作性质来决定,现在有准备更好,也可在工作确定后再学习掌握。  大学生要充分利用学校资源学习掌握计算机的科研功能!  有很多问题不用计算机是自己徒手无法解决的,至少在技术上无法解决,或者在较短时间内解决不了,要用计算机就有可能解决。例如多元线性方程组求解及高次代数方程(组)求根,超越代数方 程求实根,特殊函数的0点,复杂定积分和重积分,微分方程求解,非线性微分方程数值解,高阶差分方程求解,大数的素数因子分解,偏微分方程数值解等。  有很多函数的特征不易掌握,需要用高维图形可视化来快速了解其性质,手工完成有困难,必须用计算机。  物理系统的运动规律不完全清楚,要通过大量实验数据的分析研究寻找规律时,要做数据拟合,快速有效完成要用计算机。  复杂的理论演算推导,现在也可以用计算机快速完成。  有不少理论还不成数,如果做出了某种预测或假设,可能要用大量数据来验证这种假设一对错,用计算机可以快速高效完成。  我们为自己可以找出一大堆理由来说服自己必须学会用计算机来做“科研”。这是本次报告的核心思想!!!  用计算机做科研,可以自己动手编程,也可以用Maple,Matlab,Mathematica等系统来快捷进行。这些软件都有强大的数值计算能力和符号运算能力,当然都有很好的可视化能力。比自己编程要省力的多,而且一般人是无能力开发符号运算系统的!!!M 类软件简介  《数值计算,数据处理,理论演算,可视化,验证和寻找物理规律,数学、物理学词典》  代数运算,微积分运算,微分方程求解,差分方程求解,变分法,矢量代数与矢量分析,统计分析,数学函数,数论,离散数学,几何学,群论,数理逻辑,特殊函数。作二维和三维图,曲线和曲面动画等。 1, Maple (枫树)  Maple4.0 (安装后28MB)可拷贝使用  maple5.0 maple6.0(25MB,安装后60MB)
 maple9.5(90MB,安装后306MB)
 Maple
 特别是作图极为方便,看三维图时,可用鼠标拖动图形以任意视点观察,生成曲线和曲面动画也十分方便。它的符号演算动能非常强大,但输入不如Mathematica方便。例如,maple产生动画的命令是with(plots):p:=animate(plot3d,[t*sin((x^2+y^2)^0.5-Pi*t)*exp(-(x^2+y^2)/20),x=-6..6,y=-6..6,numpoints=1000],t=0..5,frames=16):display(p,insequence=true);Matlab Matlab 目前有6.1 6.5 7.0等版本,6.5版安装后有1.1GBMatlab有极为强大的“大块”数据计算能力和作图能力,但符号演算功能不如Mathematica 和Maple 方便。但只有它才有的仿真功能。MathematicaMathematica 目前有3.0 4.0 4.1 5.0 等版本,5.0安装后有350MB .Mathematica 即有快速的数值运算能力,有十分方便的符号输入输出和演算能力,特别适合于作理论研究,也有方便的作图力,但速度不如maple 和matlab. 三套软件相比,各有特长,Maple的作图特别方便快捷,且易于改变视点,符号演算十分方便。Matlab有极为强大的“大块”数据计算能力,适合于对大量数据的快速处理及实时处理,作图也很方便,且有仿真功能。Mathematica 输入输出都特别方便,作图命令简单,符号演算能力很强。对学习数学和理论物理特别得心应手。六.M软件应用举例  1. 数值计算  2. 解代数方程  3. 求导与积分  4. 解常微分方程  5. 画图  6. 符号演算  7. 数据拟合课程介绍:1、计算机数学基础计算机数学基础是计算机专业重要的基础课程,它是学习专业理论课不可缺少的数学工具。 本课程主要包括:数理逻辑、集合论、图论、代数系统和数值分析等内容,是一门理论性较强,应用性较广的课程。 通过本课程的教学,要求学生: 1) 掌握离散数学的基本概念和基本原理,进一步提高抽象思维和逻辑推理的能力。 2) 熟悉数值计算方法的基本原理和基本方法,掌握常见的数值计算方法,提高数值计算能力。 2 面向对象程序设计 面向对象软件开发方法是吸收了软件工程领域有益的概念和有效的方法而发展起来的一种软件开发方法。它集抽象性、封装性、继承性和多态性于一体,可以帮助人们开发出模块 化、数据抽象程度高的,体现信息隐蔽、可复用、易修改、易扩充等特性的程序。 本课程主要介绍面向对象程序设计的方法和C++语言的基本概念。以C++语言中的面向对象机制为主。学习者在学习过程中可以通过大量的程序实例和相关练习,逐步掌握C++的面 向过程和面向对象的功能,从而掌握面向对象程序设计的基本知识和基本技能。在本课程中 ,作为一种编程环境,简要介绍了VISUAL C++5.0中最基本的编程工具。 3 数据结构 本课程介绍如何组织各种数据在计算机中的存储、传递和转换。内容包括:数组、链接表、栈和队列、递归、树与森林、图、堆与优先级队列、集合与搜索结构、排序、索引与散 列结构等。课程采用面向对象的观点讨论数据结构技术,并以兼有面向过程和面向对象双重 特色的C++语言作为算法的描述工具,强化数据结构基本知识和面向对象程序设计基本能力 的双基训练。为后续计算机专业课程的学习打下坚实的基础。 4 微计算机技术(原微机接口技术) 本课程以当今主流微处理器80X86为结合点,分析它的结构特点、操作原理、指令系统以及汇编语言程序设计的基本方法。重点讲解80X86外围主要支援芯片的功能、结构、编程 方法以及接口技术。在此基础上,对键盘、LED数码显示器、打印机、AD与DA转换器等基本 外部设备的原理与接口技术进行讨论。此外对微计算机系统总线、先进的微处理器结构也给 以介绍。通过本课程的学习和实验,使学生掌握微机接口的基本设计原理和技术。 5 信号处理原理 本课程是本专业必修的重要课程之一,目的是通过理论学习和实验使学生掌握信号处理,尤其是数字信号处理的基本原理和方法。 主要内容有:介绍信号的基本概念,以及信号的基本运算,包括信号与消息,卷积与相关等。信号的傅里叶分析:包括周期信号的傅里叶级数分析,一般信号的傅里叶变换分析, 抽样定理,离散傅里叶变换及其快速算法。拉氏变换:介绍拉普拉斯变换的基本概念、定义 、性质,以及其在信号处理中的应用。离散信号的Z变换:包括Z变换基本概念和性质,离散 系统的Z域分析方法(如离散系统的频率响应、稳定性、因果性等)数字滤波器的原理与设计 等。简介信号处理方法的最新技术:如小波变换,时频表示等。实验:根据课程内容设计实 验,使学生更加全面地掌握课程知识。 6 计算机组成原理 本课程是本专业必修的硬件课程中重要核心课程之一。基本要求是使学生掌握计算机常用的逻辑器件、部件的原理、参数及使用方法,学懂简单、完备的单台计算机的基本组成原 理,学习计算机设计中的入门性知识,掌握维护、使用计算机的技能。 课程内容包括:常用的组合逻辑器件,如译码器、数据选择器、编码器、ALU原理;常用的同步时序电路,如寄存器、移位寄存器、计数器的原理、参数及使用方法;可编程逻辑 阵列:ROM,PLA,PAL及门阵列的原理与使用。数字化编码,数制及数制转换,数据表示, 检错纠错码;数据的算术与逻辑运算,运算器的功能、组成与设计;教学机的运算器实例。 计算机指令系统综述,指令格式与寻址方式;教学计算机的指令系统与汇编语言程序设计; 控制器的功能、组成与设计,教学机的控制器实例。多级结构的存储系统综述,主存储器的 组成与设计,教学机的内存储器实例,CACHE存储器的运行原理,虚拟存储器的概念与实现 ,磁盘设备的组成与运行原理,磁盘阵列技术;光盘机的组成与运行原理,磁带机的组成与 运行原理。计算机输入/输出设备与输入/输出系统综述,显示器设备,针式打印机设备,激 光印字机设备;计算机总线的功能与组成,输入/输出系统的功能与组成;教学机的总线与 输入/输出系统实例。几种常用的输入/输出方式,中断与DMA的请求、响应和处理。 7 计算机网络 计算机网络是本专业的一门必修专业课。 本课程主要内容包括:计算机网络基本原理,计算机网络体系结构,局域网和广域网一般特性,典型网络的结构特点及具体实现,计算机网络应用。 通过本课程的学习,要求学生了解计算机网络涉及的术语、概念及新技术,掌握典型计算机网络结构及实现技术。 8 计算机操作系统 计算机操作系统是本专业的重要课程之一,通过学习使学生掌握计算机操作系统的设计基本原理及组成;计算机操作系统的基本概念和相关的新概念、名词及术语;了解计算机操 作系统的发展特点和设计技巧和方法;对常用计算机操作系统(Dos、Windows和UNIX或linu x)会进行基本的操作使用。 具体内容有:操作系统概念:操作系统定义及发展、五大类型五大功能、操作系统属性、“生成”概念。(人机交互)界面管理:人机交互的特点;第一、二、三代界面;基本的 键盘命令和系统调用;作业调度算法。文件管理:文件的结构与分类;物理结构和逻辑结构 ;目录结构;存取控制和安全机制;文件系统。存储管理:分区、分页、分段管理;物理地 址与逻辑地址;“扩充”技术;分配算法。输入输出设备管理:功能与分类;独享、共享、 虚拟设备的管理;管理策略。处理机管理:操作系统核心功能;“进程”概念;并发与并行 ;进程的基本状态与转换;进程调度算法;同步与互斥;P-V操作;死锁概念。操作系统程 序结构:层次、模块结构;设计与检测。 9 软件工程 软件工程是本专业一门重要的专业课,它对于培养学生的软件素质,提高学生的软件开发能力与软件项目管理能力具有重要的意义。 课程的主要内容有:介绍软件的基本概念和软件工程的目标,通过对传统的面向过程的软件开发方法和面向对象的软件开发方法的介绍,使学生掌握开发高质量软件的方法;通过对软 件开发过程和过程管理技术的学习,使学生了解如何进行软件度量和管理,怎样进行质量保 证活动,从而能够有效地策划和管理软件开发活动。 10 软件开发工具与环境 软件开发工具与环境是支持软件开发的一些工具软件的集成系统,是协助开发人员进行需求分析、设计和程序编制、测试的有效手段。本课程的主要目的是从实用角度出发,教授 学生如何使用当前最流行的软件开发工具,掌握典型的软件开发工具环境的基本原理和基本 功能,提高使用这类软件工具进行软件开发的能力。 11 数据库系统概论 该课程主要讨论数据库系统的基本概念,基本原理,基本方法以及有关的应用。 内容主要包括:数据库系统的组成、关系数据库、数据库设计以及数据保护等,同时讲解一种重要的数据库系统的应用。要求学生通过本课程的学习了解有关数据库系统的基本概 念,掌握相关的知识,初步掌握数据库设计方法,并能用数据库系统建立数据库及简单的应用。 12 多媒体技术基础及其应用 多媒体技术基础及其应用课程从研究、开发和应用角度出发,综合讲述多媒体计算机的基本原理、关键技术及其开发应用。 主要内容包括:多媒体技术现状及其发展趋势、视频和音频获取技术、多媒体数据压缩编码技术、多媒体计算机硬件和软件系统结构、多媒体数据库与基于内容检索、多媒体著作 工具与同步方法以及多媒体通讯和分布式多媒体系统。 13 计算机系统结构 本课程通过具体介绍指令系统、存储系统、输入输出系统、流水线和并行处理技术,使学生能够较全面地掌握计算机系统结构的基本概念、基本原理、基本结构和基本分析方法。 具体内容为:计算机系统结构基本概念,包括计算机系统的层次结构、系统结构定义、分类、设计技术、评价标准和系统结构的发展;指令集的系统结构,包括CISC指令系统和RI SC指令系统;存储系统原理、虚拟存储器和CACHE存储器;标量处理机、包括流水线、超标 量处理机、超流水线处理机和超标量超流水线处理机;并行处理技术、包括向量处理机、互 连网络、SIMD计算机和多处理机。 14 管理信息系统 管理信息系统是计算机应用在管理领域的一门实用技术。它综合运用了管理科学、数学和计算机应用的原理和方法,在符合软件工程规范的原则下,形成了自身完整的理论和方法 学体系。 本课程的主要内容有:管理信息系统的概念与结构、建立管理信息系统的基础、管理信息系统开发方法学、管理信息系统开发过程各阶段的任务与技术、管理信息系统开发环境与 工具以及管理信息系统的进展等。
请登录后再发表评论![转载]maple、matlab、mathematica这三种数学软件各有什么优势
现在比较流行的数学软件主要有四个:MATLAB、Mathematica、Maple和MathCAD,它们各有各的特色,以下资料从网上搜索获得。
MATLAB意为矩阵实验室(Matrix
Laboratory),采用C语言编写。70年代作为Linpack和Eispack软件包的接口程序,80年代出现3.0的DOS版本,后逐渐成为科技计算和视图交互系统的程序语言。MATLAB可以运行于Windows
、OS/2、Macintosh、Sun、Unix、Linux等系统平台上。&
MATLAB程序主要由主程序和各种工具包组成,其中主程序包含数百个内部核心函数,工具包则包括信号处理工具包、系统识别工具包、神经网络工具包、控制系统工具包、μ分析和综合工具包等。&
MATLAB是数值计算的先锋,它以矩阵作为基本数据单位,在线性代数、数理统计、自动控制、数字信号处理、动态系统仿真方面已经成为首选工具,同时也是科研工作人员和大学生、研究生进行科学研究的得力工具。MATLAB在输入方面也很方便,可以使用内部的Editor或者其他任何字符处理器,同时它还可以与Word结合在一起,直接调用MATLAB的大部分功能,使Word具有特殊的计算能力。
Mathematica
Mathematica是由美国物理学家Stephen Wolfram领导的Wolfram
Research开发的数学系统软件。它拥有强大的数值计算和符号计算能力,在这一方面与Maple类似,但它的符号计算核心不是Maple,而是自己开发的。&
Mathematica的基本系统主要是用C语言开发的,因而可以比较容易地移植到各种平台上。Mathematica是一个交互式的计算系统,计算是在用户和Mathematica互相交换、传递信息数据的过程中完成的。Mathematica系统所接受的命令都被称作表达式,系统在接受了一个表达式之后就对它进行处理,然后再把计算结果返回。Mathematica对于输入形式有比较严格的规定,用户必须按照系统规定的数学格式输入,系统才能正确地处理,不过由于3.0版本引入输入面板,并且可以修改、重组输入面板,因此以前版本输入指令时需要不断切换大小写字符的繁琐方式得到很好的改善。5.1版本可以用各种格式保存文件和剪贴内容,包括RTF、HTML、BMP等格式。
Mathematica的符号功能是最强的,其运行构架也是最优的。它的构架由核心系统与前端系统构成。两个系统既合作又独立,这比Matlab的构架要合理。Mathematica是专为研究人员开发的。横向比较的话,Mathematica的符号能力比Maple强很多,Maple基本上是为中学生与大学生之学习研发的,不适合进行物理学与技术科学的运演;而Mathematica是最好的物理学科研的工具,Matlab是最好的技术科学数值求解的工具。
4个星的“数学”软件,在数学二字上加引号是因为他已经超越了纯粹数学的范畴,这主要表现在他不断开发的面向于不同学科的工具包。就做数学和应用数学的能力来说Mathematica不如Maple(并不是说其做不了,不怕麻烦编程序也能做,但是话说回来基本的东西都编程序的话,那么和Fortran之类的语言没什么区别了)。另一个问题是Mathematica的内核不如Maple稳定(计算速度较Maple慢,我是说纯粹的计算时间,不是输入命令的时间,目前的Maple的Java界面比较失败,让人感觉算Maple算得慢,其实不是这样的)。Mathematica的诱人之处是与其它数值软件相比可以做符号运算,与Maple相比二次开发性好,工具包比Maple做的好。此外,其自带的语言是面向对象的,很厉害,很灵活。
Maple是由Waterloo大学开发的数学系统软件,它不但具有精确的数值处理功能,而且具有无以伦比的符号计算功能。Maple的符号计算能力还是MathCAD和MATLAB等软件的符号处理的核心。Maple提供了2000余种数学函数,涉及范围包括:普通数学、高等数学、线性代数、数论、离散数学、图形学。它还提供了一套内置的编程语言,用户可以开发自己的应用程序,而且Maple自身的2000多种函数,基本上是用此语言开发的。&
Maple采用字符行输入方式,输入时需要按照规定的格式输入,虽然与一般常见的数学格式不同,但灵活方便,也很容易理解。输出则可以选择字符方式和图形方式,产生的图形结果可以很方便地剪贴到Windows应用程序内。
5个星的数学软件,纯粹数学的巨人,如果想做数学和应用数学的能力(数值的除外)其是最好的选择。但是此软件二次开发能力不好,仅把软件的发展目标放在数学上,不想向其它领域发展。Maple自带的语言较容易理解,就像用英语说话一样。
MathCAD是美国Mathsoft公司推出的一个交互式的数学系统软件。从早期的DOS下的1.0和Windows下的4.0版本,到今日的8.0版本,功能也从简单的数值计算,直至引用Maple强大的符号计算能力,使得它发生了一个质的飞跃。&
MathCAD可以看作是一个功能强大的计算器,没有很复杂的规则;同时它也可以和Word、Lotus、WPS2000等字处理软件很好地配合使用,可以把它当作一个出色的全屏幕数学公式编辑器。&
MathCAD是集文本编辑、数学计算、程序编辑和仿真于一体的软件,主要特点是输入格式与人们习惯的数学书写格式很近似,采用WYSWYG(所见即所得)界面,特别适合一般无须进行复杂编程或要求比较特殊的计算。MathCAD
7.0还带有一个程序编辑器,语法特别简单,对于一般比较短小,或者要求计算速度比较低时,可以用这个程序编辑器。
四种软件的比较
如果仅仅是要求一般的计算或者是普通用户日常使用,首选的是MathCAD,它在高等数学方面所具有的能力,足够一般客户的要求,而且它的输入界面也特别友好。如果要求计算精度、符号计算和编程方面的话,最好同时使用Maple和Mathematica,它们在符号处理方面各具特色,有些Maple不能处理的,Mathematica却能处理,诸如某些积分、求极限等方面,这些都是比较特殊的。如果要求进行矩阵方面或图形方面的处理,则选择MATLAB,它的矩阵计算和图形处理方面则是它的强项,同时利用MATLAB的NoteBook功能,结合Word的编辑功能,可以很方便地编辑科技文章。
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。这个问题用ReadList[&03.txt&,{Number,Number},WordSeperators-&{& &}],函数会更好,设置WordSeperators-&{& &}.&br&&br&---&br&谢谢 &a data-hash=&96efcd1e43a& href=&///people/96efcd1e43a& class=&member_mention& data-hovercard=&p$b$96efcd1e43a&&@孙挺&/a&的提醒
这个问题用ReadList["03.txt",{Number,Number},WordSeperators-&{" "}],函数会更好,设置WordSeperators-&{" "}. --- 谢谢 的提醒
&div class=&highlight&&&pre&&code class=&language-text&&Solve[0.1/(2 π) == Im[Sqrt[10.9 + I x]] && x ∈ Reals, x]
(* {{x -& 0.105092}} *)
&/code&&/pre&&/div&&br&将常数改为精确的数就可以得到解析解。&br&&div class=&highlight&&&pre&&code class=&language-text&&Solve[1/(20 π) == Im[Sqrt[109/10 + I x]] && x ∈ Reals, x]
(* {{x -& Sqrt[1 + 4360 π^2]/(200 π^2)}} *)
&/code&&/pre&&/div&
Solve[0.1/(2 π) == Im[Sqrt[10.9 + I x]] && x ∈ Reals, x]
(* {{x -& 0.105092}} *) 将常数改为精确的数就可以得到解析解。 Solve[1/(20 π) == Im[Sqrt[109/10 + I x]] && x ∈ Reals, x]
(* {{x -& Sqrt[1 + 4360 π^2]/(200 π^2)}} *)
&div class=&highlight&&&pre&&code class=&language-text&&(* Windows下的文件路径 *)
path = $InstallationDirectory &&
&\\AddOns\\Applications\\FormulaData\\Kernel\\downvalues.m&;
(* 备份后导入程序包 *)
backup = path&&&.bak&;
CopyFile[path,backup];
downvalues = Import[path];
(* 设置要添加的公式 *)
newformula1 =
HoldPattern[MathematicaFormula[&牛顿万有引力定律&]] :&
QuantityVariable[&F&, &Name& -& &gravitational force&,
&PhysicalQuantity& -& &Force&,
&CanonicalUnit& -& {HoldForm[&Newtons&]},
&UnitDimensions& -& {{&LengthUnit&, 1}, {&MassUnit&,
1}, {&TimeUnit&, -2}}] == (Quantity[None,
&GravitationalConstant&]*
QuantityVariable[Subscript[&m&, 1], &Name& -& &primary mass&,
&PhysicalQuantity& -& &Mass&,
&CanonicalUnit& -& {HoldForm[&Kilograms&]},
&UnitDimensions& -& {&MassUnit&, 1}]*
QuantityVariable[Subscript[&m&, 2], &Name& -& &secondary mass&,
&PhysicalQuantity& -& &Mass&,
&CanonicalUnit& -& {HoldForm[&Kilograms&]},
&UnitDimensions& -& {&MassUnit&, 1}])/
QuantityVariable[&r&, &Name& -& &distance&,
&PhysicalQuantity& -& &Distance&,
&CanonicalUnit& -& {HoldForm[&Meters&]},
&UnitDimensions& -& {&LengthUnit&, 1}]^2;
newformulalist = {newformula1};
(* 添加公式,导出为文件,重新加载 *)
downvalues[[1]] = Join[downvalues[[1]], newformulalist];
Export[path, downvalues];
Get[&FormulaData`&]
(* 恢复原始文件 *)
DeleteFile[path];
RenameFile[backup, path];
(* 验证 *)
FormulaData[&NewtonsLawOfUniversalGravitation&, {QuantityVariable[&r&,
&Distance&] -& Quantity[12, &Kilograms&],
QuantityVariable[Subscript[&m&, 1], &Mass&] -&
Quantity[12, &Kilograms&],
QuantityVariable[Subscript[&m&, 2], &Mass&] -&
Quantity[12, &Kilograms&]}]
FormulaData[&牛顿万有引力定律&, {QuantityVariable[&r&, &Distance&] -&
Quantity[12, &Kilograms&],
QuantityVariable[Subscript[&m&, 1], &Mass&] -&
Quantity[12, &Kilograms&],
QuantityVariable[Subscript[&m&, 2], &Mass&] -&
Quantity[12, &Kilograms&]}]
&/code&&/pre&&/div&&br&大致是这个样子,思路简单操作繁琐没有效率。使用之前先添加自定义公式,需要扩展到其他系统的话文件路径可以用 FileNameJoin 生成。&br&&br&应该有直接操作读入的 Package 的方法,可惜我没找到,期待高人解答了。
(* Windows下的文件路径 *)
path = $InstallationDirectory &&
"\\AddOns\\Applications\\FormulaData\\Kernel\\downvalues.m";
(* 备份后导入程序包 *)
backup = path&&".bak";
CopyFile[path,backup];
downvalues = Import[path];
(* 设置要添加的公…
更:到这网站&a href=&///?target=http%3A///kernel& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&| 分享,讨论,执行Mathematica脚本&i class=&icon-external&&&/i&&/a& ,贴入代码,shift+enter.&br&-------------------------------------------&br&&i&&i&Mathematica&/i&&br&&/i&换汤不换药,套路显奇效,全是套路...&br&&img src=&/8d781c80b7e8dc56d3c3742b7abaec32_b.png& data-rawwidth=&1102& data-rawheight=&231& class=&origin_image zh-lightbox-thumb& width=&1102& data-original=&/8d781c80b7e8dc56d3c3742b7abaec32_r.png&&配合截图的效果:&img src=&/d3f0e28264d1bdfccdd17e6a03bacf0e_b.png& data-rawwidth=&378& data-rawheight=&462& class=&content_image& width=&378&&&div class=&highlight&&&pre&&code class=&language-text&&pic = ImageCrop[Rasterize[Style[Y, FontFamily -& &Helvetica&, 30]]];
grayorblack[n_, m_, a_, b_] :=
With[{hex =
Polygon[Table[{Cos[2 Pi k/6] + #, Sin[2 Pi k/6] + #2}, {k, a,
b}]~Join~{{#, #2}}] &},
Table[hex[3 i + 3 ((-1)^j + 1)/4, Sqrt[3]/2 j], {i, n}, {j, m}]];
Graphics[Join[{Gray, grayorblack[5, 24, 3, 5],
RGBColor[0.9, 0.9, 0.9], grayorblack[5, 24, 1, 3]},
With[{col = ImageValue[pic, Last @@ #]}, {EdgeForm[],
If[# != {1., 1., 1.}, {0, 0, 0}, {1, 1, 1}] &@col], #}] & /@
Flatten[grayorblack[5, 24, 5, 7]]]]
&/code&&/pre&&/div&
更:到这网站 ,贴入代码,shift+enter. ------------------------------------------- Mathematica 换汤不换药,套路显奇效,全是套路... 配合截图的效果:pic = ImageCrop[Rasterize[Style[Y, FontFamily -& "Helvetica",…
&div class=&highlight&&&pre&&code class=&language-mathematica&&&span class=&c&&(*多项式展开*)&/span&&span class=&w&&&/span&
&span class=&n&&Fold&/span&&span class=&p&&[&/span&&span class=&n&&Expand&/span&&span class=&p&&[(&/span&&span class=&nv&&#&/span&&span class=&o&&/.&/span&&span class=&n&&x&/span&&span class=&o&&-&&/span&&span class=&n&&x&/span&&span class=&o&&+&/span&&span class=&nv&&#2&/span&&span class=&p&&)&/span&&span class=&w&& &/span&&span class=&p&&(&/span&&span class=&nv&&#&/span&&span class=&o&&/.&/span&&span class=&n&&x&/span&&span class=&o&&-&&/span&&span class=&n&&x&/span&&span class=&o&&-&/span&&span class=&nv&&#2&/span&&span class=&p&&)]&/span&&span class=&o&&&&/span&&span class=&p&&,&/span&&span class=&n&&x&/span&&span class=&p&&,&/span&&span class=&n&&Sqrt&/span&&span class=&o&&@&/span&&span class=&p&&{&/span&&span class=&mi&&2&/span&&span class=&p&&,&/span&&span class=&mi&&3&/span&&span class=&p&&,&/span&&span class=&mi&&5&/span&&span class=&p&&,&/span&&span class=&mi&&7&/span&&span class=&p&&,&/span&&span class=&mi&&11&/span&&span class=&p&&}]&/span&&span class=&w&&&/span&
&span class=&n&&Block&/span&&span class=&p&&[{&/span&&span class=&n&&p&/span&&span class=&o&&=&/span&&span class=&n&&Sqrt&/span&&span class=&o&&@&/span&&span class=&p&&{&/span&&span class=&mi&&2&/span&&span class=&p&&,&/span&&span class=&mi&&3&/span&&span class=&p&&,&/span&&span class=&mi&&5&/span&&span class=&p&&,&/span&&span class=&mi&&7&/span&&span class=&p&&,&/span&&span class=&mi&&11&/span&&span class=&p&&},&/span&&span class=&n&&len&/span&&span class=&p&&},&/span&&span class=&w&&&/span&
&span class=&n&&len&/span&&span class=&o&&=&/span&&span class=&n&&Length&/span&&span class=&o&&@&/span&&span class=&n&&p&/span&&span class=&p&&;&/span&&span class=&n&&ArrayReshape&/span&&span class=&p&&[&/span&&span class=&n&&x&/span&&span class=&o&&-&/span&&span class=&n&&Tuples&/span&&span class=&p&&[{&/span&&span class=&mi&&-1&/span&&span class=&p&&,&/span&&span class=&mi&&1&/span&&span class=&p&&},&/span&&span class=&n&&len&/span&&span class=&p&&]&/span&&span class=&err&&.&/span&&span class=&n&&p&/span&&span class=&p&&,&/span&&span class=&n&&Array&/span&&span class=&p&&[&/span&&span class=&mi&&2&/span&&span class=&o&&&&/span&&span class=&p&&,&/span&&span class=&n&&len&/span&&span class=&p&&]]]&/span&&span class=&o&&//&/span&&span class=&err&&.&/span&&span class=&p&&{&/span&&span class=&nv&&a_&/span&&span class=&p&&,&/span&&span class=&nv&&b_&/span&&span class=&p&&}&/span&&span class=&o&&:&&/span&&span class=&n&&Expand&/span&&span class=&p&&[&/span&&span class=&n&&a&/span&&span class=&o&&*&/span&&span class=&n&&b&/span&&span class=&p&&]&/span&&span class=&w&&&/span&
&span class=&c&&(* 分解因式无可奉告 *)&/span&&span class=&w&&&/span&
&span class=&c&&(*最小多项式*)&/span&&span class=&w&&&/span&
&span class=&n&&Block&/span&&span class=&p&&[{&/span&&span class=&n&&FactorList&/span&&span class=&o&&=&/span&&span class=&n&&Identity&/span&&span class=&p&&},&/span&&span class=&n&&MinimalPolynomial&/span&&span class=&p&&[&/span&&span class=&n&&Sqrt&/span&&span class=&p&&[&/span&&span class=&mi&&2&/span&&span class=&p&&]&/span&&span class=&o&&+&/span&&span class=&n&&Sqrt&/span&&span class=&p&&[&/span&&span class=&mi&&3&/span&&span class=&p&&]&/span&&span class=&o&&+&/span&&span class=&n&&Sqrt&/span&&span class=&p&&[&/span&&span class=&mi&&5&/span&&span class=&p&&]&/span&&span class=&o&&+&/span&&span class=&n&&Sqrt&/span&&span class=&p&&[&/span&&span class=&mi&&7&/span&&span class=&p&&]&/span&&span class=&o&&+&/span&&span class=&n&&Sqrt&/span&&span class=&p&&[&/span&&span class=&mi&&11&/span&&span class=&p&&]&/span&&span class=&o&&+&/span&&span class=&n&&Sqrt&/span&&span class=&p&&[&/span&&span class=&mi&&13&/span&&span class=&p&&],&/span&&span class=&n&&x&/span&&span class=&p&&]]&/span&&span class=&w&&&/span&
&span class=&n&&Fold&/span&&span class=&p&&[&/span&&span class=&n&&Resultant&/span&&span class=&p&&[(&/span&&span class=&n&&x&/span&&span class=&o&&-&/span&&span class=&n&&a&/span&&span class=&p&&)&/span&&span class=&o&&^&/span&&span class=&mi&&3&/span&&span class=&o&&-&/span&&span class=&nv&&#2&/span&&span class=&p&&,&/span&&span class=&nv&&#&/span&&span class=&o&&/.&/span&&span class=&n&&x&/span&&span class=&o&&-&&/span&&span class=&n&&a&/span&&span class=&p&&,&/span&&span class=&n&&a&/span&&span class=&p&&]&/span&&span class=&o&&&&/span&&span class=&p&&,&/span&&span class=&n&&a&/span&&span class=&p&&,{&/span&&span class=&mi&&2&/span&&span class=&p&&,&/span&&span class=&mi&&3&/span&&span class=&p&&,&/span&&span class=&mi&&5&/span&&span class=&p&&,&/span&&span class=&mi&&7&/span&&span class=&p&&}]&/span&&span class=&w&&&/span&
&span class=&c&&(*差分方程*)&/span&&span class=&w&&&/span&
&span class=&n&&Block&/span&&span class=&p&&[{&/span&&span class=&n&&ComplexExpand&/span&&span class=&o&&=&/span&&span class=&n&&Identity&/span&&span class=&p&&},&/span&&span class=&n&&RSolve&/span&&span class=&p&&[{&/span&&span class=&n&&a&/span&&span class=&p&&[&/span&&span class=&n&&n&/span&&span class=&p&&]&/span&&span class=&o&&==&/span&&span class=&n&&a&/span&&span class=&p&&[&/span&&span class=&n&&n&/span&&span class=&mi&&-5&/span&&span class=&p&&]&/span&&span class=&o&&+&/span&&span class=&mi&&1&/span&&span class=&p&&},&/span&&span class=&n&&a&/span&&span class=&p&&[&/span&&span class=&n&&n&/span&&span class=&p&&],&/span&&span class=&n&&n&/span&&span class=&p&&]]&/span&&span class=&w&&&/span&
&span class=&nn&&Internal`&/span&&span class=&n&&InheritedBlock&/span&&span class=&p&&[{&/span&&span class=&n&&ComplexExpand&/span&&span class=&p&&,&/span&&span class=&w&& &/span&&span class=&n&&Solve&/span&&span class=&p&&},&/span&&span class=&w&&&/span&
&span class=&w&&
&/span&&span class=&n&&Unprotect&/span&&span class=&p&&[&/span&&span class=&n&&ComplexExpand&/span&&span class=&p&&,&/span&&span class=&w&& &/span&&span class=&n&&Solve&/span&&span class=&p&&];&/span&&span class=&w&&&/span&
&span class=&w&&
&/span&&span class=&n&&ComplexExpand&/span&&span class=&w&& &/span&&span class=&o&&=&/span&&span class=&w&& &/span&&span class=&n&&Identity&/span&&span class=&p&&;&/span&&span class=&w&&&/span&
&span class=&w&&
&/span&&span class=&n&&Solve&/span&&span class=&p&&[&/span&&span class=&nv&&eq_&/span&&span class=&p&&,&/span&&span class=&w&& &/span&&span class=&nv&&var_&/span&&span class=&p&&,&/span&&span class=&w&& &/span&&span class=&nv&&opt_&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&o&&:=&/span&&span class=&w&& &/span&&span class=&n&&Solve&/span&&span class=&p&&[&/span&&span class=&n&&eq&/span&&span class=&p&&,&/span&&span class=&w&& &/span&&span class=&n&&var&/span&&span class=&p&&,&/span&&span class=&w&& &/span&&span class=&n&&opt&/span&&span class=&p&&,&/span&&span class=&w&& &/span&&span class=&n&&Method&/span&&span class=&w&& &/span&&span class=&o&&-&&/span&&span class=&w&& &/span&&span class=&n&&Rational&/span&&span class=&p&&];&/span&&span class=&w&&&/span&
&span class=&w&&
&/span&&span class=&n&&RSolve&/span&&span class=&p&&[{&/span&&span class=&n&&a&/span&&span class=&p&&[&/span&&span class=&n&&n&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&o&&==&/span&&span class=&w&& &/span&&span class=&n&&a&/span&&span class=&p&&[&/span&&span class=&n&&n&/span&&span class=&w&& &/span&&span class=&o&&-&/span&&span class=&w&& &/span&&span class=&mi&&5&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&o&&+&/span&&span class=&w&& &/span&&span class=&mi&&1&/span&&span class=&p&&,&/span&&span class=&w&& &/span&&span class=&n&&a&/span&&span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&o&&==&/span&&span class=&w&& &/span&&span class=&mi&&1&/span&&span class=&p&&,&/span&&span class=&w&& &/span&&span class=&n&&a&/span&&span class=&p&&[&/span&&span class=&mi&&2&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&o&&==&/span&&span class=&w&& &/span&&span class=&mi&&2&/span&&span class=&p&&,&/span&&span class=&w&& &/span&&span class=&n&&a&/span&&span class=&p&&[&/span&&span class=&mi&&3&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&o&&==&/span&&span class=&w&& &/span&&span class=&mi&&3&/span&&span class=&p&&,&/span&&span class=&w&& &/span&
&span class=&w&&
&/span&&span class=&n&&a&/span&&span class=&p&&[&/span&&span class=&mi&&4&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&o&&==&/span&&span class=&w&& &/span&&span class=&mi&&4&/span&&span class=&p&&,&/span&&span class=&w&& &/span&&span class=&n&&a&/span&&span class=&p&&[&/span&&span class=&mi&&5&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&o&&==&/span&&span class=&w&& &/span&&span class=&mi&&5&/span&&span class=&p&&},&/span&&span class=&w&& &/span&&span class=&n&&a&/span&&span class=&p&&[&/span&&span class=&n&&n&/span&&span class=&p&&],&/span&&span class=&w&& &/span&&span class=&n&&n&/span&&span class=&p&&]]&/span&&span class=&w&&&/span&
&span class=&c&&(*三角方程*)&/span&&span class=&w&&&/span&
&span class=&w&& &/span&&span class=&n&&Solve&/span&&span class=&p&&[{&/span&&span class=&n&&x&/span&&span class=&o&&+&/span&&span class=&n&&y&/span&&span class=&o&&==&/span&&span class=&n&&G&/span&&span class=&p&&,&/span&&span class=&n&&Cos&/span&&span class=&p&&[&/span&&span class=&n&&A&/span&&span class=&p&&]&/span&&span class=&o&&==&/span&&span class=&n&&Cos&/span&&span class=&p&&[&/span&&span class=&n&&th&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&n&&Cos&/span&&span class=&p&&[&/span&&span class=&n&&x&/span&&span class=&p&&],&/span&&span class=&n&&Cos&/span&&span class=&p&&[&/span&&span class=&n&&B&/span&&span class=&p&&]&/span&&span class=&o&&==&/span&&span class=&n&&Cos&/span&&span class=&p&&[&/span&&span class=&n&&th&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&n&&Cos&/span&&span class=&p&&[&/span&&span class=&n&&y&/span&&span class=&p&&]},{&/span&&span class=&n&&x&/span&&span class=&p&&,&/span&&span class=&n&&y&/span&&span class=&p&&,&/span&&span class=&n&&th&/span&&span class=&p&&},&/span&&span class=&n&&Method&/span&&span class=&o&&-&&/span&&span class=&n&&Reduce&/span&&span class=&p&&]&/span&&span class=&w&&&/span&
&span class=&n&&Solve&/span&&span class=&p&&[{&/span&&span class=&n&&Sin&/span&&span class=&p&&[&/span&&span class=&n&&x&/span&&span class=&o&&+&/span&&span class=&n&&a&/span&&span class=&p&&]&/span&&span class=&o&&/&/span&&span class=&n&&Sin&/span&&span class=&p&&[&/span&&span class=&n&&y&/span&&span class=&o&&+&/span&&span class=&n&&a&/span&&span class=&p&&]&/span&&span class=&o&&==&/span&&span class=&n&&m&/span&&span class=&p&&,&/span&&span class=&n&&Cos&/span&&span class=&p&&[&/span&&span class=&n&&x&/span&&span class=&o&&+&/span&&span class=&n&&a&/span&&span class=&p&&]&/span&&span class=&o&&/&/span&&span class=&n&&Cos&/span&&span class=&p&&[&/span&&span class=&n&&y&/span&&span class=&o&&+&/span&&span class=&n&&a&/span&&span class=&p&&]&/span&&span class=&o&&==&/span&&span class=&n&&n&/span&&span class=&p&&}&/span&&span class=&o&&/.&/span&&span class=&p&&{&/span&&span class=&n&&x&/span&&span class=&o&&-&&/span&&span class=&n&&x1&/span&&span class=&o&&-&/span&&span class=&n&&a&/span&&span class=&p&&,&/span&&span class=&n&&y&/span&&span class=&o&&-&&/span&&span class=&n&&y1&/span&&span class=&o&&-&/span&&span class=&n&&a&/span&&span class=&p&&},{&/span&&span class=&n&&x1&/span&&span class=&p&&,&/span&&span class=&n&&y1&/span&&span class=&p&&}]&/span&&span class=&w&&&/span&
&span class=&n&&eq&/span&&span class=&o&&=&/span&&span class=&p&&{&/span&&span class=&n&&k1&/span&&span class=&o&&==&/span&&span class=&p&&(&/span&&span class=&o&&-&/span&&span class=&n&&Sin&/span&&span class=&p&&[&/span&&span class=&n&&th&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&p&&(&/span&&span class=&n&&x1&/span&&span class=&o&&-&/span&&span class=&n&&Tx&/span&&span class=&p&&)&/span&&span class=&o&&+&/span&&span class=&n&&Cos&/span&&span class=&p&&[&/span&&span class=&n&&th&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&p&&(&/span&&span class=&n&&y1&/span&&span class=&o&&-&/span&&span class=&n&&Ty&/span&&span class=&p&&))&/span&&span class=&o&&/&/span&&span class=&p&&(&/span&&span class=&n&&Cos&/span&&span class=&p&&[&/span&&span class=&n&&th&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&p&&(&/span&&span class=&n&&x1&/span&&span class=&o&&-&/span&&span class=&n&&Tx&/span&&span class=&p&&)&/span&&span class=&o&&+&/span&&span class=&n&&Sin&/span&&span class=&p&&[&/span&&span class=&n&&th&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&p&&(&/span&&span class=&n&&y1&/span&&span class=&o&&-&/span&&span class=&n&&Ty&/span&&span class=&p&&)),&/span&&span class=&n&&k2&/span&&span class=&o&&==&/span&&span class=&p&&(&/span&&span class=&o&&-&/span&&span class=&n&&Sin&/span&&span class=&p&&[&/span&&span class=&n&&th&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&p&&(&/span&&span class=&n&&x2&/span&&span class=&o&&-&/span&&span class=&n&&Tx&/span&&span class=&p&&)&/span&&span class=&o&&+&/span&&span class=&n&&Cos&/span&&span class=&p&&[&/span&&span class=&n&&th&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&p&&(&/span&&span class=&n&&y2&/span&&span class=&o&&-&/span&&span class=&n&&Ty&/span&&span class=&p&&))&/span&&span class=&o&&/&/span&&span class=&p&&(&/span&&span class=&n&&Cos&/span&&span class=&p&&[&/span&&span class=&n&&th&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&p&&(&/span&&span class=&n&&x2&/span&&span class=&o&&-&/span&&span class=&n&&Tx&/span&&span class=&p&&)&/span&&span class=&o&&+&/span&&span class=&n&&Sin&/span&&span class=&p&&[&/span&&span class=&n&&th&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&p&&(&/span&&span class=&n&&y2&/span&&span class=&o&&-&/span&&span class=&n&&Ty&/span&&span class=&p&&)),&/span&&span class=&n&&k3&/span&&span class=&o&&==&/span&&span class=&p&&(&/span&&span class=&o&&-&/span&&span class=&n&&Sin&/span&&span class=&p&&[&/span&&span class=&n&&th&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&p&&(&/span&&span class=&n&&x3&/span&&span class=&o&&-&/span&&span class=&n&&Tx&/span&&span class=&p&&)&/span&&span class=&o&&+&/span&&span class=&n&&Cos&/span&&span class=&p&&[&/span&&span class=&n&&th&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&p&&(&/span&&span class=&n&&y3&/span&&span class=&o&&-&/span&&span class=&n&&Ty&/span&&span class=&p&&))&/span&&span class=&o&&/&/span&&span class=&p&&(&/span&&span class=&n&&Cos&/span&&span class=&p&&[&/span&&span class=&n&&th&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&p&&(&/span&&span class=&n&&x3&/span&&span class=&o&&-&/span&&span class=&n&&Tx&/span&&span class=&p&&)&/span&&span class=&o&&+&/span&&span class=&n&&Sin&/span&&span class=&p&&[&/span&&span class=&n&&th&/span&&span class=&p&&]&/span&&span class=&w&& &/span&&span class=&p&&(&/span&&span class=&n&&y3&/span&&span class=&o&&-&/span&&span class=&n&&Ty&/span&&span class=&p&&))};&/span&&span class=&w&&&/span&
&span class=&n&&eq&/span&&span class=&o&&/.&/span&&span class=&n&&th&/span&&span class=&o&&-&&/span&&span class=&n&&ArcTan&/span&&span class=&p&&[&/span&&span class=&n&&th&/span&&span class=&p&&]&/span&&span class=&o&&//&/span&&span class=&n&&Simplify&/span&&span class=&w&&&/span&
&span class=&n&&Cases&/span&&span class=&p&&[&/span&&span class=&n&&Eliminate&/span&&span class=&p&&[&/span&&span class=&err&&%&/span&&span class=&p&&,{}],&/span&&span class=&nv&&_Equal&/span&&span class=&p&&,&/span&&span class=&mi&&-1&/span&&span class=&p&&]&/span&&span class=&w&&&/span&
&span class=&n&&Solve&/span&&span class=&p&&[&/span&&span class=&err&&%&/span&&span class=&p&&,{&/span&&span class=&n&&th&/span&&span class=&p&&,&/span&&span class=&n&&Tx&/span&&span class=&p&&,&/span&&span class=&n&&Ty&/span&&span class=&p&&}]&/span&&span class=&w&&&/span&
&span class=&c&&(*最值,限定范围可用NMinimize得到*)&/span&&span class=&w&&&/span&
&span class=&n&&Minimize&/span&&span class=&p&&[{&/span&&span class=&n&&Sqrt&/span&&span class=&p&&[&/span&&span class=&mi&&2&/span&&span class=&w&& &/span&&span class=&n&&a&/span&&span class=&o&&^&/span&&span class=&mi&&2-8&/span&&span class=&w&& &/span&&span class=&n&&a&/span&&span class=&o&&+&/span&&span class=&mi&&10&/span&&span class=&p&&]&/span&&span class=&o&&+&/span&&span class=&n&&Sqrt&/span&&span class=&p&&[&/span&&span class=&n&&b&/span&&span class=&o&&^&/span&&span class=&mi&&2-6&/span&&span class=&w&& &/span&&span class=&n&&b&/span&&span class=&o&&+&/span&&span class=&mi&&10&/span&&span class=&p&&]&/span&&span class=&o&&+&/span&&span class=&n&&Sqrt&/span&&span class=&p&&[&/span&&span class=&mi&&2&/span&&span class=&w&& &/span&&span class=&n&&a&/span&&span class=&o&&^&/span&&span class=&mi&&2-2&/span&&span class=&w&& &/span&&span class=&n&&a&/span&&span class=&w&& &/span&&span class=&n&&b&/span&&span class=&o&&+&/span&&span class=&n&&b&/span&&span class=&o&&^&/span&&span class=&mi&&2&/span&&span class=&p&&],&/span&&span class=&mi&&1&/span&&span class=&o&&&&/span&&span class=&n&&a&/span&&span class=&o&&&&/span&&span class=&mi&&2&/span&&span class=&p&&,&/span&&span class=&mi&&2&/span&&span class=&o&&&&/span&&span class=&n&&b&/span&&span class=&o&&&&/span&&span class=&mi&&3&/span&&span class=&p&&},{&/span&&span class=&n&&a&/span&&span class=&p&&,&/span&&span class=&n&&b&/span&&span class=&p&&}]&/span&&span class=&w&&&/span&
&span class=&n&&Minimize&/span&&span class=&p&&[{&/span&&span class=&n&&Sqrt&/span&&span class=&p&&[&/span&&span class=&n&&x&/span&&span class=&o&&^&/span&&span class=&mi&&2&/span&&span class=&o&&+&/span&&span class=&p&&(&/span&&span class=&n&&y&/span&&span class=&mi&&-1&/span&&span class=&p&&)&/span&&span class=&o&&^&/span&&span class=&mi&&2&/span&&span class=&p&&]&/span&&span class=&o&&+&/span&&span class=&n&&Sqrt&/span&&span class=&p&&[(&/span&&span class=&n&&x&/span&&span class=&mi&&-1&/span&&span class=&p&&)&/span&&span class=&o&&^&/span&&span class=&mi&&2&/span&&span class=&o&&+&/span&&span class=&n&&y&/span&&span class=&o&&^&/span&&span class=&mi&&2&/span&&span class=&p&&]&/span&&span class=&o&&+&/span&&span class=&n&&Sqrt&/span&&span class=&p&&[(&/span&&span class=&n&&x&/span&&span class=&o&&+&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span&&span class=&o&&^&/span&&span class=&mi&&2&/span&&span class=&o&&+&/span&&span class=&n&&y&/span&&span class=&o&&^&/span&&span class=&mi&&2&/span&&span class=&p&&],&/span&&span class=&mi&&-1&/span&&span class=&o&&/&/span&&span class=&mi&&2&/span&&span class=&o&&&&/span&&span class=&n&&x&/span&&span class=&o&&&&/span&&span class=&mi&&1&/span&&span class=&o&&/&/span&&span class=&mi&&2&/span&&span class=&p&&,&/span&&span class=&mi&&0&/span&&span class=&o&&&&/span&&span class=&n&&y&/span&&span class=&o&&&&/span&&span class=&mi&&1&/span&&span class=&p&&},{&/span&&span class=&n&&x&/span&&span class=&p&&,&/span&&span class=&n&&y&/span&&span class=&p&&}]&/span&&span class=&w&&&/span&
&/code&&/pre&&/div&
(*多项式展开*)
Fold[Expand[(#/.x-&x+#2) (#/.x-&x-#2)]&,x,Sqrt@{2,3,5,7,11}]
Block[{p=Sqrt@{2,3,5,7,11},len},
len=Length@p;ArrayReshape[x-Tuples[{-1,1},len].p,Array[2&,len]]]//.{a_,b_}:&Expand[a*b]
(* 分解因式无可奉告 *)
(*最小多项式*)
歪。&br&借用高票答案的图。&br&工具:迷萌的mathematica&br&&img src=&/790c57ec0fa010aaa7726b_b.png& data-rawwidth=&747& data-rawheight=&246& class=&origin_image zh-lightbox-thumb& width=&747& data-original=&/790c57ec0fa010aaa7726b_r.png&&效果:&img src=&/9eb39d5b68e8e52ca99db81dc27cd949_b.png& data-rawwidth=&897& data-rawheight=&730& class=&origin_image zh-lightbox-thumb& width=&897& data-original=&/9eb39d5b68e8e52ca99db81dc27cd949_r.png&&&br&&div class=&highlight&&&pre&&code class=&language-text&&imgdata = ImageData[ColorConvert[RemoveBackground[], &Grayscale&]] /. {x_, y_} -&
pointpos =
Select[Position[imgdata, _?(# & 0.77 &)], Mod[#[[2]], 5] == 0 &];
Graphics[{PointSize[0.007 (1 - imgdata[[#[[1]], #[[2]]]])],
Point@#} & /@ pointpos]
&/code&&/pre&&/div&
歪。 借用高票答案的图。 工具:迷萌的mathematica 效果: imgdata = ImageData[ColorConvert[RemoveBackground[], "Grayscale"]] /. {x_, y_} -&
pointpos =
Select[Position[imgdata, _?(# & 0.77 &)], Mod[#[[2]], 5] == 0 &];
Graphics[{PointSiz…
Mathematica 完全可以写的优雅,很多情况下可读性远高于 python, C。&br&Mathematica 是个连 词法、语法、语义,甚至部分 IDE 都可以自行定制的框架,原则上你完全可以把语法改成几乎任何你想要的样子。&br&建议看下官方文档的一下条目:MakeBoxes,
MakeExpression, TemplateBox。再学下 Notation Package,KeyEventTranslations(非文档化)连输入方式都可以定制了。典型的应用比如张量指标。&br&&br&就你这个例子而言,还不需要这些黑魔法,搞清楚 grid 怎么输入就行了。至于嵌套函数,后面写一串 // 就行了,可读性至少比 C 里一堆 ((),((,((,))))) 强吧。&br&&br&C, python 这种一维纯 text 语言才真是上个世纪的。&br&&br&背景相关:精通汇编,C,Mathematica&br&---------------------------------------&br&&img src=&/dbd8adb8c52ffd1f20e8d8_b.png& data-rawheight=&748& data-rawwidth=&727& class=&origin_image zh-lightbox-thumb& width=&727& data-original=&/dbd8adb8c52ffd1f20e8d8_r.png&&&br&&br&想象一下 C + WinAPI 要写个类似的东西会是啥样。。
Mathematica 完全可以写的优雅,很多情况下可读性远高于 python, C。 Mathematica 是个连 词法、语法、语义,甚至部分 IDE 都可以自行定制的框架,原则上你完全可以把语法改成几乎任何你想要的样子。 建议看下官方文档的一下条目:MakeBoxes, MakeExpressio…
如果只是一次性的中间计算步骤,可以直接用 Wolfram|Alpha &a href=&///?target=http%3A///input/%3Ft%3Dcrmtb01%26f%3Dob%26i%3Dsolve%F%282%255C%255BPi%255D%29%253D%253DIm%255BSqrt%255B10.9%252BI& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&偷个懒&i class=&icon-external&&&/i&&/a&。&br&&br&Mathematica 里自己写的话,我找到一个法子:设 z = 10.9 + i*x, 然后解 z:&br&&div class=&highlight&&&pre&&code class=&language-text&&In[57]:= Solve[{0.1/(2 \[Pi]) == Im[Sqrt[z]],
Re[z] == 10.9}, z, Complexes]
During evaluation of In[57]:= Solve::ratnz: Solve was unable to solve the system with inexact coefficients. The answer was obtained by solving a corresponding exact system and numericizing the result. &&
Out[57]= {{z -& 10.9 + 0.105092 I}}
&/code&&/pre&&/div&&br&先试了几种都不好用:&br&&br&&br&&div class=&highlight&&&pre&&code class=&language-text&&In[58]:= Assuming[Element[x, Reals],
Solve[0.1/(2 \[Pi]) == Im[Sqrt[10.9 + I*x]], x]]
During evaluation of In[58]:= Solve::fulldim: The solution set contains a full-d use Reduce for complete solution information. &&
During evaluation of In[58]:= Solve::ratnz: Solve was unable to solve the system with inexact coefficients. The answer was obtained by solving a corresponding exact system and numericizing the result. &&
Out[58]= {{}}
In[59]:= Reduce[0.1/(2 \[Pi]) == Im[Sqrt[10.9 + I*x]], x, Reals]
During evaluation of In[59]:= Reduce::nddc: The system 0.0159155==Im[Sqrt[10.9 +I x]] contains a nonreal constant I. With the domain Reals specified, all constants should be real. &&
Out[59]= Reduce[0.0159155 == Im[Sqrt[10.9 + I x]], x, Reals]
In[60]:= Reduce[0.1/(2 \[Pi]) == Im[Sqrt[10.9 + I*x]]]
Out[60]= Im[Sqrt[10.9 + I x]] == 0.0159155
&/code&&/pre&&/div&&br&可能得分成实部虚部才好做。&br&&br&&br&&b&补充:&/b&&br&问过高人后得解:&br&&div class=&highlight&&&pre&&code class=&language-text&&In[67]:= Solve[
TrigToExp@
ComplexExpand[1/10/(2 \[Pi]) == Im[Sqrt[109/10 + I*x]],
TargetFunctions -& {Re, Im}], x]
Out[67]= {{x -& Sqrt[1 + 4360 \[Pi]^2]/(200 \[Pi]^2)}}
&/code&&/pre&&/div&&br&&br&求更好的理解的话,估计得多看看 TrigToExp,&br&ComplexExpand,TargetFunctions 这几个函数/符号的文档,并且看看中间结果。
如果只是一次性的中间计算步骤,可以直接用 Wolfram|Alpha 。 Mathematica 里自己写的话,我找到一个法子:设 z = 10.9 + i*x, 然后解 z: In[57]:= Solve[{0.1/(2 \[Pi]) == Im[Sqrt[z]], Re[z] == 10.9}, z, Complexes]
During evaluation of In[57…
&div class=&highlight&&&pre&&code class=&language-text&&V[n_] := Integrate[1, Sequence@@Inner[{#1, 0, #2} &, x /@ Range[n],
Sqrt@FoldList[#1 - #2^2 &, 1, x /@ Range[n - 1]], List]] * 2^n
&/code&&/pre&&/div&随便写了个用n重积分计算n维单位球体积的函数,没什么效率可言,大致感受一下对多重积分的处理方式即可&br&其中不了解的函数可以查下帮助
V[n_] := Integrate[1, Sequence@@Inner[{#1, 0, #2} &, x /@ Range[n],
Sqrt@FoldList[#1 - #2^2 &, 1, x /@ Range[n - 1]], List]] * 2^n随便写了个用n重积分计算n维单位球体积的函数,没什么效率可言,大致感受一下对多重积分的处理方式即可 其中不了…
因为在Mathematica中使用循环确实是低效的。。。。。。&br&深层次的原因涉及到Mathematica的底层实现所以我不太懂,但是至少从下面几个例子可以看出Mathematica里确实有很多比循环更好的方法&br&&ol&&li&&b&求和&br&&/b&首先举一个最简单的求和例子,求&img src=&///equation?tex=%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%7B%5Csin%7Bi%7D%7D& alt=&\sum_{i=1}^{n}{\sin{i}}& eeimg=&1&&的值。为了测试运行时间取n=10^6&br&一个刚接触Mathematica的同学多半会这样写&br&&div class=&highlight&&&pre&&code class=&language-text&&sum = 0;
For[i = 1, i &= 10^6, i++,
sum += Sin[N@i]];
(*其中N@i的作用是把整数i转化为浮点数,类似于C里的double*)
&/code&&/pre&&/div&为了便于计时用Module封装一下,运行时间是2.13秒,如下图&br&&img src=&/f3bac4ad361_b.png& data-rawwidth=&469& data-rawheight=&194& class=&origin_image zh-lightbox-thumb& width=&469& data-original=&/f3bac4ad361_r.png&&然后一个有一定Mathematica经验的同学多半会知道同样作为循环的Do速度比For快,于是他可能会这么写&br&&div class=&highlight&&&pre&&code class=&language-text&&sum = 0;
Do[sum += Sin[N@i], {i, 1, 10^6}];
&/code&&/pre&&/div&如下图,用时1.37秒,比For快了不少&br&&img src=&/9fa39139cfdc13eec16d3a_b.png& data-rawwidth=&624& data-rawheight=&165& class=&origin_image zh-lightbox-thumb& width=&624& data-original=&/9fa39139cfdc13eec16d3a_r.png&&&br&当然了知道Do速度比For快的同学不太可能不知道Sum函数,所以上面其实是我口胡的,他应该会这么写&br&&div class=&highlight&&&pre&&code class=&language-text&&Sum[Sin[N@i], {i, 1, 10^6}]
&/code&&/pre&&/div&如下图,同样的结果,只用了不到0.06秒&br&&img src=&/25b332ca500b_b.png& data-rawwidth=&775& data-rawheight=&94& class=&origin_image zh-lightbox-thumb& width=&775& data-original=&/25b332ca500b_r.png&&&br&如果这位同学还知道Listable属性并且电脑内存不算太小的话,他也可能会这么写&br&&div class=&highlight&&&pre&&code class=&language-text&&Tr@Sin[N@Range[10^6]]
&/code&&/pre&&/div&如下图,只用了不到0.02秒,速度超过For循环的100倍&br&&img src=&/b1c4feff72f71aaace47b5a_b.png& data-rawwidth=&692& data-rawheight=&96& class=&origin_image zh-lightbox-thumb& width=&692& data-original=&/b1c4feff72f71aaace47b5a_r.png&&&br&当然了这只是一个最简单的例子,而且如果数据量更大的话最后一种方法就不能用了。但是这也足以说明在求和时用循环是低效的,无论是内置的Sum函数还是向量化运算,在效率上都远远高于循环&br&(这部分模仿了&a href=&///?target=http%3A//www.oschina.net/code/snippet_11& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&不同程序员如何编写阶乘函数&i class=&icon-external&&&/i&&/a&这篇文章,强烈推荐对Mathematica有兴趣的同学去看看)&br&&/li&&li&&b&迭代&/b&&br&接下来举一个迭代的例子,&img src=&///equation?tex=x_%7Bn%2B1%7D%3Da+x_%7Bn%7D%281-x_%7Bn%7D%29& alt=&x_{n+1}=a x_{n}(1-x_{n})& eeimg=&1&&(即&a href=&///?target=https%3A//en.wikipedia.org/wiki/Logistic_map& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Logistic map&i class=&icon-external&&&/i&&/a&),取&img src=&///equation?tex=a%3D3.5%2Cx_%7B0%7D%3D0.5& alt=&a=3.5,x_{0}=0.5& eeimg=&1&&,为了测试运行时间同样取n=10^6&br&还是先用For循环的做法&br&&div class=&highlight&&&pre&&code class=&language-text&&x = 0.5;
For[i = 1, i &= 10^6, i++,
x = 3.5 x (1 - x);
&/code&&/pre&&/div&如下图,运行时间2.06秒&br&&img src=&/bd6eeebd318d_b.png& data-rawwidth=&467& data-rawheight=&238& class=&origin_image zh-lightbox-thumb& width=&467& data-original=&/bd6eeebd318d_r.png&&(Do循环和For类似,篇幅所限这里就不写了,有兴趣的同学可以自行尝试)&br&然后看看内置的Nest函数&br&&div class=&highlight&&&pre&&code class=&language-text&&Nest[3.5 # (1 - #) &, 0.5, 10^6]
&/code&&/pre&&/div&如下图,用时0.02秒,又是将近两个数量级的效率差异&br&&img src=&/405d169a20b32d1f1aa3c395b2faddba_b.png& data-rawwidth=&794& data-rawheight=&92& class=&origin_image zh-lightbox-thumb& width=&794& data-original=&/405d169a20b32d1f1aa3c395b2faddba_r.png&&当然了Nest的使用涉及到纯函数,对于Mathematica初学者来说可能有些难以理解,而且一些比较复杂的迭代不太容易写成Nest的形式,但是在迭代时Nest(还包括Fold)的效率确实要好于循环&/li&&li&&b&遍历列表&/b&&/li&依然举一个简单的例子:求一个列表中偶数的个数。为测试生成10^6个1到10之间的随机整数&br&&div class=&highlight&&&pre&&code class=&language-text&&list = RandomInteger[{1, 10}, 10^6];
(*生成10^6个随机整数*)
&/code&&/pre&&/div&如果用For循环的话代码是这样的&br&&div class=&highlight&&&pre&&code class=&language-text&&num = 0;
For[i = 1, i &= 10^6, i++,
If[EvenQ@list[[i]], num++]
&/code&&/pre&&/div&如下图,用时1.73秒&br&&img src=&/82d1ae25e75caa2d3991_b.png& data-rawwidth=&538& data-rawheight=&281& class=&origin_image zh-lightbox-thumb& width=&538& data-original=&/82d1ae25e75caa2d3991_r.png&&&br&保留上面的思路,单纯的将For循环改为Scan (相当于没有返回结果的Map),代码如下&br&&div class=&highlight&&&pre&&code class=&language-text&&num = 0;
Scan[If[EvenQ@#, num++] &, list];
&/code&&/pre&&/div&如下图,用时0.91 秒&br&(Do循环用时1.00秒左右,篇幅所限就不传图了)&br&&img src=&/1a9e830bd2db6a263d167b0_b.png& data-rawwidth=&600& data-rawheight=&193& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/1a9e830bd2db6a263d167b0_r.png&&&br&摒弃循环的思路,用其他内置函数写&br&&div class=&highlight&&&pre&&code class=&language-text&&Count[list, _?EvenQ] // AbsoluteTiming
(*直接用Count数出list中偶数的个数*)
Count[EvenQ /@ list, True] // AbsoluteTiming
(*用Map对list中的每个数判断是否偶数,然后用Count数出结果中True的个数*)
Select[list, EvenQ] // Length // AbsoluteTiming
(*选取list中的所有偶数,然后求结果列表长度*)
Count[EvenQ@list, True] // AbsoluteTiming
(*利用EvenQ的Listable属性直接判断list的每个数是否偶数,然后数出结果中True的个数*)
Sum[Boole[EvenQ@i], {i, list}]
(*对list中的每个元素判断是否偶数,将结果相加*)
&/code&&/pre&&/div&结果如下图&br&&img src=&/bc13a89ab4c5f830ba84_b.png& data-rawwidth=&1196& data-rawheight=&785& class=&origin_image zh-lightbox-thumb& width=&1196& data-original=&/bc13a89ab4c5f830ba84_r.png&&这个遍历的例子举得不算特别恰当,但也能说明一些问题了:Mathematica中内置了许多神奇的函数,其中大部分只要使用得当效率都比循环高(而且不是一点半点)。就算非要用循环,也要记得(任何能用Do代替For的时候)&b&Do比For快&/b&,(遍历列表时)&b&Scan比Do快&/b&&li&&b&用向量(矩阵)运算代替循环&/b&&br&这个例子来自&a href=&/question//answer/& class=&internal&&如何用 Python 科学计算中的矩阵替代循环? - Kaiser 的回答&/a&,我只是把代码从Python翻译成了Mathematica而已。选这个例子是因为它有比较明确的物理意义,而且效率对比非常明显&br&代码如下&br&&div class=&highlight&&&pre&&code class=&language-text&&AbsoluteTiming[
u = unew = SparseArray[{{1, _} -& 1}, {n, n}] // N // N
For[k = 1, k &= 3000, k++,
For[i = 2, i & n, i++,
For[j = 2, j & n, j++,
unew[[i, j]] =
0.25 (u[[i + 1, j]] + u[[i - 1, j]] + u[[i, j + 1]] +
u[[i, j - 1]])
(*用三重循环,迭代3000次*)
ArrayPlot[u1, DataReversed -& True, ColorFunction -& &TemperatureMap&]
(*用ArrayPlot绘图*)
AbsoluteTiming[
u = SparseArray[{{1, _} -& 1}, {n, n}] // N // N
u[[2 ;; -2, 2 ;; -2]] =
0.25 (u[[3 ;; -1, 2 ;; -2]] + u[[1 ;; -3, 2 ;; -2]] +
u[[2 ;; -2, 3 ;; -1]] + u[[2 ;; -2, 1 ;; -3]]),
{k, 1, 3000}];
(*用矩阵运算,迭代3000次*)
ArrayPlot[u2, DataReversed -& True, ColorFunction -& &TemperatureMap&]
(*用ArrayPlot绘图*)
&/code&&/pre&&/div&运行结果For循环用时136秒,矩阵运算用时不足0.5秒,且两者答案完全一样。在算法完全相同的情况下两种写法有着超过200倍的效率差距&br&(图片太长了这里就不直接显示了,链接放在下面)&br&&a href=&///?target=http%3A///65dbf69935f_b.png& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/65d66161&/span&&span class=&invisible&&f4c674bf69935f_b.png&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&/li&&/ol&&br&===========================我是结尾的分隔线===============================&br&这个答案其实从一开始就跑题了,还写了这么长的目的就在于希望让大家切实地感受到循环的低效并安利一下Mathematica中其它高效的方法。正如&a href=&/people/spikwen& class=&internal&&wolray&/a&的答案中说的,既然选择了使用Mathematica就应该多利用些MMA独有的美妙函数,毕竟如果只是用循环的话C和Fortran之类的语言效率比MMA不知高到哪里去了。。。。。。&br&当然我也不是让大家就不用循环了,毕竟很多时候循环的直观性和易读性带来的便利远远比那点效率重要。只是希望大家在循环之前能稍稍想一下,自己的目的是不是一定要用循环?可不可以用内置函数代替循环?就像上面的几个例子,将循环换成内置函数程序的简洁性和效率都大幅提高,长此以往相信你一定会爱上MMA的~&br&&br&&br&&ul&&li&&b&题外话——关于用编译提速循环&br&&/b&在MMA中如果一定要使用循环又对效率有一定要求的话,可以选择使用编译,效率能有极大的提高。比如上面的第4个例子使用Complie编译过后的Do循环用时只有1.86秒,速度提升了将近100倍。如果电脑中有C编译器的话还可以在Compile中加入CompilationTarget -& &C&选项,速度还能有所提升。编译过后的代码如下:&br&&div class=&highlight&&&pre&&code class=&language-text&&In[10]:= cf = Compile[{{n, _Integer}, {times, _Integer}},
Module[{u},
u = ConstantArray[0., {n, n}];
u[[1]] = ConstantArray[1., n];
Do[u[[i, j]] =
0.25 (u[[i + 1, j]] + u[[i - 1, j]] + u[[i, j + 1]] +
u[[i, j - 1]]),
{i, 2, n - 1}, {j, 2, n - 1}
], {k, 1, times}];
u3 = cf[100, 3000]; // AbsoluteTiming
ArrayPlot[u3, DataReversed -& True, ColorFunction -& &TemperatureMap&]
Out[11]= {1.86055, Null}
&/code&&/pre&&/div&前3个例子也都可以通过编译提速很多,这里就不放代码了,有兴趣的同学可以自己动手试一试,如果遇到问题欢迎在评论中与我交流。&br&需要注意的是编译有很多注意事项,这里推荐一篇写的很好的教程,编译中常见的问题里面都有很好的讲解:&a href=&///?target=http%3A///forum/forum.php%3Fmod%3Dviewthread%26tid%3D371%26extra%3Dpage%253D1& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&怎样编译(Compile)/编译的通用规则/学会这6条,你也会编译&i class=&icon-external&&&/i&&/a&&br&但是一般来讲编译很麻烦,而且再怎么编译效率也很难赶上直接用C,所以个人并不特别建议MMA初学者学习编译。&/li&&/ul&
因为在Mathematica中使用循环确实是低效的。。。。。。 深层次的原因涉及到Mathematica的底层实现所以我不太懂,但是至少从下面几个例子可以看出Mathematica里确实有很多比循环更好的方法 求和 首先举一个最简单的求和例子,求\sum_{i=1}^{n}{\sin{i}}的值…
已有帐号?
无法登录?
社交帐号登录
1236 人关注
442 条内容
4487 人关注
442 条内容
709 人关注
111 条内容
1336 人关注
238 条内容
9540 人关注
555 条内容

我要回帖

更多关于 计算符号 的文章

 

随机推荐