大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先,据说Mathematica(下面简称Mma)是世界上最复杂的软件系统,我暂时也是这么认为的。。为什么?后面我会慢慢解释。
成都创新互联是一家专注于网站制作、成都网站制作与策划设计,格尔木网站建设哪家好?成都创新互联做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:格尔木等地区。格尔木做网站价格咨询:18980820575
其次,我想说的是,我为什么喜欢Mma,不仅因为它强大(因为复杂?),更因为我觉得是交互上最好的一款系统;
友好度(前篇):输入
我觉得很多人是不是都受够了各种语言(C++,Python,Matlab,JS,PHP,好吧,指的基本上是所有的语言)里面的算式输入,比如说你必须写乘号,一个算式里面又乘又加又除又指数的时候你看代码难道不难受么?感受一下。。
1
(x+2^(3+a/d^i))/sqrt(x^(y+z)*(3+3/d))
这时候你会想,如果写出来像手写那种就好了,是吧~Mma所支持的最让人喜欢的一个特性就是,公式和你手写的差不多!!
除号,开n次方,Σ求导,偏微分,积分,相乘,各种希腊字符,没错,这是一门编程语言!!不是Word或者PDF!!【顺便提醒感受一下最后一个例子】
如果有看过之前那篇《Mathematica给图片去水印》的话,就可以体会到另一件事情:图片本身就可以作为参数传进函数里面【别的语言都是先把图片保存在本地,程序设置一个img变量,imgread读取图片,然后再处理】;
再举一个例子,以前的博文《生命游戏兰顿蚂蚁》中,我从维基娘那里找到一张图片:
然后我希望得到一个二维矩阵,大小就是上面这张图的横宽格子数,如果这个格子里面是黑色,那么这个位置的值是1,否则为0,那么我可以把图片本身当做参数传进代码里面,这样就省去了保存到本地,再读取的步骤。
这种交互方式你不觉得简直人性化到极点了么?
强大
友好的交互不能体现一款软件的强大!!但是上面计算∑i=1∞1i2自动算出π26不知道让各位体会到Mma的强大没。
再举几个例子,首先是两个简单的例子:
然后再看看复杂一点的,我以前很喜欢用Mma来做很数学的课的作业是因为它算这种东西毫无压力:
再看一个例子体会一下:
这就是为什么Mma表达式计算可以完爆Matlab十万光年的原因,Again,还是没有黑Matlab的意思。。因为你不能以己之长,较人之短嘛。。
好,如果你手上有一个很强大的表达式计算工具,你会想到什么?没错,推公式/验证公式!!(某师兄怒躺一枪)第一个例子可以去看看以前的那篇倒立摆的博文的前面部分体会一下~
再随手写些例子,比如验证公式,例子虽然简单,但是强大是不言而喻的:
再比如化简公式之类的:
或者三角恒等式:
Mma自带了解大部分恒等式化简规则,但是对于有些Mma无法解读的那些,你可以自己写规则告诉它,然后再用这些规则去推别的公式,比如众所周知的,我们可以把sin(cos(x))展开成一系列贝塞尔函数的和的这种法则,写下这套规则后你就可以去推那些载波啊什么的相关公式了。【好吧,我知道这一段看懂的人不多。。所以我就不举例子了。。】
Mma的表达式支持的那么好,而且交互那么友善,自然分段函数这种东西应该毫无压力不是么?
请问你家Matlab是怎么完成分段函数的?再次重申,没有黑matlab的意思。。不信的话我换一句咯。。请问你家汇编是怎么完成分段函数的?
Mma还有一个很强大的功能,就是带单位的计算,比如说吧:
嘿,你说我大Matlab也可以实现啊,只要记住各个单位之间的比例就可以了啊,且看这个例子:
请问Matlab先生你懂什么事字符串相除,字符串相乘么?
不过单位支持是9.0版本以后的新特性了,相信装了9.0的对下面这幅图都不陌生吧:
最后再关于表达式计算我再讲一个例子,
看到没,Mma在推导公式的时候,会计算出公式成立的条件!!相反的,你也可以在输入的时候就告诉它参数的条件,这样可以在某些复杂情况下降低计算时间。
函数式编程
我一直很喜欢Python的一个原因在于它对函数式编程的支持很简洁,每次用起来我都很有成就感,比如map,reduce,filter这几个函数在做Euler Project的时候我简直爱不释手
【C++库】
PDF类库 PoDoFo
PoDoFo 是一个用来操作 PDF 文件格式的 C++ 类库。它还包含一些小工具用来解析、修改和创建 PDF 文档。
Xpdf
Xpdf是一个开放源代码的PDF档案浏览器,Xpdf 可解码LZW压缩格式并阅读加密的PDF文件。
PDF生成工具 Poppler
Poppler 是一个用来生成 PDF 的C++类库,从xpdf 继承而来。它使用了很多先进的类库例如 freetype 和 cairois 来达到更好的输出效果,同时也提供了一组命令行工具包。
JagPDF
JagPDF 提供给 C/C++ 和 Python 编程语言用来生成 PDF 文档的库。
libHaru
开源的PDF库
CLibPDF
ClibPDF是C函数库,可以直接生成PDF文件, 不需要Adobe Acrobat等工具支持.
------------------------------------------------------------------------
【JAVA库】
PDF操作类库 iText
iText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。
PDFBox
非常强悍的PDF生成和解析Java类库
jpedal
jpedal是开源纯Java的PDF文档解析库,可以用来读取PDF文档中的文字、图形。
JasperReports
JasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表。JasperReports 支持PDF、HTML、XLS、CSV和XML文件输出格式。JasperReports是当前Java开发者最常用的报表工具。
Fourfive
Fourfive是一个领先的开源Web报表解决方案,使用XML作为它的配置文件。支持集群、负载平衡、动态发布、PDF, Excel, LDAP,图表、过滤器、排序、布局定制、门户、JasperReports、Velocity模板、兼容Internet Explorer, Netscape, Mozilla, Opera。
FOP
FOP是由James Tauber发起的一个开源项目,原先的版本是利用xsl-fo将xml文件转换成pdf文件。但最新的版本它可以将xml文件转换成pdf,mif,pcl,txt等多种格式以及直接输出到打印机,并且支持使用SVG描述图形。
JFreeReport
JFreeReport是一个用来生成报表的Java类库。它为Java应用程序提供一个灵活的打印功能并支持输出到打印机和PDF, Excel, HTML和XHTML, PlainText, XML和CSV文件中。
YaHP
YaHP是一个能够把html文档转换成pdf文档的Java开源包。
PDFjet
PDFjet是一个用于动态生成PDF文档的Java类库。支持绘制点、线、方框、圆、贝塞尔曲线(Bezier Curves) 、多边形、星形、复杂路径和形状。支持unicode,文本间距调整,嵌入超链接等。它同时有Java和.NET两个版本。
vPDF
一个将RTF文档转成PDF文档的工具
【.NET组件】
--------------------------------------------------
iTextSharp
iTextSharp 是用来生成 PDF 文档的 C# 组件
PDFsharp
PDFsharp is a C# library that easily creates PDF documents on the fly. The same GDI+ like drawing routines can be used to create PDF documents, draw on the screen, or send output to any printer. PDFsharp can also modify, merge, and split existing PDF files or incorporate pages from existing PDF files into new PDF documents.
Report.NET
Report.NET 是一个功能强大且易用的用来生成 PDF 文档的 C# 组件
---------------------------------------------------------------------
【PHP】
Php Pdf Factory
一个PHP的PDF操作库。
TCPDF
TCPDF是一个用于快速生成PDF文件的PHP5函数包。TCPDF基于FPDF进行扩展和改进。支持UTF-8,Unicode,HTML和XHTML。
HTML2PDF
HTML2PDF能够把一个HTML文本转换成一个打印机友好的PDF文件。这个PHP脚本构建在FPDFPHP脚本之上。
cPdfWriter
cPdfWriter是一个能够输出PDF文档的PHP5 class。基于TCPDF,FPDF和其它相关脚本。
FPDF
FPDF这个PHP Class允许你采用纯PHP(更确切地说就是不需要使用PDFlib)来生成PDF文件。它所具有的特点包括:可选择的unit大小,页面格式和页边 距;页眉和页脚管理;自动分页;自动换行与文本自动对齐;支持JPEG与PNG图片格式;支持着色和文件超链接;支持TrueType,Type1与 encoding;支持页面压缩。...
------------------------------------------------------------------------
【Python和Ruby】
Prawn
Prawn: 用Ruby生成PDF更简捷
ReportLab
Reportlab是用python开发的生成pdf的工具包,它是一个开源软件。
PDF生成工具 pyPdf
PyPDF这是一个用于构建PDF的纯Python工具包
Java直接转C的没有。
Java转C#和C++的倒是有软件。(具体用法还要你自己研究)
比如:
1、Java语言转换器助手衔接,这个可以转C#。
2、Octopus的.NET转换器衔接,这个可以转C++或C#。
3、Tangible的Java转C#转换器衔接,有注释,方便学习,需要购买商业版才行。
4、XES的Java转C#转换器衔接,界面简单,容易上手。
5、Varycode工具衔接,在线工具,支持多语言转换(包括VB、Ruby、Python等)。