分享

matlab

 秦琴的matlab 2014-11-28

http://jpkc./gltj/matlabdyy.htm

matlab是当前数值计算方面应用地非常广泛的一种计算机软件。该软件具有一下几个特点:

(1)该软件语言接近自然语言,极易入门.有其他程序设计语言基础的人士学起来则更为容易:

(2)该软件提供了大量的内部函数.这使得其在使用中非常方便.再则,日益庞大的toolbox使得该软件的应用领域越来越广泛:

(3)该软件语言以向量、矩阵为着眼点,这使得它特别适宜于数值分析:

(4)绘图功能强大。

    由于上述原因,matlab在世界范围内很是流行,特别是在工程计算领域.近年来越来越多的国人也喜爱上了这一套软件.matlab的toolbox中也含有概率统计方面的库函数.概率方面的库函数主要有各种常见分布的分布函数、概率密度、分布率以及生成服从各种分布随机数的函数.统计方面的库函数含盖了简单随机样本下常见的参数估计(点估计、区间估计),假设检验.此外还含有大量涉及实验设计、线性回归、非线性回归等方面的库函数.以下我们主要对matlab在概率统计方面的内容做一些介绍.

1. matlab自带的一些常用分布的分布律或概率密度

分布名称

matlab中的函数名

解析表达式

正态分布

normpdf(x,m,s)

matlab

指数分布

exppdf(x,m)

matlab

均匀分布

unifpdf(x,a,b)

matlab

gamma分布

gampdf(x,a,b)

matlab

t分布

tpdf(x,a)

matlab

F分布

fpdf(x,a,b)

matlab

weibull分布

weibpdf(x,a,b)

matlab

二项分布

binopdf(k,n,p)

= matlab   0<p<1 k=0,1,2,...,n

poisson分布

poisspdf(k,l)

= matlab      k=0,1,2,3,?

几何分布

geopdf(k,p)

= matlab       p?(0,1)   k=0,1,2,3,...

超几何分布

hygepdf(k,l,m,n)

=matlab  

例一. x~n(0,1),y~n(3,5),求x,y概率密度的图象.

x、y的概率密度为

matlab    matlab

图(1)  

    图(1)中上半部为matlab的命令窗口,下面半部为相应的图象窗口.命令窗口中命令行fplot('normpdf(x,0,1)',[-3,10],'b-'),fplot('normpdf(x,3,sqrt(5))',[-3,10],'r :')分别对应图象窗口中的兰色实线与红色虚线所表示的函数曲线.其中normpdf(x,0,1)是标准正态分布的概率密度函数.fplot是绘制m-函数图象的命令.

    值得注意的是matlab所给的一些常见分布律或概率密度的参数表示法与我们教材中所给的有所不同,matlab中使用这些分布律或概率密度前最好先查阅帮助文件.获得帮助文件得最快捷的方法是在matlab的命令窗口键入

help "所查函数名"

    键入回车键后,在命令窗口会显示相应的帮助信息.图(2)所示为获得正态分布概率密度函数帮助信息的过程.

2. matlab自带的一些常用分布的分布函数及分布函数的反函数

如果把前面所述的各分布律或概率密度函数名的后缀pdf改为cdf则得到相应分布的分布函数.

图(3)所示为随机变量x~n(0,1)、y~n(3,5)得分布函数.注意命令行中表示分布函数的

normcdf(x,0,1) 、normcdf(x,3,sqrt(5)).

matlab

图(2) 

matlab

图(3)

  如果把分布函数名的后缀cdf改为inv,便得到了相应分布函数的反函数.这些常用分布的分布函数及其反函数对于实际应用很方便,至少可以免除我们去查分布表的工作.

例二. 计算例一中有关随机变量y的概率

(1). p(y<3.5)

(2). p(y<x)=0.91, 求x

解:(1).在命令窗口中键入

normcdf(3.5, 3, sqrt(5))

在命令行下方立刻会显示出:

ans =

   0.58846836312094

(2). 在命令窗口中键入

norminv(0.91, 3, sqrt(5))

在命令行下方立刻会显示出:

ans =

   5.99801939650634

  显然,各分布函数的反函数使得获取各种分布的上分位数(点)变得极为方便.

3. 服从各种常用分布随机数的产生

实际工作过程中常常需要我们产生各种随机数,而matlab在这一方面为人们提供了很大的方便.事实上,只需将matlab提供的各分布函数的后缀改为rnd即可.

例三.生成一组(10个)服从N(0,1)的随机数.

在命令窗口中键入

      normrnd(0, 1,1,10)

在命令行下方立刻会显示出:

 ans =

  columns 1 through 7

   -0.1867    0.7258   -0.5883    2.1832   -0.1364    0.1139    1.0668

  columns 8 through 10

    0.0593   -0.0956   -0.8323

normrnd中的第一、二参数分别表示均值及均方差,第三、四参数表示生成的是一行十列的向量.

matlab


 

图(4)

例四.利用matlab生成的随机数做蒲丰(buffon)投针问题.

解:以x 表示针的中点与最近一条平行线的距离,以 j表示针与此线间的交角.显然

0≤xa/2

0≤j≤p

  针与平行线相交的充要条件是

xlsin(j)/2

  因(x,j)在图(4)中下面的矩形中等可能地取点,可见针与平行线相交的概率p为图(4)正弦曲线线段与横轴围成的面积同图(4)中矩形面积的比.经计算得

p= matlab

另一方面得到              p = matlab

如大量得投针实验,利用大数定理知:随着实验次数的增加,针与平行线相交的频率依概率收敛到概率p.那么在上式中以频率代替相应的概率p,则可以获得圆周率p的近似值.下面的程序是用matlab语言编写的计算机模拟投针以计算p的近似值的程序.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear                   %清空工作区

a=1;                    %两平行线间的宽度

l=0.6;                  %针长

counter=0;              %计数器,用以统计针与线相交的次数

n=10000;                %投针次数

x=unifrnd(0,a/2,1,n);   %投出的针的中点到线的距离,在此设其服从

                        %区间(0,a/2)上的均匀分布.

fi=unifrnd(0,pi,1,n);   %投出的针与平行线的交角,在此设其服从

                        %区间(0,p)上的均匀分布.

for i=1:n

   if x(i)<l*sin(fi(i))/2%满足此条件表示投出的针与平行线的相交.

      counter=counter+1;

   end

end

fren=counter/n;         %表示投出的针与平行线相交的频率

pihat=2*l/(a*fren)      %pi的估计

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

注:(1).pi是matlab中的常数p

    (2). "%"是matlab中的注释符号

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多