数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 28146|回复: 6

数学工具FAQ

  [复制链接]
发表于 2008-9-4 15:50:32 | 显示全部楼层 |阅读模式
时间飞逝,转眼间离开数模已经快4年了,然后正如一代几何大师陈省身先生说的那样数学无处不在,是的。
虽然离开了竞赛,但是看到数模竞赛越来越受到关注,甚感欣慰,也为那些探索求是的师弟师妹的勇气和决
心所感动,我在搜索一些资料的过程中,无意中发现了如下的帖子,浏览了一下,觉得很不错,于是就转载
过来以供数模朋友们参考,由于不是本人原创,在此对原作者表示感谢!也希望大家能从中得到一些启发!

海岩秋沙
2008年9月4日
***************************************************************************************************************

数学工具FAQ 【1】from:http://blog.chinaunix.net/u1/38577/showart_299920.html
数学工具FAQ 【2】from:http://blog.chinaunix.net/u1/38577/showart_299922.html

[转载] 数学工具FAQ 【1】

#############################################################################

#                             数学工具FAQ                                   #

#                  MathTools Frequently Asked Questions                     #

#############################################################################

#############################################################################

文档名称: 数学工具常见问题集
预期发布时间: 2002年11月23日星期六
语    言: 简体中文
版本编号: $Id: MathTools.FAQ.CN 1.0 Rev. 4 2002/11/23 15:59:16 QianqianFang$

本文档由FangQ(Qianqian.Fang@dartmouth.edu)维护
作者主页: http://bbs.dartmouth.edu/~fangq/
任何建议、意见或参与FAQ维护,请到如下页面
http://bbs.dartmouth.edu/cgi-bin/sendemail.html?subject=MathTools%20FAQ

                                 MathTools FAQ正文
>************************************************************************<
>                        第一节:一般性问题
>************************************************************************<
===================================   -  [返回]
1).关于这个FAQ
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/22]Qianqian.Fang@dartmouth.edu),2002/6/22[/email], SMTH/MathTools #
        为什么要写这个FAQ呢?简单一点,就是为了避免重复,慢慢积累,
        提高水平。
        简单问题的重复其实是BBS上学术板块的一个老问题,以前就有人提
        过,最近在水木清华的MathTools上lll又提出来,所以决定借鉴国
        外newsgroup的传统,自己动手写中文的FAQ,把那些几年前就在问、
        现在仍然在问的一些老问题全部都收录在这里,给他们画一个句号。
        等版面上没有了这些老问题,自然会有新的、难的问题出来,等这些
        问题又成为FAQ的时候,大家的水平就慢慢提高了。
        不过自己想来,其实这仍然不是长久解决这个问题的办法,这是一个
        学术传统的问题,需要大家去创造这样一种勤奋、踏实的学术大环境
        ,告诉在这样一个环境中参与交流和寻求帮助的人,当你遇到问题,
        首先要有自己钻研的精神,不要轻易地把这样锻炼自己能力的机会给
        否定掉,而去期待或者"恳求"别人的帮助来替自己寻找偷懒的理由,
        然后才是去有效地寻找资料,或者当自己考虑比较成熟的时候在公众
        论坛上提出自己的问题。
        当然,上面主要是对于你本专业的问题而言,要先思考,再提问,但
        如果非专业的,仅仅用一下就不再使用的,不妨去尽早寻求帮助的好。
        
        这个FAQ今后每个月会更新一次,最新的文档地址参见文件头。如果
        有新的问题收录,文档开头会有一个小的更新列表。原有的解答会被
        更详细和正确的解答代替,但原解答的作者信息将继续保存。
        每个问题的答复开头都有一行作者信息,格式为
        :#作者姓名或者ID(联系方式或Email地址),更新日期,发表地址#
        在本FAQ中引用WWW上获得的代码或者文档时,都将作者信息附在
        文档中,以表示对作者的尊重。
        本文档的维护原则:欢迎转载到其他BBS或学术网站,但在转载
        时请将文件头完整保留。如果仅转载文章内个别问题的回复,请将该
        回复的作者信息保留。本文档未经维护人或各问题回复的作者的许可
        ,严禁以商业目的将本文全部或者部分内容出版。本文档的维护人及
        各问题回复的作者具有文章的所有权和最终解释权。
        本文档的使用原则为免费,本文档维护人对使用本文档内容所造成的
        任何不当后果不承担任何意义上的责任,文档作者不对文档中的代码
        的安全性和正确性作任何形式的承诺。
===================================   -  [返回]
2).什么叫数学工具?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/19]Qianqian.Fang@dartmouth.edu),2002/6/19[/email], BigGreen/MathTools#
        广义的讲,我们可以把数学本身看作一种工具,她是人类认识这个纷
        繁复杂的世界的眼睛和钥匙,数学用量化和逻辑为描述事物的运动变
        化提供了统一的和严密的基础,并通过不断衍生新的数学分支来为描
        述人类所认知的日趋复杂的世界体系提供强大有力的工具。
        狭义的讲,我们这里涉及的"数学工具"除了部分数学理论和算法之外
        ,主要内容为数学软件,即通过使用计算机,进行特定数学计算或者
        数学表述来实现功能的软件。
        再狭义地讲,数学工具是水木清华和BigGreen BBS上两个版面的名字
        ,这里面聚集了很多很多认识的和不认识的热爱数学、使用数学软件
        的朋友,这个FAQ就是献给他们的。

===================================   -  [返回]
3).数学软件的主要分类有哪些?各有什么特点?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/19]Qianqian.Fang@dartmouth.edu),2002/6/19[/email], BigGreen/MathTools#
        数学软件从功能上分类可以分为通用数学软件包和专业数学软件包,
        通用数学包功能比较完备,包括各种数学、数值计算、丰富的数学函
        数、特殊函数、绘图函数、用户图形届面交互功能,与其他软件和语
        言的接口及庞大的外挂函数库机制(工具箱)。常见的通用数学软件包
        包括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)
        上述分类比较笼统,很多软件的功能也有交叉,经验和篇幅限制,不
        能逐一而论。

===================================   -  [返回]
4).什么叫拟合?什么叫插值?二者的区别是什么?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/21]Qianqian.Fang@dartmouth.edu),2002/6/21[/email], BigGreen/MathTools #
        插值和拟合都是函数逼近或者数值逼近的重要组成部分
        他们的共同点都是通过已知一些离散点集M上的约束,求取一个定义
        在连续集合S(M包含于S)的未知连续函数,从而达到获取整体规律的
        目的,即通过"窥几斑"来达到"知全豹"。
        简单的讲,所谓拟合是指已知某函数的若干离散函数值{f1,f2,…,fn},通
        过调整该函数中若干待定系数f(λ1, λ2,…,λ3), 使得该函数与已知点集的

        差别(最小二乘意义)最小。如果待定函数是线性,就叫线性拟合或者
        线性回归(主要在统计中),否则叫作非线性拟合或者非线性回归。表
        达式也可以是分段函数,这种情况下叫作样条拟合。

        而插值是指已知某函数的在若干离散点上的函数值或者导数信息,通
        过求解该函数中待定形式的插值函数以及待定系数,使得该函数在给
        定离散点上满足约束。插值函数又叫作基函数,如果该基函数定义在
        整个定义域上,叫作全域基,否则叫作分域基。如果约束条件中只有
        函数值的约束,叫作Lagrange插值,否则叫作Hermite插值。
        从几何意义上将,拟合是给定了空间中的一些点,找到一个已知形式
        未知参数的连续曲面来最大限度地逼近这些点;而插值是找到一个(
        或几个分片光滑的)连续曲面来穿过这些点。
        
        具体插值拟合的计算参见本节7和第二节6/7/9/40的回复.

===================================   -  [返回]
5).如何生成任意分布的随机变量?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/21]Qianqian.Fang@dartmouth.edu),2002/6/21[/email], BigGreen/MathTools #

        首先要生成一个平均分布的伪随机数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无法求解反函数的,可以在资料上
        查找"变换抽样法"。

===================================   -  [返回]
6).FFT输入和输出的意义是什么?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/21]Qianqian.Fang@dartmouth.edu),2002/6/21[/email], BigGreen/MathTools #

        我们可以把FFT简单地看作一个变换器,输入N+1个数,输出N+1个数
        ,但他们对应的意义不同,如果把输入当作时域,则输出为频域,表
        怔了其对应域的变化快慢。
        假设输入信号本身的频率为fc(或者说频带宽为fc),被频率为fs的冲击
        串采样(由采样定理,fs >= 2*fc),则变换前的N+1个数字对应的x
        轴为{t0,t1,…tN}={0,Ts,2*Ts,....,N*Ts} (其中Ts为1/fs,为采样周期)
        则变换后的N+1个数对应的x轴变为频率,范围为0~fs,以fs/N为间隔,
        既为频率点{0,fs/N,2*fs/N,……,fs},在matlab中如果用fftshift(fft(data))

        ,则变换后对应x轴为-fs/2~fs/2,如果满足采样定理的化,信号频带-fc~fc
        就包含在转换后的频谱里面了,就不会有失真。
        注意:变换后的数字为复数,因为其中包括了幅度的信
        息,abs(fftshift(fft(data)))为幅度,angle(fftshift(fft(data)))为相位


