用simpson法求对数正态函数的概率密度函数与坐标轴之间的面积的matlab程序

问题描述:

用simpson法求对数正态函数的概率密度函数与坐标轴之间的面积的matlab程序
对数正态函数的概率密度函数与坐标轴围成的总面积应该为1,但是我用matlab运行出来的一段区间面积就比1大,我找不出原因,望大家帮个忙,快要上交了.
这是我写的matlab程序:函数一是simpson法的定义,函数2是概率密度函数.
function s=MySimp(a,b,k)
h=(b-a)/k;
x=[a:h:b];
n=length(x);
ys=f(x(2));
yf=f(x(n));
ymid=0;
yin=0;
for i=1:n-1
ymid=ymid+4*f((x(i)+x(i+1))/2);
end
for i=2:n-1
yin=yin+2*f(x(i));
end
s=(h/6)*(ys+ymid+yin+yf);
function y=f(x)
y=(1/x*0.891*sqrt(2*pi))*exp((-(log(x)-7.59)^2)/2*0.7938);
a=0;
n=8;
b=2000;
ssimp=MySimp(a,b,n)
1个回答 分类:数学 2014-11-06

问题解答:

我来补答
simpson法的精度取决于你划分的区间
你把n改成1000,看看是不是更靠近1了
再问: 错的,我把n改为1000后运行结果是: ssimp = 2.9396 还是比1大很多~~~
再答: 你把y的表达式改一下,比如改成y=x; 那么a=0,b=2000时,积分理论值为2000000,积分的结果是1.999e6 说明你的表达式不对
再问: y的表达式不能改,因为我要求的就是对数正态分布的概率密度函数。。。。。
再答: 改表达式只是为了证明simpson积分函数写对了没有 结果说明积分是正确的,那么只能是你的表达式不正确
再问: 你能帮忙改一下吗?我要的是对数概率密度函数积分,其中均值=7.59,方差=0.891。。。。谢了。。。
再答: y=(1/x/0.891/sqrt(2*pi))*exp((-(log(x)-7.59)^2)/2/0.7938);
 
 
展开全文阅读
剩余:2000