产品
产品概览
Mathematica
Mathematica 学生版
Mathematica Home Edition
Wolfram
CDF Player
(免费下载)
可计算文档格式(CDF)
web
Mathematica
grid
Mathematica
Wolfram
Workbench
Wolfram
SystemModeler
Wolfram
Finance Platform
Mathematica
附加程序包
Wolfram|Alpha 产品
解决方案
解决方案概览
工程
航空航天与国防
化学工程
控制系统
电气工程
图像处理
工业工程
材料科学
机械工程
运筹学
光学
石油工程
生物技术与医药
生物信息学
医学影像
金融、统计、商业分析
精算科学
数据分析与挖掘
计量经济学
经济学
金融工程与数学
金融风险管理
统计
软件工程、内容传递
创作与出版
界面开发
软件工程
网页开发
科学
天文学
生物科学
化学
环境科学
地球科学
社会与行为科学
设计、艺术以及娱乐
游戏设计、特殊效果及衍生艺术
教育
STEM 教育倡议
高等教育
高职高专院校
中小学教育
学生
科技
可计算文档格式(CDF)
高性能并行计算(HPC)
参见:技术指南
购买
网上商店
其它购买方式
批量许可及站点许可证
联络销售部
软件
服务
升级
培训
书籍
Merchandise
技术支持
技术支持概览
Mathematica
参考资料
知识库
学习中心
技术服务
社区与论坛
培训
查看站点是否有许可证授权
Wolfram 用户门户
公司概况
关于 Wolfram Research
新闻
活动
Wolfram 博客
合作伙伴
工作机会
Mathematica
的历史
Stephen Wolfram 主页
联系我们
公司网站
全部站点
Wolfram|Alpha
演示项目
MathWorld
Integrator
Wolfram Functions Site
Mathematica Journal
Wolfram Media
Wolfram
Tones
Wolfram Science
Stephen Wolfram
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE
DOCUMENTATION CENTER
FOR THE LATEST INFORMATION.
DOCUMENTATION CENTER SEARCH
New to
Mathematica
?
Find your learning path
»
Mathematica
>
系统界面与配置
>
调用外部程序
>
Compile
>
MATHEMATICA 内置符号
产生C和Fortran表达式
Mathematica 表达式的编译
The Mathematica Compiler User Guide
C Code Generation User Guide
教程 »
|
CompiledFunction
CompilationOptions
CompilationTarget
Parallelization
RuntimeAttributes
RuntimeOptions
Dispatch
Function
InterpolatingFunction
CForm
参见 »
|
调用外部程序
并行计算
时间测量和优化
调整和调试
8.0的新功能:核心语言
更多关于 »
Compile
Compile
创建一个经过编译的函数,已知
的数值对
expr
求值.
Compile
假定
的类型与
匹配.
Compile
假定
是秩为
的对象数组,每个对象的类型都与
匹配.
Compile
假定
expr
中匹配
的子表达式的类型与
匹配.
更多信息
由
Compile
处理的类型是:
_Integer
机器整数
_Real
机器精度的近似实数(缺省)
_Complex
机器精度近似复数
True
|
False
逻辑变量
作为经过编译的函数的输入给出的嵌套列表必须是全数值数组.
Compile
处理数值函数、矩阵运算、程序式编程结构、列表操作函数以及函数式编程结构等等.
Compile
生成
CompiledFunction
对象.
经过编译的代码处理数值精度和局部变量的方式与普通的
Mathematica
代码不同.
如果不能用经过编译的代码对有特殊参数的经过编译的函数求值,则使用普通的
Mathematica
代码代替.
普通
Mathematica
代码可以从经过编译的代码内部调用. 由
Mathematica
代码获得的结果假设是近似实数除非特别指明,否则由
Compile
的第三个参数指定.
用
Compile
计算的对象的次数和次序可能和普通的
Mathematica
代码不同.
Compile
有属性
HoldAll
,在默认情况下在编译前并不进行计算.
可以使用
Compile
[
...
,
Evaluate
[
expr
]]
指定
expr
应当在编译前进行符号性计算.
可以给出下列选项:
CompilationOptions
Automatic
编译过程的选项
CompilationTarget
$CompilationTarget
代码产生的目标运行时间
Parallelization
Automatic
经过编译的函数执行的并行控制
RuntimeAttributes
{}
经过
编译的函数的计算属性
RuntimeOptions
Automatic
经过编译的函数的运行时间选项
范例
关闭所有单元
例
(1)
对于机器实数
x
,编译函数
Sin
[
x
]+
x
^2-1/(1-
x
)
:
CompiledFunction
用机器数进行计算:
绘制经过编译的函数:
对于机器实数
x
,编译函数
Sin
[
x
]+
x
^2-1/(1-
x
)
:
In[1]:=
Out[1]=
CompiledFunction
用机器数进行计算:
In[2]:=
Out[2]=
绘制经过编译的函数:
In[3]:=
Out[3]=
范围
(1)
编译函数对
进行牛顿迭代并且指出最近的根:
绘出三个根的吸引域:
选项
(10)
通过避免计算同样的结果超过一次,
Automatic
的默认设置产生效率更高的代码:
当优化水平降低,生成效率较低的代码:
下面产生 C 代码并且链接回源代码以便执行:
下面是一个更大的例子,表示C代码生成的速度优势:
默认操作运行得更慢:
可列表的经过编译的函数使用线程并行执行:
以下显示依次运行操作:
通常,
$ProcessorCount
用来确定要使用多少线程:
用户可以使用 C 代码生成和并行操作结合起来,以获得更快的操作:
以下创建一个可列表的(listable)经过编译的函数:
它以正常方式在单个输入上进行操作:
当变量包含与输入规格不匹配的列表,它线性作用于变量:
如果存在一个分支,可列表性(listability)需要定义一个函数,如下所示,使用
Function
:
可列表的经过编译的函数是等价的,但是执行得更加快速:
可列表的经过编译的函数可以并行运行,在多核机器上加速:
使用可列表属性通常比多次调用
CompiledFunction
更快:
利用并行化可以给出一个更大的加速:
结果是相同的:
对于
的牛顿方法的吸引盆的详细图示:
通常,整数算术溢出被捕获,并且计算切换到使用 bignums:
关闭溢出检查使得执行更加快速,但是结果可能是不准确的:
巧妙范例
(1)
Perlin 噪声是一种用于生成过程纹理的常见算法:
下面定义了 Perlin 噪声函数的参数,并且使用 Perlin 函数生成一个地形过程纹理:
这个噪声函数在具有不同的参数和颜色集合时可以模拟木纹效果:
用户可以把纹理应用到三维对象:
参见
CompiledFunction
CompilationOptions
CompilationTarget
Parallelization
RuntimeAttributes
RuntimeOptions
Dispatch
Function
InterpolatingFunction
CForm
教程
产生C和Fortran表达式
Mathematica
表达式的编译
The
Mathematica
Compiler User Guide
C Code Generation User Guide
更多关于
调用外部程序
并行计算
时间测量和优化
调整和调试
8.0的新功能:核心语言
相关链接
NKS|Online
(
A New Kind of Science
)
版本 2 的新功能 | 版本 8 修改功能