===================================   -  [返回]
7).我有一组x,y,z值,非规则点阵,如何绘制曲面或者等高线或者插值?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/12]Qianqian.Fang@dartmouth.edu),2002/6/12[/email], SMTH/MathTools #
        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}];
        当然,其他还有很多绘图工具,有待补充

===================================   -  [返回]
8).请问哪里能找到绘制等高线的算法?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/7/23]Qianqian.Fang@dartmouth.edu),2002/7/23[/email], SMTH/MathTools #
         在一般的计算机图形学的教材中都有常见算法的描述,下面的网址
                 有免费的C代码
                 http://members.bellatlantic.net/~vze2vrva/thesis.html
===================================   -  [返回]
9).特征值与奇异值有什么区别?
:#dimond,2002/6/25, SMTH/MathTools #
        特征值就不用说了,大家都知道。
        奇异值的定义:对于任一个复(实)矩阵A(m*n),设A^为A的共轭转置矩阵,
        即A^是n*m阶,则 A^*A (n*n阶)的特征值的非负平方根为 A 的奇异值,
        也就是A共有n个奇异值,且全部>=0.
        A^*A 是一个半正定矩阵,所以它的特征值>=0
        对于半正定的Hermit方阵而言,特征值与奇异值是一一对应的
===================================   -  [返回]
10).条件数很大(病态)的矩阵如何求逆?
:#granule,2002/7/4, SMTH/MathTools #
        有许多解法!实际上这作为数学的一个分支已经数学家
        们抽象出来研究了很多年(ill-posed problems).文献
        多的不得了。
        简单的解法就是用regularization tools.(典型的是
        Tikhonov regularization).还有许多迭代解法。
        基本思想是要加约束。
        for Ax=b, its standard Tikhonov solution is
        x=inv(trans(A)*A+alfa*I)*Trans(A)*b
        trans() means transpose; inv() is inverse;
        alfa is a positive sclar. The quality of solution
        depends on alfa directly. There is a optimal alfa
        You can refer to the relevant topics such as:
        inverse problems, ill-conditioned problems.
===================================   -  [返回]
11).什么是Gaussian拟合?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/9/23]Qianqian.Fang@dartmouth.edu),2002/9/23[/email], BigGreen/MathTools #
        高斯拟合(Gaussian Fitting)即使用形如:
     
          Gi(x)=Ai*exp((x-Bi)^2/Ci^2)
        的高斯函数对数据点集进行函数逼近的拟合方法。
        其实可以跟多项式拟合类比起来,不同的是多项式拟合是用幂函数系,
        而高斯拟合是用高斯函数系。
        使用高斯函数来进行拟合,优点在于计算积分十分简单快捷。这一点
        在很多领域都有应用,特别是计算化学。著名的化学软件Gaussian98
        就是建立在高斯基函数拟合的数学基础上的。

>************************************************************************<
>                        第二节:Matlab的常见问题
>************************************************************************<
===================================   -  [返回]
1).Matlab 6.X在Windows 2000/XP上无法启动
:#highsun,2001/3/2, SMTH/NewSoftware #
        MathWorks的解决办法虽然是针对繁体中文系统的,我试过在简体
        中文系统下一样可以用。
        http://www.mathworks.com/support/solutions/data/26985.shtml
        http://www.mathworks.com/support/solutions/data/26990.shtml
        
        Solution Number: 26990
        Date Last Modified: 2001-01-30
        Product:    MATLAB 6.0 ==> Current Version
        Platform:    Windows
        
        Problem Description
        
        Why do I encounter problems when running MATLAB 6.0 (R12) on Hebrew

        or
        Traditional Chinese (Taiwan) Windows? I try to start MATLAB but after

        the splash screen disappears, MATLAB exits.
        PLEASE NOTE: This solution only applies to MATLAB 6.0. If you have a

        similar problem with MATLAB 5.0 or the Student Edition of MATLAB 5.0,

        see solution 7213.
        
        Solution:
        
        This problem is caused by a bug in one of the font properties files

        we ship with MATLAB. The font.properties file is used by Java to map

        the standard Java font names to system fonts for a particular
        However, we made a few assumptions that do not hold for the Hebrew or

        language operating system. Traditional Chinese Windows, causing
        We have created a fixed version of the mwt.jar file that you can use

        this problem. correct this. To use the fix, first rename your mwt.jar

        to file as mwt.old. This file is found in the $MATLAB\java\jar
        directory, where $MATLAB is your MATLAB root directory. Then
        download the newer mwt.jar file from:
        
        ftp://ftp.mathworks.com/pub/tech-support/solutions/s26990
        
        and place it in your $MATLAB\java\jar directrory. Then restart
        MATLAB;this should correct the problem you're seeing.
===================================   -  [返回]
2).我有一组x,y,z值,非规则排列,如何在Matlab中绘图?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/12]Qianqian.Fang@dartmouth.edu),2002/6/12[/email], BigGreen/MathTools #
        参见第一节问题7)
        
===================================   -  [返回]
3).如何在给定句柄的axis里绘图?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/12]Qianqian.Fang@dartmouth.edu),2002/6/12[/email], SMTH/MathTools #
        plot(data,'parent',haxis);
        或者
        hbar=bar(data);
        set(hbar,'parent',haxis);

===================================   -  [返回]
4).由Matlab符号运算得到的公式怎么才能将数据代进去运算?
:#ramjet (德芙)2002/3/3, SMTH/MathTools #
        使用subs(),或先将值赋予一个符号变量,然后用eval()

===================================   -  [返回]
5).在Matlab中如何求最值点?如何求一维数组的极值?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/18]Qianqian.Fang@dartmouth.edu),2002/6/18[/email], SMTH/MathTools#
        最值:
        一维或多维数组最值用max(data()
        如果想返回最值所在的位置,用[Y,I]=max(data)
:#FangQ(Qianqian.Fang@dartmouth.edu), 2001/4/21,UESTC/Math#
        极值:
        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)
        返回的是极大值和极小值

===================================   -  [返回]
6).Matlab中如何作线性拟合/线性回归/多元线性回归?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/21]Qianqian.Fang@dartmouth.edu),2002/6/21[/email], BigGreen/MathTools #

        即用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
        则可以得到最小二乘意义上的拟合系数

===================================   -  [返回]
7).Matlab中如何作圆回归?
:#Peter Boettcher ([email=boettcher@ll.mit.edu),2002/5/16]boettcher@ll.mit.edu),2002/5/16[/email], comp.soft-sys.matlab#
        Q5.5: How can I fit a circle to a set of XY data?
        =================================================
           An elegant chunk of code to perform least-squares circle fitting

        was written by Bucher Izhak and has been floating around the
        newgroup for some time.  The first reference to it that I can
        find is in:
                 function [xc,yc,R,a] = circfit(x,y)
                 %CIRCFIT  Fits a circle in x,y plane
                 %
                 % [XC, YC, R, A] = CIRCFIT(X,Y)
                 % Result is center point (yc,xc) and radius R.A is an
                 % optional output describing the circle's equation:
                 %
                 %   x^2+y^2+a(1)*x+a(2)*y+a(3)=0
                 % by Bucher izhak 25/oct/1991
                 n=length(x);  xx=x.*x; yy=y.*y; xy=x.*y;
                 A=[sum(x) sum(y) n;sum(xy) sum(yy)...
                    sum(y);sum(xx) sum(xy) sum(x)];
                 B=[-sum(xx+yy) ; -sum(xx.*y+yy.*y) ; -sum(xx.*x+xy.*y)];
                 a=A\B;
                 xc = -.5*a(1);
                 yc = -.5*a(2);
                 R  =  sqrt((a(1)^2+a(2)^2)/4-a(3));
           Tom Davis provided a more sophisticated approach that works
        for more cases in  and Code included.

===================================   -  [返回]
8).Matlab中如何绘制箭头?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/21]Qianqian.Fang@dartmouth.edu),2002/6/21[/email], SMTH/MathTools #
        到http://www.mathworks.com/matlabcentral/fileexchange/index.jsp
        2-D Plotting and Graphics中查找arrow.m,或者
        http://www.mathworks.com/matlabcentral/spotlight/arrows.shtml
        http://www.math.umd.edu/~jec/matcomp/matcompmfiles/mfiles.html

===================================   -  [返回]
9).Matlab中如何作二维数据的插值?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/21]Qianqian.Fang@dartmouth.edu),2002/6/21[/email], BigGreen/MathTools #

        对于一维、二维、三维规则数据点阵使用interp1/interp2/interp3,
        二维、三维非规则数据用griddata/griddata3

===================================   -  [返回]
10).Matlab中如何绘制三维数据阵?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/21]Qianqian.Fang@dartmouth.edu),2002/6/21[/email], BigGreen/MathTools #

        如果使用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,可以绘制等值

        面和任意平面的截面图。

===================================   -  [返回]
11).Matlab中如何注解一大段代码?
:#hyphone,2002/7/6, SMTH/MathTools #
        注释大段代码选中代码,Ctrl+R;取消注释,选中代码,Ctrl+T。
        或者用Edit菜单或者右键弹出中的注释。
:#misc,2002/6/21, SMTH/MathTools #
        if(0)
        大段的代码
        end

