matlab编程问题

 我来答
dbb627
推荐于2016-06-27 · TA获得超过1.2万个赞
知道大有可为答主
回答量:2127
采纳率:88%
帮助的人:1410万
展开全部


function [Smc,St]=MCquad(x,n)
%% 投点法计算高斯曲线积分值x 为上限值 ,n为投点个数
St=1/sqrt(2*pi)*quad(@(y)exp(-y.^2/2),-100,x);%数值积分理论值
%生成-inf(取-10即可) 到x的横坐标随机点
 xi=-10+(x+10).*rand(n,1);
 %生成纵坐标随机点 
 yi=rand(n,1);
 %统计落到钟形曲线与横坐标轴间点的概率,即为所求的面积与长方形面积之比
 m=sum(yi<=exp(-xi.^2/2));
 % 计算积分值
 Smc=(10+x)*m/n*1/sqrt(2*pi);

计算结果如下


 [Smc,St]=MCquad(-3,1000000)


Smc =


    0.0014



St =


    0.0013


>> [Smc,St]=MCquad(-1,1000000)


Smc =


    0.1591



St =


    0.1587


>> [Smc,St]=MCquad(-0,1000000)


Smc =


    0.4995



St =


    0.5000

追问
其实公式是标准正态分布表的公式,我想通过matlab来编程完成分布表,不知可行不?
追答
肯定可行啊,这个式子就是计算积分值的,不过你要求蒙特卡罗法,所以有上面的函数
St=1/sqrt(2*pi)*quad(@(y)exp(-y.^2/2),-100,x);%数值积分
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式