下面是Mathcad有关矩阵计算方面的例子。 ORIGIN:=1 TOL:=10-4
?5?A:?1???21632??3?7??A?1?0.226??3???6.849?10??0.062??6.849?100.212?0.089?3?0.062???0.089?0.199??
|A|?146A2,3?3A?1??A?2??17max(A)?7rank(a)?3 ?0.441?0.5770.6870.374??0.577 ?0.726???4.387??3.194 eigenvals(A)??????10.419???0.816?eigenvecs(A)??0.577???0.0395 B:?2?A?3?A2|B|?8.5264?10|A?A|?0
T 6、微积分的数值运算
这些运算都可以从数学面板或者快捷键选取,此处的微分与积分运算是数值运算,符号运算我们将另外介绍。 TOL:?108f(x):?x?sin(x)2x:?1100ddxf(x)?2.070796
v:?(123456)3k:?2..4?1f(x)dx?5.186002?105
30,j ?v0,k?12k?vj?1?9?(vs?1T)s?24
7、数理统计
Mathcad提供了大量有关统计方面的函数,对于这些函数,我们都列出其公式,但不给出具体例子。
●随机数的生成函数:rnd(x)返回一个介于0到x之间均匀分布的随机数;runif(m,a,b)返回一个m个元素的向量,向量中的每个值都在区间(a,b)间均匀分布。 ●统计公式:mean(A)=
1m?1n?1i,j??amni?0j?01m?1n?1i,j,其中A=(aI,j)m×n,返回矩阵A
的均值;var(A)=
|a??mni?0j?0?mean(A)|,返回矩阵A的方差,其中
2A与上面相同;Var(v)=
?|am?1i?01m?1i?mean(v)|2返回样本矢量v的方差;
1-11
stdev(A)=
??|amni?0j?01m?1n?1i,j?mean(A)|2 返回矩阵A的均方差;
Stdev(v)=
1m?11mnm?1?|ai?mean(v)|i?0i,j2 返回样本矢量v的均方差;
m?1n?1cvar(A,B)=
??(ai?0j?0?mean(A))(bi,j?mean(B))返回A与B的协方
差;corr(A,B)用于计算A与B的相关系数。
●绘制直方图:hist(int,A)返回一个向量,其值是矩阵A中介于向量int中第i个元素到第(i+1)个元素间的个数,其中v必须以升序排列,要将返回的向量绘制成直方图,可使用Inset/Graph/3D Bar Chart,例如:
A:=(1 1 8 9 3 5 6 7 2 4 6 7 5 2 5 4 9 6 5 3 5 6 8 5 2 5) Int:=(0 1 2 3 4 5 6 7 8 9)T g:=hist(int,A)
下面的统计分布函数我们给出了某些分布的具体公式,其它的分布公式读者可查阅概率统计方面的资料。其中每一种分布有4个函数,分别是:统计分布密度函数(首字母为d)、累积分布密度函数(首字母为p)、分布的百分点函数(首字母为q,它是累积分布密度函数的反函数)、分布的随机点列生成函数(首字母为r,它的第一个参数m表示产生服从某个分布的向量的个数)。对于每个函数的详细信息,可参考HELP菜单的说明。
●均匀分布:数学定义为
?1,?p(x)??b?a?0,?a?x?b其它
函数dunif(x,a,b),punif(x,a,b),qunif(x,a,b),runif(x,a,b)。
●二项式分布:其数学定义为
binom(k,n,p)????pk?(1?p)n?k,0?p?1,k?1,2,?,n
?k??n?dbinom(k,n,p),pdinom(k,n,p),qbinom(p,n,r),rbinom(m,n,p)。 ●负二项分布:
dnbinom(k,n,p),pnbinom(k,n,p), qnbinom(p,n,r),rnbinom(m,n,p)。 ●几何分布:其数学定义为 geom(k,p)?p?(1?p)k,p?1
1-12
dgeom(k,p),pgeom(k,p),qgeom(p,r),rgeom(m,p)。 ●指数分布:其数学定义为 dexp(x,r)?r?exp(?r?x),r?0
dexp(x,r),pexp(x,r),qexp(p,r),rexp(m,r)。
●泊松分布:
dpois(k,l),ppois(k,l),qpois(p,l),rpois(m,l)。 ●正态分布:其数学定义为 normal(x,?,?(?12??exp(?(x??)2?22),???x??
dnorm(x,κ,ζ),pnorm(x,κ,ζ),qnorm(p,κ,ζ),rnorm(m,κ,ζ) ●F分布:dF(x,a,b),pF(x,a,b),qF(p,a,b),rF(m,a,b)。 ●t分布:dt(x,d),pt(x,d),qt(p,d),rt(m,d)。
●X2分布:
dchisq(x,d),pchisq(x,d),qchisq(p,d),rchisq(m,d)。 8、线性插值与回归分析
●线性插值函数:linterp(vx,vy,x)返回以(vxk,vyk)为数据点,进行线性插值后,插值点x处的值,其中vx表示x轴上的点,必须升序排列,vy代表相应y轴的点,它们的元素个数一定要相同。
●三次样条插值函数:interp(cspline(vx,vy),vx,vy,x)返回数据点x处的三次样条插值后的值;interp(pspline(vx,vy),vx,vy,x)与上面一样,只不过在曲线的2个端点处用抛物线进行连接,而不是用三次曲线;interp(lspline(vx,vy),vx,vy,x)同上,但在2个端点处用直线进行连接,其中vx、vy是实向量且vx升序。实际上,cspline(vx,vy),pspline(vx,vy),lspline(vx,vy)的主要作用是:返回一个能够用插值函数interp(vs,vx,vy,x)处理的向量vs。 ●一维多项式回归:regress(vx,vy,k)与上面的样条插值函数一样,返回一个用于函数interp(vs,vx,vy,x)中的向量vs,其结果是数据点x处的最佳k次拟合多项式的值;loess(vx,vy,span)同样返回一个用于interp(vs,vx,vy,x)的向量vs,它的每个数据点的某个邻域内都是最佳的二次多项式拟合,其邻域的大小由span控制,其中vx、vy是2个元素相同的实向量,vx升序,span为一正实数,其值在0与1间,当数据在某些地方波动较大时,可选取较大的span,span一般应取0.75左右为好,k是正整数,其值一般小于等于5。
●二维多项式回归:二维多项式回归与一维多项式回归大致相同,只不过二维回归得到的是曲面上某点的值,而一维是一条曲线上某点的值,对于二维多项式回归,Mathcad有三个函数:regress(Mxy,vz,k)返回一个用于向量vs,再调用interp(vs,Mxy,vz,v)就可计算出在v处的值,其中、Mxy是一个含有坐标(x,y)的m×2的矩阵,vz是m×1的向量,
1-13
它含有坐标z的值,v是要计算的插值点处的值,它是含有2个元素的向量,分别表示x及y的值;对于函数loess(Mxy,vz,span)及interp(vs,Mxy,vz,v),其用法可参考上面的,这里略去。 9、快速付立叶变换 Mathcad含有以下变换,具体可参考Help:fft、ifft、cfft、icfft、FFT、IFFT、CFFT、ICFFT。
10、特殊函数
Mathcad也提供了许多特殊函数,下面是一些常用的特殊函数。 ●Bessel函数:J0(x)、Y0(x)、J1(x)、Y1(x)、Jn(m,x)、Yn(m,x)、I0(x)、K0(x)、I1(x)、K1(x)、In(m,x)、Kn(m,x)。
●其它函数:对于以下函数,如果写上函数,直接按键盘上的等号,Mathcad是不会为你计算的,你应该使用菜单命令Math/Evaluate来计算。其函数的具体说明,参见Help。列出如下:Chi(x)、Ci(x)、csgn(z)、dilog(x)、Dirac(x)、Ei(x)、erf(z)、FresnelC(x)、FresnelS(x)、GAMMA(z)、hypergeom(n1,n2...,d1,d2...,z)、LegendreE(x,k)、LegendreEc(k)、LegendreEc1(k)、LegendreF(x,k)、LegendreKc(k)、LegendreKc1(k)、LegendrePi(x,n,k)、LegendrePic(n,k)、LegendrePic1(n,k)、Psi(n,x)、Psi(x)、Shi(x)、Si(x)、signum(x)、W(x)、W(n,x)、Zeta(s)。
11、数据文件的读写函数
以下的f为一个字符串,如a.dat、c:\\abc\\x.dat等等,文件中的数据可为常用格式(2.345)或科学计数法格式(1.23E10),文件中的数据的分隔符可为回车、空格或TAB符。READ(f)从文件f中读入一个数;READPRN(f)读入文件中的所有数据并赋给一个矩阵,此时数据格式要满足矩阵的输入形式,即数据文件中每行的元素要相同;WRITE(f)将单个数据写入文件中;WRITEPRN(f)将一个向量或矩阵写入文件中;APPEND(f)将单个数据写入文件的末尾;APPENDPRN(f)将一个向量或矩阵一次写入文件的末尾。对于向文件中写数据(使用WRITEPRN时),可以用系统内部变量PRNPRECISION 及PRNCOLWIDTH来控制输出的列宽及小数点的位数,系统默认为8位及4位。例如:若D盘根目录下文件a.dat中有3行数据分别是1,2,3;4,5,6;7,8,9;则 i0??8aiREAD(\)Ta?1234567891258369BREADPRN(\)B?47WRITEPRN(\)B
1.3 方程的求解
1-14
本节专门介绍单个方程及方程组的求解方法、不等式的求解、求微分方程的数值解等。
1、单个方程的求解 对于单个方程,可调用root(expr,var)求出它的根(返回一个数值),其中expr表示求解方程的函数名或者某个函数表达式,var是根的估计值。由于系统内部是使用割线法来求根的,因此,如果某个expr有多个根,选取不同的var将得到不同的根,建议在求根前,先画出expr的函数图形,然后再根据图形,选取不同的var,求出不同的根。另外,改变系统变量TOL(默认为10-3)的值,可提高求根的精度。例如
3
f(x)=x-sin(x) x:=1 root(f(x),x)=0.92863454 TOL:=10-8 y:=1 root(f(y),y)=-0.92862631
但是,不能将TOL选得太小,否则对某些方程将会不收敛。最后,如果能猜出方程存在复根,为了求出复根,应当选取复数初值,例如 f(x)=x2+1 x=1+2i root(f(x),x)=i
2、求多项式的根
用函数root()一次只能求出一个根,而且这个求出的根还与所选取的初值有关,而对于多项式,Mathcad中有一个专门求解其根的函数polyroots(v),它能求出多项式的所有根(返回一个列向量),其中v是一个列向量,它包含多项式中按幂次升幂排列的所有多项式系数。与上面一样,系统变量TOL是控制根的精度的量。
例 求x4+2x2-8=0的根。
V=(-8 0 2 0 1)T polyroots(v)T=[-1.414 –2i 2i 1.414]
另外,对求解多项式的次数的限制最高为100阶。还有一个更大的问题是,对高次多项式,根的求解精度越来越差。在我们要介绍的3个数学软件包中,Mathematica在这方面做得是最好的一个。
3、方程组的求解
Mathcad与Mathematica与MATLAB不同,它有一个特别的求解方程组的数值方法,即求解模块。用这种方法,能够求出另外2个软件所不能求解的方程组的解。求解模块不是一个函数,而是一种独特的结构,它总是以关键字Given开始,以关键字Find结束,在Given与Find之间,是方程组中的各个方程,它们无先后顺序,而在Given的前面,还要对方程组中的各个变量赋初始值,即估计值。请看下面的例子:
TOL:=10-6 x:=1 y:=2 z:=3 %赋初值及重定义求解精度 Given %Given与Find大小写可互用
2
x-2y+3z〓4 %这是恒等号,不是通常等号 x-y+sin(z)〓5 %快捷键是:Ctrl+=
cos(x)+sin(y)+cos(z)〓1 %或数学面板上的逻辑等号
T
Find(x,y,z) = [0.916 -4.889 -2.206] %返回一个列向量 结果是Find返回一个列向量,对比上例,我们可得到:x=0.916,
1-15