===================================   -  [返回]
12).Matlab中如何计算程序运行的时间?
:#misc,2002/6/21, SMTH/MathTools #
        tic
          your_code;
        toc
        或者使用
        t=cputime;
          your_operation;
        cputime-t

===================================   -  [返回]
13).Matlab中如何改变默认的工作路径?
:#SindyGong, 2002/4/7, SMTH/MathTools #
        编辑一个startup.m文件,其中cd yourpath
        或者在X:\matlab\toolbox\local\matlabrc.m的最后添加cd yourpath
        参见:
        http://www.mathworks.com/support/solutions/data/25164.shtml

===================================   -  [返回]
14).Matlab如何改变默认的图形字体?
:#comp.soft-sys.matlab FAQ#
        编辑一个startup.m文件,其中
        set(0,'DefaultObjectnamePropertyName',Value)
        或者在X:\matlab\toolbox\local\matlabrc.m的最后添加
        set(0,'DefaultObjectnamePropertyName',Value)

===================================   -  [返回]
15).如何在Matlab中实现交互操作?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools]Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools[/email] #

        如果只在命令窗口进行交互操作,请参见demo中的例子,主要是
        通过input命令和pause/clear/disp等实现的,还有一些窗口资源可以使
        用:
        uigetfile,uiputfile,uiwait,uisetcolor,uisetfont, uiopen,uisave
        inputdlg,msgbox,helpdlg,questdlg,warndlg,errordlg

===================================   -  [返回]
16).Matlab中为什么只能在小数点后显示四位?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools]Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools[/email] #

        用format命令来改变命令窗口数字的显示格式和精度,但不会影
        响matlab的计算精度,matlab的矩阵运算默认都是双精度浮点型运算。

===================================   -  [返回]
17).Matlab如何在命令窗口按照格式输出?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/21,SMTHTools]Qianqian.Fang@dartmouth.edu),2002/6/21,SMTHTools[/email] #
        fprintf(1,"your_format_string",var1,var2,…);

===================================   -  [返回]
18).如何在Matlab中画隐函数曲线?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools]Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools[/email] #

        在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

===================================   -  [返回]
19).Matlab中什么函数可以删除矩阵的某一行或列?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools]Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools[/email] #

        A(j,=[];  %删除A的第j行
        A(:,i)=[];  %删除A的第i列

===================================   -  [返回]
20).Matlab中能开的最大数组是由什么决定的?
:# chenft (mike),2002/6/1, SMTH/MathTools #
      I have had similar problems. Below is an explanation I received from  

      Ian Boyd
      from Mathworks (just giving credit where credit is due) that explains

      what's happening. You solution is to run matlab with the -nojvm mode.
      "The heap memory system in JAVA consists of data and handle elements.

      When you allocate a variable you get a handle and data. As long as  
      data has an associated handle, the JVM considers it valid and
      will not clean it up.
      However, when you call the clear function in MATLAB, all handles are
      destroyed, and the data associated is now invalid. This means that  
      the JAVA engine can free up that data (garbage collection), but does
      not mean that it will clean it up at that moment.
      Calling the PACK command encourages JAVA to run the garbage collector

      and de-fragment the memory. But it does not force it to (This is part  

      of the JAVA design). Even though the memory is 'freed' on the heap,  
      it is not actually free to the OS, it is only free to the JVM. Here  
      is one way to think of it:
      [MATLAB]
      [JAVA]
        [OS]
      MATLAB runs on JAVA (virtual machine), and Java runs on the OS
      (physical machine). So when MATLAB is running in JAVA mode memory
      allocations  are requested from the JRE, not the OS.
      One problem you may be running into is that the default maximum
      JAVA heap size is relatively low ( <= 64 MB), so that is all the
      memory one session of MATLAB will ever get on your system.
      The good news is that you can increase this value. You will need
      to create a java.opts file in $MATLAB/bin/$ARCH (or in the current
      directory when  you start MATLAB) and put the following command:
      %%%BEGIN CODE%%%
      maxHeapSize = 268435456
      %%%END CODE%%%
      This will give you 256MB of JVM memory and you can adjust the
      parameter as needed.
      Note: $MATLAB is the root directory and $ARCH is your system
      architecture. This solution works on Windows as well as Solaris,
      Linux,Alpha, and SGI. A similar operation is possible on IBM and
      HPUX, but with a different syntax.
      For the 1.1.8 JVM (Windows, Linux, Solaris, Alpha, SGI) our
      defaults are:
      
         minHeapSize = 16000000
         maxHeapSize = 64000000
      These are the structure field names in  that correspond to
      -ms and -mx, and the settings above are roughly 16MB and 64MB.
      To investigate the Java heap a bit, ask via the following:
         >> java.lang.Runtime.getRuntime.totalMemory
         >> java.lang.Runtime.getRuntime.freeMemory
      When the free memory hits zero, Java will double the heap size
      (up to the maximum setting).
      If you choose to run without Java, you will remove the overhead
      of the middle man, but you will also lose some MATLAB functionality
      (mostly graphics and the Editor). You will still have most
      of the computational power though.
      Without JAVA, memory management will come directly from the OS,
      and a CLEAR operation will result in memory being freed back to
      the OS.

===================================   -  [返回]
21).如何在Matlab中添加新的工具箱?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools]Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools[/email] #

        如果是Matlab安装光盘上的工具箱,重新执行安装程序,选中即可。
        如果是单独下载的工具箱,一般情况下仅需要把新的工具箱解压到某
        个目录,然后用addpath(对于多个目录的使用genpath()或者pathtool添
        加工具箱的路径,然后用which newtoolbox_command.m来检验是否可
        以访问。如果能够显示新设置的路径,则表明该工具箱可以使用了。
        具体请看工具箱自己代的README文件。


数学工具FAQ 【2】

22))如何读写Matlab的.mat文件?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools]Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools[/email] #

        文件结构参见:
        http://www.mathworks.de/access/helpdesk/help/pdf_doc/matlab/
          matfile_format.pdf
        http://www.mathworks.com/support/solutions/data/8757.shtml
        ftp://ftp.mathworks.com/pub/tech-support/solutions/s8757/
          readmemat.txt
        建议使用matlab自己提供的函数来读写简单安全,或者参考:
        http://engineering.dartmouth.edu/~fangq/MATH/download/
           source/mat_file.txt
        来自matlab的c math library

===================================   -  [返回]
23).如何得到contour线上的坐标点?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools]Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools[/email] #

        lcount=5;
        [c,h]=contour(peaks,lcount);
        x=get(h,'xdata');
        y=get(h,'ydata');
        这里得到的x和y都是cell数组,用x{1}/y{1}来得到每条线上的坐标对,
        注意,每条线的最后一个数据是NaN

===================================   -  [返回]
24).如何将Matlab绘制的三维网格图帖到word里?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools]Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools[/email] #

        如果需要位图,好处是所见即所得,坏处是图像精度差,不能放缩:
                1.用拷屏 Alt+PrintScreen
                2.在图形窗口菜单Edit\Copy Options….\选择Bitmap,可以
                  选择透明背景,然后Edit\Copy Figure
        如果需要拷贝矢量图:
                在图形窗口菜单Edit\Copy Options….\选择Metafile,然后
                Edit\Copy Figure,在Word中粘贴
        经常地,按照Metafile方式粘贴的图片曲线会出现锯齿,最好的方式是
        使用eps文件:
                1.将需要拷贝的图作为当前窗口
                2.再转换到matlab命令窗口,print -deps filename.eps
                3.-deps还可以用depsc,deps2,depsc2
                4.在word中插入图片,选中该eps,如果是word 2000以前版本
                  ,不会显示图片内容,但可以打印,word XP即可显示,又可打印。

                5.如果不满意,可以在word中双击编辑,如果安装有Adobe
                  Illustrator等矢量图像编辑软件,也可以进行编辑。

===================================   -  [返回]
25).请问可以查看Matlab中函数的源代码吗?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools]Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools[/email] #

        Matlab除了buildin函数和mex/dll文件看不到原码,其他如工具箱等都可
        以直接看到代码,首先确认该文件安装在matlab中,即which
        filename.m存在,然后可以edit filename.m

===================================   -  [返回]
26).Matlab有没有求矩阵行数/列数/维数的函数?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools]Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools[/email] #

        ndims(A)返回A的维数
        size(A)返回A各个维的最大元素个数
        length(A)返回max(size(A))
        [m,n]=size(A)如果A是二维数组,返回行数和列数
        nnz(A)返回A中非0元素的个数

===================================   -  [返回]
27).Matlab中如何中断运算?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools]Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools[/email] #

        在命令窗口按Ctrl+C,在UNIX/LINUX会立即中断运算,在Windows可
        能由于操作系统的原因,有时会出现死机和等待的情况。

===================================   -  [返回]
28).Matlab中有没有画圆或椭圆的函数?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools]Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools[/email] #

        没有,Matlab没有提供直接绘圆的图元函数,需要自己写代码,其实
        就两句:
        sita=0:pi/20:2*pi;
        plot(r*cos(sita),r*sin(sita)); %半径为r的圆
        plot(a*cos(sita+fi),b *sin(sita+fi)); %椭圆
        如果是单位圆,可以使用rectangle('Curvature', [1 1])

