📄 mathfaq.txt
字号:
专用数学包包括绘图软件类(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(Qianqian.Fang@Dartmouth.Edu),2002/6/21, BigGreen/MathTools #
插值和拟合都是函数逼近或者数值逼近的重要组成部分
他们的共同点都是通过已知一些离散点集M上的约束,求取一个定义
在连续集合S(M包含于S)的未知连续函数,从而达到获取整体规律的
目的,即通过"窥几斑"来达到"知全豹"。
简单的讲,所谓拟合是指已知某函数的若干离散函数值{f1,f2,…,fn},通
过调整该函数中若干待定系数f(λ1, λ2,…,λ3), 使得该函数与已知点集的
差别(最小二乘意义)最小。如果待定函数是线性,就叫线性拟合或者
线性回归(主要在统计中),否则叫作非线性拟合或者非线性回归。表
达式也可以是分段函数,这种情况下叫作样条拟合。
而插值是指已知某函数的在若干离散点上的函数值或者导数信息,通
过求解该函数中待定形式的插值函数以及待定系数,使得该函数在给
定离散点上满足约束。插值函数又叫作基函数,如果该基函数定义在
整个定义域上,叫作全域基,否则叫作分域基。如果约束条件中只有
函数值的约束,叫作Lagrange插值,否则叫作Hermite插值。
从几何意义上将,拟合是给定了空间中的一些点,找到一个已知形式
未知参数的连续曲面来最大限度地逼近这些点;而插值是找到一个(
或几个分片光滑的)连续曲面来穿过这些点。
具体插值拟合的计算参见本节7和第二节6/7/9/40的回复.
===================================
5)如何生成任意分布的随机变量?
:#FangQ(Qianqian.Fang@Dartmouth.Edu),2002/6/21, 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(Qianqian.Fang@Dartmouth.Edu),2002/6/21, 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(Qianqian.Fang@Dartmouth.Edu),2002/6/12, SMTH/MathTools #
1.如果你使用matlab,有如下四种解决办法
1.1:
tri=delauney(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));
[zi,xi,yi]=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(Qianqian.Fang@Dartmouth.Edu),2002/7/23, 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(Qianqian.Fang@Dartmouth.Edu),2002/9/23, 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(Qianqian.Fang@Dartmouth.Edu),2002/6/12, BigGreen/MathTools #
参见第一节问题7)
===================================
3)如何在给定句柄的axis里绘图?
:#FangQ(Qianqian.Fang@Dartmouth.Edu),2002/6/12, 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(Qianqian.Fang@Dartmouth.Edu),2002/6/18, 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)
返回的是极大值和极小值
===================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -