数学工具版FAQ
[复制链接] 浏览该主题帖声明:本FAQ的许多内容来自FangQ著名的Mathtools FAQ,他的原文请参见
http://bbs.dartmouth.edu/~fangq/MATH/FAQ/
本文是在上面的FAQ的基础上,以及版上常见的问题整理而成。由于Math-
Tools版的问题常常具有大量的重复性,很容易导致大量的重复劳动(事实
上,最近jpg转eps的问题便是这个FAQ最直接的动因)。这个FAQ便是为
了尽量防止这种重复劳动,并使提问者能尽快获得问题的答案而设立的。初
次设FAQ,以及个人水平所限,总有许多遗漏之处,希望今后的MathTools版
务们将其整理得更加方便、实用:)
==========================================================
目 录
==========================================================
第一章、一般问题
1).数学软件的主要分类有哪些?各有什么特点?
2).什么叫拟合?什么叫插值?二者的区别是什么?
3).如何生成任意分布的随机变量?
4).我有一组x,y,z值,非规则点阵,如何绘制曲面或者等高线或者插值?
5).请简要介绍一下作图软件?
==========================================================
第二章、LaTeX
1).为什么我的jpg图不能插入LaTeX文件中?
2).我只会产生jpg,bmp图,怎么产生eps图?
3).我用了Photoshop转EPS图,但EPS插图为什么显示"No Bounding Box"?
4).如果一定要插jpg图,还显示"No Bounding Box"怎么办?
5).为什么我的图形/表格乱跑?
6).我是新手,怎么学Latex?
7).我的表格特别长怎么办?
8).怎么引用公式、图、表?
9).怎么引用参考文献?
10).我想让参考文献的引用时出现在文字的右上角,怎么办?
11).怎么使用列表/枚举?
12). LaTeX如何修改行间距
==========================================================
第三章、Matlab
1).如何在给定句柄的axis里绘图?
2). 在Matlab中如何求最值点?如何求一维数组的极值?
3).Matlab中如何作线性拟合/线性回归/多元线性回归?
4) Matlab中如何作二维数据的插值?
5).Matlab中如何绘制三维数据阵?
6).Matlab中如何计算程序运行的时间?
7).Matlab中为什么只能在小数点后显示四位?
8). Matlab如何在命令窗口按照格式输出?
9).如何在Matlab中画隐函数曲线?
10).Matlab中什么函数可以删除矩阵的某一行或列?
11).如何得到contour线上的坐标点?
12).Matlab有没有求矩阵行数/列数/维数的函数?
13).Matlab中如何中断运算?
14).在Matlab中debug的时候能否跟踪变量?
15).为什么我的Matlab程序这么慢?
16). Matlab中如何作非线性回归?
17).Matlab中,函数里面怎样使用基本工作空间中的变量?为什么inline函数不
能使用外面的变量?
18).请推荐一下Matlab的教材?
==========================================================
第四章、Mathematica
1).Mathematica 可以定义变量为实数么?
2).Mathematica中如何中断运算?
3).Mathematica中如何对离散点作积分?
4).请推荐Mathematica参考书
==========================================================
第五章、高级编程语言(C,C++,FORTRAN)
1).如何在Visual Fortran中画图?
2).如何在Visual Fortran中使用LAPACK?
3).如何在各种平台上编译含有Lapack的Fortran程序?
==========================================================
==========================================================
正 文
==========================================================
第一章、一般问题
==========================================================
1) 数学软件的主要分类有哪些?各有什么特点?
数学软件从功能上分类可以分为通用数学软件包和专业数学软件包,
通用数学包功能比较完备,包括各种数学、数值计算、丰富的数学函
数、特殊函数、绘图函数、用户图形届面交互功能,与其他软件和语
言的接口及庞大的外挂函数库机制(工具箱)。常见的通用数学软件包
包括Matlab和Mathematica和Maple,其中Matlab以数值计算见
长,Mathematica和Maple以符号运算、公式推导见长。
专用数学包包括绘图软件类(MathCAD,Tecplot,IDL,Surfer,Origin,
SmartDraw,DSP2000),数值计算类:(Matcom, IDL,
DataFit,S-Spline,Lindo,Lingo,O-Matrix,Scilab,Octave), 数值计算
库(linpack/lapack/BLAS/GERMS/IMSL/CXML), 有限元计算类(ANSYS,
MARC,PARSTRAN, FLUENT, FEMLAB,FlexPDE,Algor,COSMOS,
ABAQUS,ADINA),计算化学(Gaussian98,Spartan,ADF2000,ChemOffice),
数理统计类(GAUSS,SPSS,SAS, Splus,statistica,minitab), 数学公式
排版类(MathType,MikTeX,Scientific Workplace,Scientific Nootbook)
上述分类比较笼统,很多软件的功能也有交叉,经验和篇幅限制,不
能逐一而论。
==========================================================
2).什么叫拟合?什么叫插值?二者的区别是什么?
插值和拟合都是函数逼近或者数值逼近的重要组成部分
他们的共同点都是通过已知一些离散点集M上的约束,求取一个定义
在连续集合S(M包含于S)的未知连续函数,从而达到获取整体规律的
目的,即通过"窥几斑"来达到"知全豹"。
简单的讲,所谓拟合是指已知某函数的若干离散函数值{f1,f2,…,fn},通
过调整该函数中若干待定系数f(λ1, λ2,…,λ3), 使得该函数与已知点集的
差别(最小二乘意义)最小。如果待定函数是线性,就叫线性拟合或者
线性回归(主要在统计中),否则叫作非线性拟合或者非线性回归。表
达式也可以是分段函数,这种情况下叫作样条拟合。
而插值是指已知某函数的在若干离散点上的函数值或者导数信息,通
过求解该函数中待定形式的插值函数以及待定系数,使得该函数在给
定离散点上满足约束。插值函数又叫作基函数,如果该基函数定义在
整个定义域上,叫作全域基,否则叫作分域基。如果约束条件中只有
函数值的约束,叫作Lagrange插值,否则叫作Hermite插值。
从几何意义上将,拟合是给定了空间中的一些点,找到一个已知形式
未知参数的连续曲面来最大限度地逼近这些点;而插值是找到一个(
或几个分片光滑的)连续曲面来穿过这些点。
==========================================================
3) 如何生成任意分布的随机变量?
首先要生成一个平均分布的伪随机数a
最简单的一种算法是同余法:
y(n+1)=a*y(n) mod M
其中(M, a) 常见的一组取值为(2^31-1= 2147483647, 7^5=16807),可以
生成[0~M-1]上的随机数,通过线性变换可以得到0~1上的均匀随机数
如果你需要产生概率分布函数(PDF)为f(x)的一维随机变量,首先计算
它的概率累积函数(PCF) F(x)=Integrate[f(t),{t,0,x}],则F^-1(y)
既为所需要的随机变量。其中F^-1为PCF的反函数,y为一个[0~1]上的
平均分布随机变量。对于复杂的PDF无法求解反函数的,可以在资料上
查找"变换抽样法"。
==========================================================
4) 我有一组x,y,z值,非规则点阵,如何绘制曲面或者等高线或者插值?
1.如果你使用matlab,有如下四种解决办法
1.1:
tri=delaunay(x,y);
trimesh(tri,x,y,z); or trisurf(tri,x,y,z);
1.2: 如果你想得到更加精细和光滑的曲线,而且想绘制coutour
则需要用griddata()插值:
[xi,yi]=meshgrid(min(x):dx:max(x),min(y):dy:max(y));
[xi,yi,zi]=griddata(x,y,z,xi,yi,'cubic');
contourf(xi,yi,zi,20);
1.3: 如果你的matlab安装有PDE Toolbox,可以使用pdeplot(),参见帮助
1.4: 如果你可以连接国外,可以使用MIT的Kirill K. Pankratov写的SaGA
工具箱,下载地址在:
http://www.ai-geostats.org/software/Geostats_software/SAGA.htm
http://globec.whoi.edu/software/saga/
2.如果你使用Tecplot
1.先将三列数据按照顺序保存在一个文本文件中
data.dat文件格式为
x1 y1 z1
x2 y2 z2
...
2. Tecplot菜单File\Load Data file,在左上角选择2D
3. 选中zone,菜单Data\Triangulate
4. 双击该zone,将mesh掩藏掉,把contour打开,然后在
左上角选择3D
5. 如果想插值,先创建一个更细的网格,然后用data菜单中
Interpolation
3.如果你使用Mathematica
data={{x1,y1,z1},{x2,y2,z2},......};
fun=Interpolation[data];
Plot3D[fun[x,y],{x,xmin,xmax},{y,ymin,ymax}];
ContourPlot[fun[x,y],{x,xmin,xmax},{y,ymin,ymax}];
当然,其他还有很多绘图工具,有待补充
==========================================================
5). 请简要介绍一下作图软件?
很多软件都有画图的功能,大杂烩的比如matlab,mathematica,专业的
如tecplot,opendx,origin等等。
如果要细分的话,一维基本都还可以,matlab完全可以应付。
比较专业的二维图tecplot也很不错,不过收费。
三维的则专业分化更强,对比较专业的科学工程计算用户来说opendx是比较好的
选择,
tecplot当然也不错,matlab功能就稍稍欠一点了。
==========================================================
第二章、LaTeX
==========================================================
1).为什么我的jpg图不能插入LaTeX文件中?
如果产生dvi文件,也就是通常的latex命令的话,jpg,bmp等格式是不
能直接插入latex中的,必须使用专门的eps图。产生eps图的方法见2).
如果是直接产生pdf文件,也就是直接使用pdflatex命令(如做幻灯片,
用beamer包时就会用pdflatex),这时才可以插入jpg图片。
==========================================================
2).我只会产生jpg,bmp图,怎么产生eps图?
如果你喜欢的话(其实是强力推荐的),那么可以下载一套免费的
ImageMagicK软件,里面的convert命令可以解决,如有a.jpg
convert a.jpg a.eps
就搞定了,非常的方便。
如果觉得ImageMagicK不熟悉,那么需要用一点illegal的手段(其实也就是用
一下photoshop)。方法是:
打开a.jpg->另存为->Photoshop EPS->预览选项设为“无”->
产生EPS文件
==========================================================
3).我用了Photoshop转EPS图,但EPS插图为什么显示"No Bounding Box"?
在保存eps文件的时候,预览选项设为“无”。
==========================================================
4).如果一定要插jpg图,还显示"No Bounding Box"怎么办?
jpg图也要一个bounding box的,这个box是为了让latex知道图的边界在哪,
ctex套装(windows)和TexLive (Linux)都提供了一个小软件ebb
ebb -b a.jpg
就可以产生所需的bounding box文件,再插图就可以了。
==========================================================
5).为什么我的图形/表格乱跑?
latex不是word这种“所见即所得”的工具,而是一种段落式的结构。latex
在原则上是希望自动安排图表的位置的,当然,我们也可以在某种程度上
控制浮动体的位置。最常见的是要求图表在当前位置上,这时对图为
\begin{figure}[h]
\end{figure}
对表为
\begin{table}[h]
\end{figure}
更详尽的关于浮动体的论述请见如"latex2e常用宏包使用指南"等书,或google
。
==========================================================
6).我是新手,怎么学Latex?
latex不是一夜就能全部掌握的。在初始学习阶段应该找一个比较熟悉latex的人
,
给一个模板,对必要的东西指点一下,然后自己鼓捣一下午,试着写一篇文章
练一下基本结构。当稍微有一点感觉(也就是能顺利的编译通过一个还算像样
的文章段落后),拿一本书开始系统学习,我认为
邓建松的Latex科技排版指南
是很不错的书,等有一点经验后
Latex2e及常用宏包使用指南
也是很有用的。
==========================================================
7).我的表格特别长怎么办?
使用longtable宏包。
==========================================================
8).怎么引用公式、图、表?
在公式、图、表的位置上写\label{...},在需要引用的位置上\ref{...}
初学者建议:公式、图、表的编号应该分开,不要全部混在一起,如
公式用{eqn:xxx}
图用{fig:xxx}
表用{tab:xxx}
定理用{thm:xxx}
定义用{defn:xxx}
养成良好的习惯,在写长的论文或书时你会受用不尽。
==========================================================
9).怎么引用参考文献?
\cite{xxx}
==========================================================
10).我想让参考文献的引用时出现在文字的右上角,怎么办?
\let\supercite=\cite
\renewcommand\cite[1]{\textsuperscript{\supercite{#1}}}
==========================================================
11).怎么使用列表/枚举?
使用\begin{enumeration}环境是列表,前面有1. 2.这种编号,
\begin{itemize}环境是枚举,没有数字编号,而是\bullet号(小圆点)。
==========================================================
12). LaTeX如何修改行间距
\renewcommand{\baselinestretch}{**}
把行距改为默认行距的**倍。
==========================================================
第三章、Matlab
==========================================================
1).如何在给定句柄的axis里绘图?
plot(data,'parent',haxis);
或者
hbar=bar(data);
set(hbar,'parent',haxis);
==========================================================
2). 在Matlab中如何求最值点?如何求一维数组的极值?
最值:
一维或多维数组最值用max(data(:))
如果想返回最值所在的位置,用[Y,I]=max(data)
极值:
data是你的数据,
find(diff(sign(diff(data)))==-2)+1
找到极大值的位置
find(diff(sign(diff(data)))==2)+1
找到极小值的位置
data(find(diff(sign(diff(data)))==-2)+1)和
data(find(diff(sign(diff(data)))==2)+1)
返回的是极大值和极小值
==========================================================
3).Matlab中如何作线性拟合/线性回归/多元线性回归?
即用y=a*x+b来拟合一组数据{{x1,y1},{x2,y2}…{xn,yn}}
matlab中使用polyfit
x=data(:,1);
y=data(:,2);
p=polyfit(x,y,1);
p(1)为斜率a,p(2)为截距b
多元线性回归即用y=a1*x1+a2*x2+..+am*xm来拟合数据点{x1i,x2i,…xmi,yi}
(i=1~n)
|x11,x21,…xm1|
A=|x12,x22,…xm2|
|…………… |
|x1n,x2n,…xmn|
Y={y1,y2,y3,…,yn}'
则系数{a1,a2,…,am}'=pinv(A)*Y
在matlab中使用
coeff=A\Y
则可以得到最小二乘意义上的拟合系数
==========================================================
4) Matlab中如何作二维数据的插值?
对于一维、二维、三维规则数据点阵使用interp1/interp2/interp3,
二维、三维非规则数据用griddata/griddata3
==========================================================
5).Matlab中如何绘制三维数据阵?
如果使用matlab,打开帮助窗口,在目录树上找到
MATLAB\Using Matlab\
3-D Visualization: Volume Visualization Techniques
如果图形复杂,建议使用Tecplot,参见Tecplot手册中数据格式,将你
的三维数据读入Tecplot,双击zone,可以设置mesh/contour/surface
transparency等。
在Field菜单中有3D Iso-surface Details和3D Slice Details,可以绘制等值
面和任意平面的截面图。
==========================================================
6).Matlab中如何计算程序运行的时间?
tic
your_code;
toc
或者使用
t=cputime;
your_operation;
cputime-t
==========================================================
7).Matlab中为什么只能在小数点后显示四位?
用format命令来改变命令窗口数字的显示格式和精度,但不会影
响matlab的计算精度,matlab的矩阵运算默认都是双精度浮点型运算。
==========================================================
8). Matlab如何在命令窗口按照格式输出?
fprintf(1,"your_format_string",var1,var2,…);
==========================================================
9).如何在Matlab中画隐函数曲线?
在http://www.mathworks.com/matlabcentral/fileexchange/index.jsp
查找implicit,会找到一个Arthur Jutan写的implot.m
Mathematica中绘制隐函数用ImplicitPlot[]
或者ImplicitPlot3D[]
Maple中为implicitplot(),implicitplot3d()
参见
http://engineering.dartmouth.edu/~fangq/MATH/download/source/
ImplicitPlot3D.htm
==========================================================
10).Matlab中什么函数可以删除矩阵的某一行或列?
A(j,:)=[]; %删除A的第j行
A(:,i)=[]; %删除A的第i列
==========================================================
11).如何得到contour线上的坐标点?
lcount=5;
[c,h]=contour(peaks,lcount);
x=get(h,'xdata');
y=get(h,'ydata');
这里得到的x和y都是cell数组,用x{1}/y{1}来得到每条线上的坐标对,
注意,每条线的最后一个数据是NaN
==========================================================
12).Matlab有没有求矩阵行数/列数/维数的函数?
ndims(A)返回A的维数
size(A)返回A各个维的最大元素个数
length(A)返回max(size(A))
[m,n]=size(A)如果A是二维数组,返回行数和列数
nnz(A)返回A中非0元素的个数
==========================================================
13).Matlab中如何中断运算?
在命令窗口按Ctrl+C,在UNIX/LINUX会立即中断运算,在Windows可
能由于操作系统的原因,有时会出现死机和等待的情况。
==========================================================
14).在Matlab中debug的时候能否跟踪变量?
可以,如果使用medit,设置断点后可以用鼠标移到所看的变量上,显
示当前的值,或者在命令窗口打该变量名直接回车。如果在代码中实
现调试断点等功能,参
见dbstop,dbcont,dbstep,dbclear,dbtype,dbstack,dbup,dbdown,dbstatus,
dbquit
==========================================================
15).为什么我的Matlab程序这么慢?
我们工学院的收发室的门上贴着一张小纸条,写的是
"Our policy is always blaming the computer"
大多数的人在遇到问题的时候,总是责备计算机如何如何,别人如何
如何,其实,最最主要的因素是在于自己。
一个程序运行快慢,有很多因素决定,最主要的是算法,简炼而优美
的的数学公式胜过100遍的优化。能从算法上改进,才能比别人有根
本的优势。计算机也很重要,以前我总把自己用的PC看成万能的加
以崇拜,对UNIX嗤之以鼻,结果当自己真正开始算起来,才知道差
别有多大。搞大型数值计算的,没有好的工作站或者并行系统,就输
在了起跑线上了。然后是程序的优化,看看变量是否占用太多内存,
看看是否有功能重复的模块或者计算,经常的是用牺牲内存来换取速
度,具体取舍,具体需要来决定。用profile看看哪些语句占用时间最
多,然后把核心部分进行优化。
如果是使用Matlab,使用vectorization和矩阵整体操作的代码要比大量
的for循环快很多,eval/inline函数如果出现在核心循环,也会让速度下
降几时倍的。
==========================================================
16). Matlab中如何作非线性回归?
请参考
http://www.mathworks.com/support/solutions/data/10652.shtml
matlab默认只提供了多项式拟合的函数polyfit,对于其他稍微简单
一点的拟合,如标准的指数、对数、高阶多项式拟合,都有解析公式,参见:
http://mathworld.wolfram.com/LeastSquaresFitting.html
对于更加复杂的非线性函数,建议使用Mathematica或者DataFit
Mathematica中提供了Fit[],以及
<< Statistics`NonlinearFit`
NonlinearFit[],NonlinearRegress[]
可以拟合任意复杂的表达式。
DataFit可以自定义拟合模型,适用于复杂系统的拟合。
==========================================================
17).Matlab中,函数里面怎样使用基本工作空间中的变量?为什么inline函数不
能使用外面的变量?
函数只能存取它自己的工作空间中的变量。要在函数之间,或者函数与基本
工作空间之间传递数值,尝试以下方法:
1、使用全局变量,用global定义全局变量
2、使用evalin:
evalin('base','v=1;'); %在基本工作空间中执行命令:v=1;
evalin('caller','v=1;');%在调用该函数的函数的工作空间中
执行命令:v=1;
3、参数传递
4、使用assignin:
assignin('base','v',v); %将v赋给基本工作空间中的变量v;
assignin('caller','v',v); %将v赋给调用者工作空间中的变量v;
inline函数里面只能出现函数和参数,要传递一个可变系数,需要用evalin。
如:fzero('f(evalin(''base'',''x1(i)''),x3)',求解区间)
==========================================================
18).请推荐一下Matlab的教材?
最好的当然是Matlab的help,但对于初学者来讲,help博大精深,很难一下子
掌握。张志涌的“精通Matlab”是很好的教材,虽然有点厚,但把基础的看了,
再具体问题具体看是很不错的选择,现在好像已经有7.0版了,其实原来的6.5版
就挺不错了。其它的Matlab书有很多,但注意不要买那些纯翻译help的书。
==========================================================
第四章、Mathematica
==========================================================
1).Mathematica 可以定义变量为实数么?
1. 在Simplify/FullSimplify可以使用\[Element],如
Simplify[Re[a+b*I],a\[Element]Reals]
2. 可以使用ComplexExpand[]来展开表达式,默认:符号均为实数:
Unprotect[Abs];
Abs[x_] := Sqrt[Re[x]^2 + Im[x]^2];
ComplexExpand[Abs[a + b*I], a]
3. 使用/:,对符号关联相应的转换规则
x /: Im[x] = 0;
x /: Re[x] = x;
y /: Im[y] = 0;
y /: Re[y] = y;
Re[x+y*I]
==========================================================
2).Mathematica中如何中断运算?
Alt+. 直接终止当前执行的运算
Alt+, 询问是否终止或者继续
如果不能终止,用菜单Kernel\Quit Kernal\Local来退出当前运算
==========================================================
3).Mathematica中如何对离散点作积分?
离散的点通过插值或者拟合就可以得到连续的函数,然后可以对该函
数求积分和微分。下面是一个例子:
f[x_] := NIntegrate[Sin[Cos[x]], {x, 0, a}];
data = Table[{a, f[x]}, {a, 0, 10}];
expr = Interpolation[data];
Plot[expr[a], {a, 0, 10}];
Plot[Evaluate[D[expr[a], a]], {a, 0, 10}]
如果想实现Matlab中的cumsum的功能:
Drop[FoldList[Plus, 0, {a1,a2,…,an}], 1]
==========================================================
4).请推荐Mathematica参考书
我迄今为止看到的最好的一本就是Mathematica自己带的帮助里面
的The Mathematica Book,内容全面,循序渐近,非常容易学习使用
。其他所见到的一些中文书籍基本上都是直接翻译帮助的内容,没有
什么新意。
==========================================================
第五章、高级编程语言(C,C++,FORTRAN)
==========================================================
1).如何在Visual Fortran中画图?
可以使用ArrayVisualizer提供的函数,非常方便,一两句话就可以绘图
,缺点是系统必须安装有ArrayVisualizer,而且只能绘制比较简单的图
形。
如果要用Windows的绘图API,请在超星阅读器上查找邓巍巍,王越男
编辑的Visual Fortran编程指南一书的第八章、第九章
==========================================================
2).如何在Visual Fortran中使用LAPACK?
(1)、CVF所包含的LAPACK函数库并不完全,在"\Microsoft
Visual Studio\DF98\CXML\DOC\Cxmlref.pdf"中的Table 8-3和
8-4中列出了大多数LAPACK DRIVER ROUTINE。但这并不表示CVF中
就能直接调用这么多routine,具体哪些能调用可以参
见
\Microsoft Visual Studio\DF98\CXML\INCLUDE\LAPACK_{S、D、
C、Z}_INCLUDE.F90 等四个文件。他们中有的就可以直接
在CVF中调用,没有的就要参见 (3)。
(2)、CVF的环境变量设置。为了调用CVF的LAPACK函数,需要
将一些*.lib函数调入库函数的搜索范围,也需要设置CVF为查找
这些库函数所需要的搜索路径。具体方法是:
I project->setting->link->category->input->在object/library
modules 框内加入cxml.lib cxmldll.lib 两个文件名,中间以空格间隔。
II 分别在"tools->options->directories->"下的include files和library
files加上……\Microsoft Visual Studio\DF98\CXML\Include
和……\Microsoft Visual Studio\DF98\CXML\Lib 的搜索路径。Ⅲ 如
果在做了以上两个设置之后,程序仍然会出编译或连接错误,
可以做以下两项尝试(当然也可以不管错没错事先就做好):
一、在"project->setting->fortran->libraries"中勾上->use cxml选项
二、在调用LAPACK函数的程序单元内的所有变量定义和可执
行语句之前加上: include 'cxml_include.f90' 语句。
(3)、如果你通过各种途径查到LAPACK有某个函
数,但LAPACK_{S、D、C、Z}_INCLUDE.F90四个文件中又没有
,那就请到http://www.cs.colorado.edu/~lapack/网页下,在网页
左边选择你要的是何种routine。然后依提示逐步找到你所要的
算法源程序文件。注意如果选择"with dependencies"是不能下载
的,要选择"without dependencies"。当然也可以
到http://www.cs.colorado.edu/~lapack/packages.html将所有
的LAPACK都下载下来。
然后你就可以将你下载下来的源程序
拷贝到你的程序中作为一个subroutine了。
==========================================================
3).如何在各种平台上编译含有Lapack的Fortran程序?
在Windows,使用Visual Fortran
df yoursource.f90 -o exename /cxml
df /optimize:5 /fast yoursource /link CXML.LIB /stack:4000000
在LINUX中,使用
-llapack 编译指令
使用Compaq Alpha Tru64的f90,使用
f90 yoursource.f90 -o exename -lcxml
在SGI IRIX上使用MIPSpro 7 f90编译器,使用
f90 yoursource.f90 -o exename -lcomplib.sgimath
Sun Solaris/IBM AIX上还没有试过
如果使用Intel Math Kernel Library(MKL),可以使用如下链接指令:
Compile and Link Flags (Pentium III/Athlon):
-L$MKL_HOME/lib/32 -lmkl_lapack32 -lmkl_p3 -lpthread (使用LAPACK)
-L$MKL_HOME/lib/32 -lmkl -lmkl_p3 -lpthread (使用BLAS)
Compile and Link Flags (Pentium 4):
-L$MKL_HOME/lib/32 -lmkl_lapack32 -lmkl_p4 -lpthread (使用LAPACK)
-L$MKL_HOME/lib/32 -lmkl -lmkl_p4 -lpthread (使用BLAS)
==========================================================
签名档
毕业前,能多学一点就多学一点吧