===================================   -  [返回]
29).Matlab下如何定义整形
:#修改:fhorse (马不停蹄),2002/6/21,SMTH/MathTools #
        Matlab默认的矩阵数据结构都是双精度浮点型,即64位来表示一个数
        字,大多数的函数和操作都定义在double数据结构,如果你需要
        把double的数据转换为整形,然后再参与运算,需要使用
        double(int32(x))或者floor/round/ceil等函数
        如果为了节省内存,只进行赋值、打印等简单操作,可以参
        见uint8/uint16/uint32命令的帮助

===================================   -  [返回]
30).Matlab如何产生均匀分布的白噪声?
:#misc,2002/6/21,SMTH/MathTools #
        help rand  均匀分布百噪声
        help randn高斯分布百噪声

===================================   -  [返回]
31).在Matlab中debug的时候能否跟踪变量的?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools]Qianqian.Fang@dartmouth.edu),2002/6/21,BigGreen/MathTools[/email] #

        可以,如果使用medit,设置断点后可以用鼠标移到所看的变量上,显
        示当前的值,或者在命令窗口打该变量名直接回车。如果在代码中实
        现调试断点等功能,参
        见dbstop,dbcont,dbstep,dbclear,dbtype,dbstack,dbup,dbdown,dbstatus,
        dbquit

===================================   -  [返回]
32).请问在Matlab中怎样输入特殊符号啊或者上标、下标?
:#FangQ([email=Qianqian.Fang@dartmouth.edu),southerner]Qianqian.Fang@dartmouth.edu),southerner[/email](笑着),2002/6/6,SMTH/MathTools#


        matlab的text/title/xlabel/ylabel对象支持简单的TeX排版语法,如希腊字
        母,上下标等例如
        text(0.5,0.5,'\alpha^\beta_2');

===================================   -  [返回]
33).Matlab中如何后台运行一个DOS程序?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/4. BigGreen/en_Matlab#
        这里是一个后台执行一个需要外部输入的DOS命令的例子,需要的输
        入实事先都写在同目录下的input.txt文件中:
        dos('myexe < input.txt &')

===================================   -  [返回]
34).Matlab如何加载输入文件(批处理模式) ?
:#翻译自:comp.sys-soft.Matlab FAQ. BigGreen/en_Matlab#
        PC上可以使用matlab /r参数来在matlab启动的时候直接加载运行m文件
        ,在UNIX上,使用
        matlab < MyMFile > MyOutputFile
        来外部执行MyMFile,
        以上执行方式都可以通过脚本文件实现批处理

===================================   -  [返回]
35).Matlab如何启动时执行规定的文件?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/5/29.BigGreen/en_Matlab#
        
        参见上一个问题的回答
        
===================================   -  [返回]
36).如何在Matlab GUI中使用图形背景?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/5/29.BigGreen/en_Matlab#
        这是一个简单的例子:
        [A,map]=imread('yourimg.gif');
        imagesc(A)
        colormap(map)
        set(gca,'position',[0 0 1 1])
        axis off
        ax2=axes('position',[0.2,0.2,0.6,0.6]);
        plot(rand(1,10),'parent',ax2);   
        set(ax2,'color','none')      

===================================   -  [返回]
37).大量数据点Matlab绘图为什么很慢?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/en_Matlab#
        1.首先看能否用已有函数对整个矩阵绘图,比
          如mesh/plot3/trimesh等
        2.如果必须一点一点/或者一条线一条线的添加,最好作如下
          设置:
          doublebuffer=on
          erasemode=none
          backingstore=off
          renderer=opengl
          以及参考MathWorks对于高速绘图的tips:
          http://www.mathworks.com/support/tech-notes/v5/1200/1203.shtml
===================================   -  [返回]
38).Matlab中如何求解广义积分?即积分限到有无穷的或者有奇异点的积分(瑕积分)?

:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22. BigGreen/en_Matlab#
        Matlab的quad/quad8只能作定积分,广义积分需要自己来写程序逼近,
        流程大概如下:
        
                1.设定收敛限epsi
                2.把为inf/-inf或者歧义点的积分限设置为一个初始值,k=1
                3.计算定积分Q(k)
                4.然后朝着inf/-inf或者歧义点移动一个步长,然后计算定积分
                  Q(k+1)
                5.判断(abs(Q(k+1)-Q(k))
               
        Mathematica中可以使用NIntegrate[],对于无穷振荡的函数,可以使用Method-

>
        QuasiMonteCarlo或者Oscillatory]

===================================   -  [返回]
39).为什么我的Matlab程序这么慢?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22. BigGreen/en_Matlab#
        我们工学院的收发室的门上贴着一张小纸条,写的是
        "Our policy is always blaming the computer"
        大多数的人在遇到问题的时候,总是责备计算机如何如何,别人如何
        如何,其实,最最主要的因素是在于自己。
        一个程序运行快慢,有很多因素决定,最主要的是算法,简炼而优美
        的的数学公式胜过100遍的优化。能从算法上改进,才能比别人有根
        本的优势。计算机也很重要,以前我总把自己用的PC看成万能的加
        以崇拜,对UNIX嗤之以鼻,结果当自己真正开始算起来,才知道差
        别有多大。搞大型数值计算的,没有好的工作站或者并行系统,就输
        在了起跑线上了。然后是程序的优化,看看变量是否占用太多内存,
        看看是否有功能重复的模块或者计算,经常的是用牺牲内存来换取速
        度,具体取舍,具体需要来决定。用profile看看哪些语句占用时间最
        多,然后把核心部分进行优化。
        如果是使用Matlab,使用vectorization和矩阵整体操作的代码要比大量
        的for循环快很多,eval/inline函数如果出现在核心循环,也会让速度下
        降几时倍的。

===================================   -  [返回]
40)..Matlab中如何作非线性回归?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22. BigGreen/en_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可以自定义拟合模型,适用于复杂系统的拟合。

===================================   -  [返回]
41)..Matlab中为什么我对m文件、simulink模块,mat文件的修改不起作用呢?
:hyphone,2002/7/6,SMTH/MathTools#
        检查Matlab路径中是否有与你的m文件、mdl文件或者mat文件同名的m文件、
        mdl文件或者mat文件。Matlab执行搜索到的第一个文件。
===================================   -  [返回]
42).Matlab中,函数里面怎样使用基本工作空间中的变量?
为什么inline函数不能使用外面的变量?
:hyphone,2002/7/6,SMTH/MathTools#
        函数只能存取它自己的工作空间中的变量。要在函数之间,或者函数与基本
        工作空间之间传递数值,尝试以下方法:
        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)',求解区间)
===================================   -  [返回]
43).怎样在Simulink中调用m文件?
:hyphone,2002/7/6,SMTH/MathTools#
        函数m文件可以使用Function & Tables中的Fcn模块。如果有多个输入,
        用Mux组合成一个向量,然后在Fcn模块的Expression填
        MyFunction(u(1),u(2))"。如果有多个输出,用Demux分解成多个标量。

===================================   -  [返回]
44).Matlab中怎样进行数制转换?
:hyphone,2002/7/6,SMTH/MathTools#
        
        参见:hex2dec,oct2dec,bin2dec,dec2bin,dec2oct,dec2hex.
        
===================================   -  [返回]
45).matlab中的*.p是什么文件?怎么用?
:#David Martin(dg.martin@home.deleteme.com), 2000/07/07,comp.soft-sys.matlab#

        p文件是pre-parsed的缩写,即matlab在第一次运行某m文件时,matlab把该
        文件先编译成一种matlab的pseudo-code,当你再次运行该m文件时,节省了
        parse的时间。
        p文件可以离开m文件单独运行
:#Mike Robbins ([email=michael.robbins@us.cibc.com),2001/04/20,comp.soft-sys.matlab]michael.robbins@us.cibc.com),2001/04/20,comp.soft-sys.matlab[/email]#

        在matlab中用pcode('yourfilename')来生成p文件
===================================   -  [返回]
46).在Matlab中有goto语句吗?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/7/23. BigGreen/en_Matlab#
        matlab中没有提供goto,因为结构化程序设计不推荐使用goto,但在matlab
        中,goto的功能可以部分用结构化的异常处理机制来实现,比如从多重循环
        中跳出,具体代码为:
        try
           for i=1:10
             for j=1:10
                   for k=1:10
                      do_something;
                          if(jump_condition)
                             errorid=-2;
                             error('I want to get out!');
                          end
                    end
                  end
                end
        catch
            fprintf(1,'catch error:%d',errorid);
        end
===================================   -  [返回]
47).请问matlab6.X的那个matlab server是做什么的?(matlab开机运行问题)
:#hairhead, 2002/4/3. SMTH/MathTools#
      如果你在安装matlab时选择了web server的话,在每次重新启动后系统
      进程中就会出现matlab/matlabserver两个进程,如果你不需要使用
      matlab webserver服务的话,建议在安装时不要选择web server,
      如果已经安装的话,可以在"控制面板->管理工具->服务"中找到
      matlab webserver,然后把它disable掉。
===================================   -  [返回]
48).Matlab中如何用鼠标取得坐标?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/11/19. BigGreen/en_Matlab#
      matlab中用ginput来取得图像上的一点。注意:image()/imagesc()对象
      的y轴是和一般图的y轴反的。
      如果复杂的话,可以在ButtonDownFcn中get(0,'PointerLocation')
      或者get(gcf,'Position');
===================================   -  [返回]
49).Matlab中有阶乘函数吗?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/7/23. BigGreen/en_Matlab#
   
      matlab没有提供直接的阶乘函数,但可以用prod(1:n)来求n!
      用prod(1:2:2n-1)或者prod(2:2:2n)来求解n!!
===================================   -  [返回]
50)..怎样才能把Maltab学精?
:#energy(长白山), 2002/9/23. SMTH/MathTools#
      "带着问题学,活学活用,学用结合,急用先学,立竿见影,
       在'用'字上狠下功夫。"
===================================   -  [返回]
51)..Matlab如何计算大阶乘?
:#lll, 2002/9/18. SMTH/MathTools#
   
      如果只需要大致的值,取log10,
      计算出result=log10(1000!)=log10(1)+log10(2)+...log10(1000)
      然后求10^result=10^result的小数部分*10^result的整数部分
   
     
===================================   -  [返回]
52)..Matlab中怎样求变上限二重积分?
:#hyphone,2002/9/22, SMTH/MathTools #
        对于解析函数,用两次int即可。
        如求x+y在0[返回]
53)..用符号积分算出来Ei是什么意思,怎样求值?
:#hyphone,2002/9/22, SMTH/MathTools #
        Ei是maple中的指数积分函数,表示exp(-x*t)/t^n对t从1到正无穷大的积分。

        Ei(n,x) = int(exp(-x*t)/t^n, t=1..infinity)
        用命令“mhelp Ei”可以查看详细说明;用符号计算得到的不明白的函数都可以

通过
        mhelp命令得到帮助。
        求Ei(1,2)可以用maple命令得到:str2num(maple('evalf(Ei(1,2))'))。
===================================   -  [返回]
54)..Maltab中使用\n换行在notepad中显示为小黑块,为什么?(Randy Poe)
:#Randy Poe,2002/10/21,comp.soft-sys.matlab#
:#Peter J. Acklam([email=pjacklam@online.no),2002/6/26,comp.soft-sys.matlab]pjacklam@online.no),2002/6/26,comp.soft-sys.matlab[/email]#
        换行和回车是不同的,而且在不同的操作系统,解释也不相同。
        \n一般会操作系统被翻译成"行的结束",即LF(Line-Feed)
        \r会被翻译成"回车",即CR(Cariage-Return)
        对于文本文件的新行,在UNIX上,一般用\n(LF)来表示,Mac上用\r(CR)来表示,

        Windows上是用\n\r(CR-LF)来表示。
        
        所以在matlab中使用\n来写回车,在windows上打开会出现小方块。如果想
        避免这种情况,打开文件时使用t参数:
        
            fid = fopen('myfile.dat','wt');
===================================   -  [返回]
55)..Matlab中能开多大数组?(Steven Lord)
:#Steven Lord ([email=slord@mathworks.com),2002-10-22,comp.soft-sys.matlab]slord@mathworks.com),2002-10-22,comp.soft-sys.matlab[/email]#
        使用computer命令:
        [C,MAXSIZE] = computer
        
===================================   -  [返回]
56)..如何使用整型矩阵来节省内存?(Duane Hanselman)
:#Duane Hanselman ([email=masteringmatlab@yahoo.com),2002/10/22,comp.soft-sys.matlab]masteringmatlab@yahoo.com),2002/10/22,comp.soft-sys.matlab[/email]#


        如下方法无需先生成一个double的数组,然后转换为int8
        
        >> rc=[3 4] % row and column sizes
        >> a(prod(rc))=int8(0) % example using int8
        >> class(a)  % they are all int8s
        >> reshape(a,rc) % make it the size you want
        
        同时也可以使用repmat来实现上述功能:
              
        >> repmat(int8(0),rc)

===================================   -  [返回]
57).Matlab在P4芯片上无法启动的解决方案
:#FangQ([email=Qianqian.Fang@dartmouth),2002/11/10,SMTH/MathTools]Qianqian.Fang@dartmouth),2002/11/10,SMTH/MathTools[/email]#
        如果不想安装补丁,只能使用matlab -nojvm的形式启动
        matlab,否则需要参照如下页面的解决方案来安装补丁:
        http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&selm=
               NQ8a9.6835%24ob2.611653%40newsread1.prod.itd.earthlink.net
        http://www.mathworks.com/support/solutions/data/27293.shtml
===================================   -  [返回]
58).如何求解对离散点的最优椭圆拟合?(Andrew Fitzgibbon, et al)
:#Authors: Andrew Fitzgibbon, Maurizio Pilu, Bob Fisher
"Direct Least Squares Fitting of Ellipses", IEEE T-PAMI, 1999#
        http://bbs.dartmouth.edu/~fangq/MATH/Source/fitellipse.m
        
===================================   -  [返回]
59).Matlab/Mathematica中如何中断当前运算?(FangQ)
:#FangQ([email=Qianqian.Fang@dartmouth),2002/11/19,BigGreen/MathTools]Qianqian.Fang@dartmouth),2002/11/19,BigGreen/MathTools[/email]#
        Mathematica中使用:   Alt+./Alt+,
        Matlab中使用:        Ctrl+C
        
===================================   -  [返回]
60)).Matlab/Mathematica中如何检查括号匹配?(FangQ)
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/11/11,SMTH/MathTools]Qianqian.Fang@dartmouth.edu),2002/11/11,SMTH/MathTools[/email]#
        Mathematica中使用:   Ctrl+.
        Matlab editor中使用: Ctrl+B
===================================   -  [返回]
61)..Matlab的GUI中为何无法使用uicontrol的句柄?(FangQ)
:#FangQ([email=Qianqian.Fang@dartmouth.edu),2002/11/11,SMTH/MathTools]Qianqian.Fang@dartmouth.edu),2002/11/11,SMTH/MathTools[/email]#
        如果你在执行GUI时出现"handles not defined"的错误时,
        打开GUIDE,把figure的HandleVisibility设置为on或者callback,
        则你可以在各个callback中直接使用handles,而不用声明global
        
        例如:
        
        dat=get(handles.figure1,'userdata');
        dat2=fliplr(dat);
        se(handles.edit1,'userdata');
===================================   -  [返回]
62)..Matlab中如何把向量拓展成矩阵?(Zealous/FangQ)
:#Zealous/FangQ,2002/11/9,SMTH/MathTools#
        可以使用repmat(),例如:  repmat([1,2,3]',1,5)
        或者使用kron(),例如:      kron([1 2 3]',ones(1,5))
        
===================================   -  [返回]
63)..Matlab的GUI中的按钮如何在运行时移动及改变大小?(FangQ)
:#FangQ([email=Qianqian.Fang@dartmouth),2002/11/19,refer]Qianqian.Fang@dartmouth),2002/11/19,refer[/email] to comp.soft-sys.matlab#
        使用selectmoveresize函数,例如:
        
        figure
        h=uicontrol('style','pushbutton');
        set(h,'ButtonDownFcn',...
            'selectmoveresize;set(h,''selected'',''off'')',...
            'Enable','inactive')
===================================   -  [返回]
64)..Matlab如何求解维数巨大的稀疏矩阵方程?(FangQ)
:#FangQ([email=Qianqian.Fang@dartmouth),2002/11/19,BigGreen/MathTools]Qianqian.Fang@dartmouth),2002/11/19,BigGreen/MathTools[/email]#
        Matlab提供了非常丰富的迭代型矩阵求解器,方法包括CG,BiCG,BiCGSTAB,
        CGS,GMRES,LSQR,MINRES,P-CG,QMR,SYMMLQ等,为了加快矩阵求解速度,还
        提供了两个Preconditioner函数:luinc(不完全LU分解),和cholinc(不完全
        Cholesky分解)。下面是一个使用GMRES求解方程Amat*x=rhs的一个简单例子:

        
        [L2,U2] = luinc(Amat,1e-3);
        tic
           x=gmres(Amat,rhs,[],1e-6,100,L2,U2);
        toc
        
>************************************************************************<
>                        第三节:Mathematica的常见问题
>************************************************************************<
===================================   -  [返回]
1).Mathematica 可以定义变量为实数么?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/en_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中如何中断运算?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/en_Mathematica#
        Alt+. 直接终止当前执行的运算
        Alt+, 询问是否终止或者继续
        如果不能终止,用菜单Kernel\Quit Kernal\Local来退出当前运算

===================================   -  [返回]
3).请高手推荐Mathematica参考书
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/en_Mathematica#
        我迄今为止看到的最好的一本就是Mathematica自己带的帮助里面
        的The Mathematica Book,内容全面,循序渐近,非常容易学习使用
        。其他所见到的一些中文书籍基本上都是直接翻译帮助的内容,没有
        什么新意。

===================================   -  [返回]
4).请问在Mathematica中如何画极坐标图?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/4. SMTH/MathTools #
        << Graphics`Graphics`
        PolarPlot[]
        PolarListPlot[]

===================================   -  [返回]
5).Mathematica中如何对离散点作积分?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/5/9. SMTH/MathTools#

        离散的点通过插值或者拟合就可以得到连续的函数,然后可以对该函
        数求积分和微分。下面是一个例子:
        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]

===================================   -  [返回]
6).在Mathematica中创立palette?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/18. SMTH/MathTools#
        在帮助中查找"Creating Palettes (Windows)"

===================================   -  [返回]
7).Mathematica可以作用户界面吗?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/5/31. SMTH/MathTools#
        Mathematica的GUI设计是通过它的交互式的NoteBook实现的,可以参
        考Mathematica帮助文件中的demo例子,或参考帮助2.10.6
===================================   -  [返回]
8).Mathematica中如何使用中文?      
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/7/23. BigGreen/en_Mathematica#
        Mathematica3/4/4.1中如果使用中文,需要先选中所在的cell,或者选中
        输入的中文乱码,在菜单format font中选中对应的中文字体后才能正确
        显示。
        最新的4.2在国际化有较大的改进,可以直接输入中文,参见
        http://www.wolfram.com/products/mathematica/newin42/publishing.html

===================================   -  [返回]
9)..Mathematica中如何使用Solve[]求解的结果?(FangQ)
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/11/19. BigGreen/en_Mathematica#
        Solve[]求解的结果是以一个"表"或者"替换规则"的形式给出来的,
        并没有把结果真正替换给未知量。如果
        
        sol = Solve[a*x^2 + b*x + c == 0, x];
        x=x /. sol[[1]]
        
        也可以使用对表元素的操作把结果取出来,比如在上面的例子中:
        
        x1=sol[[1,1,2]]
        x2=sol[[2,1,2]]        
        
>************************************************************************<
 楼主| 发表于 2008-9-4 15:50:55 | 显示全部楼层
第四节:Matcom的常见问题
>************************************************************************<

===================================   -  [返回]
1).什么是Matcom?它与Matirx/MIDEVA的关系是什么?
:#FangQ(Qianqian.Fang@dartmouth.edu), 1999/11/2. SMTH/MathTools#

        Matcom是MathTools公司(UPenn)开发的一个基于C++矩阵函数
        库Matrix的一个matlab m文件与cpp文件的转换程序。MIDEVA为他
        的一个集成调试编译环境(界面)。

        Matcom独立于matlab之外,但需要外部的c++ compiler,在安装时需要
        指定c++ compiler的未知,否则无法工作。安装的时候需要指定matlab
        的位置主要是为了编译文件中需要的一些系统函数来找到路径用的。

        现在MathTools公司已经被生产Matlab的MathWorks公司兼并,Matcom
        最后版本为4.5,之后部分matcom的内容被合并到mathworks的visual
        matlab中。


===================================   -  [返回]
2).如何取出matcom矩阵的元素的值并交给C语言变量?
:#FangQ(Qianqian.Fang@dartmouth.edu), 1999/11/2. SMTH/MathTools#

        double mydata[3][3];
        dMm(amatrix);
        amatrix=rand(3);
        for(int i=1;i<=3;i++)
          for(int j=1;j<=3;j++)
                mydata[i-1][j-1]=amatrix.r(i,j);
        //or    mydata[i-1][j-1]=amatrix.fastindex(i,j);

        也可以用memcpy() 把amatrix.pr指针的内容读出来,交给mydata,但行
        列可能要转置。

        如果amatrix=sparse(…),用amatrix.r()方法不能取出需要的值



===================================   -  [返回]
3).Matcom中有多个输出的函数在C++中应该怎么调用?
:#FangQ(Qianqian.Fang@dartmouth.edu), 1999/11/2. SMTH/MathTools#

        使用i_o作为分割符
        meshgrid(colon(0.0,1.0),colon(0.0,1.0),i_o,xi,yi);
        与matlab中的
        [xi,yi]=meshgrid(0:1,0:1);

        是等价的


===================================   -  [返回]
4).如何在VC或C++Builder中使用matcom数学库?
:#FangQ(Qianqian.Fang@dartmouth.edu), 1999/11/2. SMTH/MathTools#

        1.在Project\Add to project\选择\lib\v4500.lib
        2.文件头写#include "matlib.h"
        然后就可以用了


===================================   -  [返回]
5).使用了matcom4.5数学库的VC/C++Builder程序如何发布?
:#FangQ(Qianqian.Fang@dartmouth.edu), 1999/11/2. SMTH/MathTools#

        在VC/CB中调用了matcom库,通过编译生成独立执行的程序,所以,
        不需要matlab系统,但一些必要的dll文件还是需要的,这
        些dll在window\system\下面,(在4.5版本中)大概
        有ago4500.dll,v4500v.dll,opengl32.dll,glu32.dll等
        四个文件


===================================   -  [返回]
6).安装matcom在搜索matlab路径时说找不到matcom.m,怎么办?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22. SMTH/MathTools#

        原因是matlab 6.x的Windows版本matlab.exe不在matlab\bin下,而
        在matlab\bin\win32,所以,在安装matcom时,把bin\win32\matlab.exe
        移动到bin\,即上移一层目录,安装matcom后,再移动回去就可以了。

        其实是否安装有matlab对matcom没有什么影响,你完全可以选择没有
        安装matlab,仍然可以编译大多数文件。需要matlab\toolbox下的文件
        时,用addpath()添加路径或者拷贝到当前目录下就可以了。



===================================   -  [返回]
7).使用MIDEVA在编译有些工具箱和simulink的程序时出错,请
问是什么原因?
:# techsoft (SoftMAN), 2000/4/2.SMTH/MathTools#

        目前MIDEVA/MATCOM仅是纯.M文件的开发平台(通俗地说
        是MATLAB的替代物),但MATLAB外,还有SIMULINK/STATEFLOW
        及其它TOOLBOX/BLOCKSET对于MIDEVA/MATCOM来说无
        法COMPILER,因为MIDEVA/MATCOM是JIT机制,它不能访
        问MATLAB的其它工具包尤其是它们的DLL库。要是其它工具包都是
        纯文本的.M文件那该多好啊!不过可用出自MATHWORKS的MATLAB
        COMPILER。

===================================   -  [返回]
8).如何将C语言变量转换为Mm?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/7/23. SMTH/MathTools#

        仍然使用Mm的.r()函数或者.fastindex()函数,在本节2)中的例子
        中把赋值语句左右两侧互换即可。

        A.r(i,j)=(double)mydata[j];


>************************************************************************<
>                     第五节:Matlab与其他语言和软件的接口问题
>************************************************************************<

===================================   -  [返回]
1).如何在Matlab中读取Excel的xls数据文件?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22. BigGreen/MathTools#

        使用xlsread()函数,或者使用excel的ActiveX接口来进行更复杂的操作,
        参见:
        http://www.mathworks.com/support/solutions/data/25179.shtml


===================================   -  [返回]
2).如何在Excel中嵌入Matlab?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        如果你的Matlab安装有ExcelLink,它可以实现Excel与Matlab直接的数
        据交换,可以在Excel中直接调用matlab的函数,进行绘图或者数据处理。

        不过如果没有安装ExcelLink,你仍然可以使用Matlab的ActiveX接口来
        调用matlab,下面是一个Excel宏函数,作为例子:
        
#Brett Shoelson(bshoelson@cox.rr.com),2001/11/01,comp.soft-sys.matlab#

        Sub CallMatlab()
        ' Dimension variables
        Dim MatLab As Object
        Dim Result
        Dim Invals(3, 4) As Double
        Dim MImag() As Double
        Dim i, j As Integer
        ' Invoke Matlab
        Set MatLab = CreateObject("Matlab.Application")
        ' Read Invals from current spreadsheet
        ' (Assume Invals stored in B3:E5)
        For i = 0 To 2
        For j = 0 To 3
        Invals(i, j) = ActiveSheet.Range(Cells(i+3,j+2),
          Cells(i+3,j+2)).Value
        Next j
        Next i
        ' Send Invals to Matlab
        Call MatLab.PutFullMatrix("a", "base", Invals, MImag)
        ' Send instructions to Matlab
        Result = MatLab.Execute("b=a.^2;")
        ' Retrieve Result
        Call MatLab.GetFullMatrix("b", "base", Invals, MImag)
        ' Store Result in B8:E10
        ActiveSheet.Range("B8:E10").Value = Invals
        End Sub


===================================   -  [返回]
3).mcc,mex,mbuild都是作什么用的?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        这个问题我一直都不是很清楚,看过compiler的PDF帮助之后,知道个
        大概,也不知道说得对不对:

     mcc(生成c/cpp文件)-----m--mex------ mex/dll
                        |---x--mbuild-----C/C++ compiler----独立执行的程序

        mex文件是一种编译后的动态连接文件,需要在matlab中执行,优点
        是执行速度比m文件快,而且如果你不想提供m文件源码,可以使用
        编译后的mex/dll文件。

        mbuild通过调用外部的c/c++编译器,把mcc翻译成的c/c++源码
        与matlab的c/c++数学库、图形库链接,得到独立执行的可执行程序。


===================================   -  [返回]
4).用mcc生成的独立执行exe文件怎么发布?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        使用matlab自己提供的mglinstaller,路径在
        \extern\lib\win32\mglinstaller.exe
        参考C++ Math Lib,C++ Graphic Lib,Compiler的PDF帮助中都有关于打包
        和安装的详细介绍。


===================================   -  [返回]
5).如何在VC中调用Matlab engine?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        matlab提供了ActiveX接口,你可以功过调用接口的底层函数来实现在
        你的C++/VB/Delphi程序中启动、执行matlab并交换数据,但matlab提
        供了一个对这些底层ActiveX接口函数的封装,叫作maltab engine,在
        C语言中调用engine的例子参见:

        http://www.mathworks.com/access/helpdesk/help/techdoc/
          matlab_external/ch06eng4.shtml#25603
        或者
        http://www.matlab-world.com/matlab_and_c.htm#VC_ml
        http://bbs.dartmouth.edu/cgi-bin/bbscon?
          board=MathTools&file=M.1022120287.A&num=23

        可以使用engEvalString直接在matlab中执行语句,也可以
        用mxCreateDoubleMatrix, mxDestroyArray,engPutArray,engGetArray等函数


        创建矩阵和数据交换。
        具体参见:
        http://www.mathworks.com/access/helpdesk/help/techdoc/
          matlab_external/matlab_external.shtml


===================================   -  [返回]
6).如何在Matlab调用外部的c/c++/fortran函数?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        在用matlab的mex把外部c/for程序编译成mex/dll之前,你需要在你的外
        部函数的源码中添加一个mexFunction(),具体书写格式和例子参见
    http://www.mathworks.com/access/ ... c/matlab/apiext.pdf

        


===================================   -  [返回]
7).如何在Delphi中调用Matlab(ActiveX)?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        从这个地址下载例子:
        http://www.djpate.freeserve.co.uk/Matlab.htm

        还有一种方法是利用DelphiMEX,下载地址:
        http://Radio-BIP.qc.ca/DelphiMEX/DelphiMEX.html

        下面是把Alex Conradie的例子中选了一些主要的语句:

        var

         V : Variant;
         MReal : OleVariant;
         MImage : OleVariant;

        begin
         i,j : integer;

         MReal  := VarArrayCreate([0, 1, 0, 3], varDouble);
         MImage := VarArrayCreate([0,0,0,0], varDouble);

         V := CreateOLEObject('Matlab.Application');
         V.Execute('a=[1 2 3 4; 5 6 7 8]');
         V.GetFullMatrix('a','base',VarArrayRef(MReal),VararrayRef(MImage));


         for i := 0 to 1 do
          for j := 0 to 3 do
           Stringgrid1.Cells[j,i] := MReal[i,j];

         V.Execute('peaks');

         MReal  := VarArrayCreate([0, 1, 0, 3], varDouble);
         MImage := VarArrayCreate([0,0,0,0], varDouble);

         for i := 0 to 1 do
          for j := 0 to 3 do
           MReal[i,j] := i+4;

          V.PutFullmatrix('b','base',VarArrayRef(MReal),VararrayRef(MImage));



        end


===================================   -  [返回]
8).如何在C++ Builder中调用Matlab(ActiveX)?
:# Serge Kanilo (skanilo@hotmail.com), 2000/08/01. comp.soft-sys.matlab #

        I once called a Matlab function out of Borland Builder 4.0.
        I used an automation

        #include
        ...
        Variant matlab;
        matlab = Variant::CreateObject("Matlab.Application");
        Procedure exec("Execute");
        matlab.Exec(exec << "calc");
        …


===================================   -  [返回]
9).如何在VB中调用Matlab(ActiveX)?
:# Taras Chaban (taras@camcontrol.co.uk), 1999/03/09.
comp.soft-sys.matlab #

        Hi,

        You can call MATLAB from VB using ActiveX interface.
        A simple example could be:

        Sub tot1()

        Dim MatLab As Object
        Dim Result As String
        Dim MReal(1, 3) As Double
        Dim MImag() As Double

        Set MatLab = CreateObject("MatLab.Application")
        Result = MatLab.Execute("a = [1 2 3 4; 5 6 7 8;]")
        Call MatLab.GetFullMatrix("a", "base", MReal, MImag)

        End Sub


===================================   -  [返回]
10).如何在VC中调用Matlab编译的cpp文件
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        参见
        http://www.mathworks.com/support/solutions/data/21291.shtml
        中文地址请大家推荐


===================================   -  [返回]
11).如何在VC中调用mcc编译的dll?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        参见
        http://www.mathworks.com/support/solutions/data/28621.shtml
        中文地址请大家推荐


===================================   -  [返回]
12).如何在Matlab中调用其他软件的ActiveX接口?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        在Matlab中参见actxserver和actxcontrol的帮助
        这里是一个在matlab中操纵PowerPoint的例子:
        http://groups.google.com/groups?
        selm=370E09E2.275EF5E8%40mail.northgrum.com&output=gplain

        中文地址请大家推荐



>************************************************************************<
>                     第六节:高级语言数值、数学编程的问题
>************************************************************************<

===================================   -  [返回]
1).如何在Visual Fortran中画图?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        可以使用ArrayVisualizer提供的函数,非常方便,一两句话就可以绘图
        ,缺点是系统必须安装有ArrayVisualizer,而且只能绘制比较简单的图
        形。

        如果要用Windows的绘图API,请在超星阅读器上查找邓巍巍,王越男
        编辑的Visual Fortran编程指南一书的第八章、第九章



===================================   -  [返回]
2).在FORTRAN中如何动态开数组
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        FORTRAN 90提供了动态开数组的功能,主要是两个函数:

        Real*8, Allocatable :: My1DData(,My2DData(:,
        …
        Allocate(My1DData(0:10),My2DData(10,20))
        …
        DeAllocate(My1DData,My2DData)

===================================   -  [返回]
3).如何在Visual Fortran中使用LAPACK?        
:#halifax (抗震王子), 2002/6/29. SMTH/NumComp#

            这两天为了在WIN98/2K下用CVF6.6调用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为查找              

  
        这些库函数所需要的搜索路径。具体方法是:                              

  
                                                                        
        Ⅰ  project->setting->link->category->input->在object/library
        modules   框内加入cxml.lib cxmldll.lib 两个文件名,中间以空格间隔。   

            
                                                                        
        Ⅱ  分别在"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了。                                

  
                                                                        
        [ACKNOWLEGEMENT]感谢hansom、lodger、nfdx、handbarrow、               

  
        beefly各位大虾提供的帮助!                                            

  

===================================   -  [返回]
4).如何在各种平台上编译含有Lapack的Fortran程序?
:#FangQ (Qianqian.Fang@dartmouth.edu), 2002/11/19. BigGreen/MathTools#

        在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)
   

>************************************************************************<
>                        第七节:其他数学软件常见问题
>************************************************************************<

===================================   -  [返回]
        暂无,有待补充



>************************************************************************<
>                        第八节:数学排版输入语言和软件
>************************************************************************<

===================================   -  [返回]
1).LaTeX如何修改行间距
:#fiya(采薇在勤), 2002/6/12. SMTH/MathTools#

        \renewcommand{\baselinestretch}{**}
        把行距改为默认行距的**倍。


===================================   -  [返回]
2).LaTeX如何让表格的cell能写多行?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        我能找到的办法是一个最笨的办法,就是将多行的cell分成几个row,
        这几个row之间没有横线

        \begin{table}[htb]
        \caption{Table Title}
        \begin{tabular}{|c|c|c|}
          \hline
          text1 & long text1 part1 & long text2 part1\\
                           & long text1 part2 & long text2 part2\\
          \hline
          next line & next line & next line \\
        \hline
        \end{tabular}
        \end{table}


===================================   -  [返回]
3).如何转换Word->DF?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        1.安装Acrobat完全版本,安装好后在打印机中会出现一个PDF
          Writer,在Word中打印需要转换的文件到这个打印机即可。
        2.安装postscript打印机,Word打印该文件到ps打印机,然后用
          Acrobat Distiller打开生成的ps文件,转换为PDF。
        3.使用5D Pdf Creator等外部程序也可以实现转换。


===================================   -  [返回]
4).如何转换Word->Latex?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        到http://www.word2tex.com/下载Word2TeX


===================================   -  [返回]
5).LaTeX如何使用中文?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        使用CJK或者CCT,参见
        http://ctex.dhs.org/chinese/cjk.htm
        http://ctex.dhs.org/chinese/cct.htm


===================================   -  [返回]
6).如何在LaTeX中使得希腊字母显示为粗体,\mathbf不起作用?
:#UK TeX Users' Group (http://www.tex.ac.uk/cgi-bin/texfaq2html#

        具体解释参见
        http://www.tex.ac.uk/cgi-bin/texfaq2html?label=boldgreek
        需要安装bm package或者amsbsy package


===================================   -  [返回]
7).LaTeX中引用参考文献[1~10]怎么产生?
:#yangzi2000 (yangzi), 2002/5/10. SMTH/MathTools#

        \usepackage{cite}


===================================   -  [返回]
8).LaTeX中的计数器怎么用?
:#fortran95 (TeX), 2002/4/4. SMTH/MathTools#

        \arabic{计数器名}
        or \Roman {计数器名 }
        or \roman {计数器名}
        or \alph  {计数器名}
        or \Alph  {计数器名}
        or \fnsymbol{计数器名}
        总之
        \你希望的数字体{计数器名} 来显示


===================================   -  [返回]
9).Mathematica中绘制的图,如何插入到LaTeX文档中?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        1.可以用Display[pipe,imgobj,"EPS"]或
          者Export["filename",imgobj,"EPS"]来输出到文件
        2.选中所绘的图形,在菜单Edit\Save Selection As\EPS


===================================   -  [返回]
10).Matlab中绘制的图,如何插入到LaTeX文档中?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#

        参见第二节,第24问


===================================   -  [返回]
11).Tecplot中绘制的图,如何插入到LaTeX文档中?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#

        菜单File\Export\EPS,然后选择All Frame或者Current Frame


===================================   -  [返回]
12).Word/Powerpoint中绘制的图,如何插入到LaTeX文档中?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        先绘制矢量图形,然后将图形Group后,拷贝到Powerpoint的一个新的
        页面,然后在菜单中选择Save As\WMF,然后用Adobe Illustrator 10转
        换为EPS图像。也可以打印为ps图,在LaTeX中使用,但有时会有一
        些显示的问题。



>************************************************************************<
>                           第九节:数学建模竞赛
>************************************************************************<

===================================   -  [返回]
1).什么是全国大学生数学建模竞赛CUMCM?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        全国大学生数学建模竞赛(China Undergraduate Mathematical Contest in
        Modeling)是由中国工业与应用数学协会(CSIAM)发起组织的每年一度的
        大学生数学建模比赛。比赛时间一般为每年9月的第四个周末,每个
        参赛队由三名队员组成,要求在三天(严格说是两天,最后一天是论
        文写作和打印)时间内从给出的两个题目中选择一个(一般是连续模型
        和离散模型各一个),利用数学和计算机对问题进行表述、分析、计
        算,得出可行的,有创造性的结果、方案、设计,并撰写报告。队员
        在比赛中可以使用一切非人力资源,包括计算机、网络、图书馆,但
        不能与三人以外的任何人针对试题进行交流。

        这是一项非常具有创造性和挑战性的活动,通过数学建模的锻炼,最
        重要的是学会一种责任感和敬业精神,一种创造性,一种团队精神,
        你可以在计算机编程、数学软件使用、论文写作,口语表达、组织调
        度能力等各个方便得到最大限度的展现和锻炼,而这些内容正是国内
        高等教育中的盲点。

        CUMCM的评奖结果一般设置三个等级,一个是全国奖,一个是省级
        奖,一个是成功参赛奖。全国奖又有1、2、3等之分,省级奖品也分
        为1、2等奖。

        目前CUMCM已经成为国内规模最大的数学建模活动,具体参赛信息
        、比赛章程、每年的获奖名单,请参见CSIAM的主页:
        http://csiam.edu.cn/mcm/

        另外推荐一个好的地址:
        http://bbs.uestc.edu.cn/cgi-bin//bbs0an?path=/groups/GROUP_1/MATH
        这是电子科技大学数学建模与应用科技学社(Society of Mathematical
        Modeling & Applied Science)的数学建模讨论区,精华区的社刊部分收
        录了一些数学建模队员的的体验、比赛试题和数学软件使用说明。学
        社的主页参见:
        http://engineering.dartmouth.edu/~fangq/smmas/



===================================   -  [返回]
2).什么是美国数学建模竞赛MCM?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        MCM: The Mathematical Contest in Modeling,是美国的SIAM(工业与应用
        数学协会)和COMAP(the Consortium for Mathematics and Its App.)
        于1985发起的一项面向全世界大学生的一个数学建模比赛,参赛队员
        要求用英语完成最后的,我国每年都有很多大学派队参加,并获得过
        比较优秀的成绩。比赛时间一般为寒假期间。比赛优胜者设
        置Outstanding Winners,Meritorious Winners,Honorable Mentions,
        Successful Participants四个奖项。

        具体试题样本和详细说明参见COMAP的主页:
        http://www.comap.com/undergraduate/contests/mcm/



===================================   -  [返回]
3).哪里能找到合适的数学建模书籍和试题资料?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        美国赛和全国赛部分试题参见CSIAM和SIAM的主页,其他一些个人网
        页参见:
        http://free.prohosting.com/~sxjm/
        http://www.math.grin.edu/mcm-1999.html
        http://bbs.uestc.edu.cn/cgi-bin//bbs0an?path=/groups/GROUP_1/MATH


===================================   -  [返回]
4).我是研究生,是否还可以参加数学建模竞赛?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        很抱歉,这两项比赛都是针对本科生的,研究生可以参与集训的指导
        工作。

===================================   -  [返回]
5).哪里能找到最新的全国大学生数学建模竞赛的优秀论文?
:#popo1999/FangQ, 2002/6/15.SMTH/MathTools#

        《数学的认识与实践》  中国应用数学会编写,
        各大学图书馆都应该能找到,上面有各年的CMCM或MCM优秀论文,还有点评
        
        
>************************************************************************<
>                           第十节:数学资源
>************************************************************************<

===================================   -  [返回]
1).请问哪里可以找到C/C++/Fortran数学函数库
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#

        较好的函数库:
        1.netlib: http://www.netlib.org
        2.numerical recipe: http://lib-[url]www.lanl.gov/numerical/index.html[/url]
        3.source forge: http://sourceforge.net/
        4.特殊函数fortran代码:
          http://iris-lee3.ece.uiuc.edu/~jjin/routines/routines.html
        
        下面的两个地址也提供了非常全面的链接列表:
        http://tonic.physics.sunysb.edu/docs/num_meth.html
        http://web.comlab.ox.ac.uk/oucl/work/nick.trefethen/tools.html


===================================   -  [返回]
2).请推荐好的中文数学软件论坛或网站
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        薛定宇教授的:
            http://www.matlab-world.com/
        本人的数学主页:(重新开始更新)
            http://bbs.dartmouth.edu/~fangq/MATH/mindex.htm      
        aloft ,ggs的:
            http://ctex.dhs.org/
        mikie的
            http://fractals.home.sohu.com/?sohu=yes
        流体中文网:
            http://cfluid.com/
        CAD论坛:技术专栏:
            http://www.cad-china.com/bbs/techindex.html

===================================   -  [返回]
3).如何使用国外新闻组(newsgroup)资源?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/11/22.BigGreen/MathTools#

        新闻组在国外是用户自由交流的主要渠道,其实BBS是新闻组在国内的一种演

        变形式。新闻组到现在已经有二十多年的历史,讨论组涉及的内容的广泛性
        和专业性已远非大家所能想想。单就本FAQ涉及的数学软件,各种专门软件新

        闻组已经都发展到了很大的规模。这里就列举一些常用的新闻组和加入办法。


        
        如果你想通过WWW方式加入讨论,推荐http://groups.google.com/
        这里收集了非常丰富的新闻组资源,你仅需要检索若干关键字就可以找到你
        需要的新闻组,如果想参与讨论,需要注册一个有效的email地址即可。
        
        如果想通过email的方式参与讨论,你需要搜索新闻组的说明,并找到邮件列表


        的地址,然后subscript即可。
        
        下面是几个有用的新闻组:
        Matlab Newsgroup:
        news://comp.soft-sys.matlab/
        http://groups.google.com/groups? ... TF-8&group=comp

.soft-sys.matlab
        http://bbs.dartmouth.edu/cgi-bin/bbsdoc?board=en_Matlab
        
        Mathematica Newsgroup:
        news://comp.soft-sys.math.mathematica/
        http://groups.google.com/groups? ... TF-8&group=comp

.soft-sys.math.mathematica
        http://bbs.dartmouth.edu/cgi-bin/bbsdoc?board=en_Mathematica
        
        Maple Newsgroup:
        news://comp.soft-sys.math.maple/
        http://groups.google.com/groups? ... TF-8&group=comp

.soft-sys.math.maple
        
        FORTRAN Newsgroup:
        news://comp.lang.fortran/
        http://groups.google.com/groups? ... TF-8&group=comp

.lang.fortran
        http://bbs.dartmouth.edu/cgi-bin/bbsdoc?board=en_FORTRAN

        TeX Newsgroup:
        news://comp.text.tex/
        http://groups.google.com/groups? ... TF-8&group=comp

.text.tex
        http://bbs.dartmouth.edu/cgi-bin/bbsdoc?board=en_TeX
        
        Numerical Analysis Newsgroup:
        news://sci.math.num-analysis/
        http://groups.google.com/groups? ... TF-8&group=sci.

math.num-analysis
        http://bbs.dartmouth.edu/cgi-bin/bbsdoc?board=en_NumAnalysis

        Math Newsgroup:
        news://sci.math/
        http://groups.google.com/groups? ... TF-8&group=sci.

math
        http://bbs.dartmouth.edu/cgi-bin/bbsdoc?board=en_Math


$Id: MathTools.FAQ.CN 1.0 Rev. 4 2002/11/23 15:59:16 QianqianFang
发表于 2009-6-27 15:40:57 | 显示全部楼层
辛苦了, 非常感谢!
发表于 2009-9-8 17:43:00 | 显示全部楼层
ding!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11
发表于 2009-9-11 18:30:23 | 显示全部楼层

不错
支持
发表于 2010-9-5 10:10:52 | 显示全部楼层
这个貌似有点才华嘛  嘿嘿
发表于 2011-11-29 20:23:46 | 显示全部楼层
灰常感谢!
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2019-12-7 06:32 , Processed in 0.102457 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表